pyglet 2.0.8__zip → 2.0.10__zip

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (876) hide show
  1. {pyglet-2.0.8 → pyglet-2.0.10}/.github/workflows/unittests.yml +1 -5
  2. {pyglet-2.0.8 → pyglet-2.0.10}/.gitignore +3 -0
  3. {pyglet-2.0.8 → pyglet-2.0.10}/.readthedocs.yml +5 -1
  4. {pyglet-2.0.8 → pyglet-2.0.10}/PKG-INFO +3 -2
  5. {pyglet-2.0.8 → pyglet-2.0.10}/README.md +2 -1
  6. {pyglet-2.0.8 → pyglet-2.0.10}/RELEASE_NOTES +55 -0
  7. {pyglet-2.0.8 → pyglet-2.0.10}/contrib/qt_sprite_preview.py +774 -586
  8. {pyglet-2.0.8 → pyglet-2.0.10}/doc/conf.py +6 -0
  9. {pyglet-2.0.8 → pyglet-2.0.10}/doc/modules/shapes.rst +8 -8
  10. {pyglet-2.0.8 → pyglet-2.0.10}/doc/modules/window_key.rst +9 -1
  11. {pyglet-2.0.8 → pyglet-2.0.10}/doc/programming_guide/eventloop.rst +57 -53
  12. {pyglet-2.0.8 → pyglet-2.0.10}/doc/programming_guide/keyboard.rst +194 -67
  13. {pyglet-2.0.8 → pyglet-2.0.10}/doc/programming_guide/media.rst +297 -67
  14. {pyglet-2.0.8 → pyglet-2.0.10}/doc/programming_guide/quickstart.rst +1 -0
  15. pyglet-2.0.10/examples/clipboard.py +18 -0
  16. {pyglet-2.0.8 → pyglet-2.0.10}/examples/input/controller.py +4 -0
  17. {pyglet-2.0.8 → pyglet-2.0.10}/examples/media/media_info.py +1 -9
  18. pyglet-2.0.10/examples/media/soundspace/README +38 -0
  19. pyglet-2.0.10/examples/media/soundspace/reader.py +117 -0
  20. pyglet-2.0.10/examples/media/soundspace/res/bass.wav +0 -0
  21. pyglet-2.0.10/examples/media/soundspace/res/drums.wav +0 -0
  22. pyglet-2.0.10/examples/media/soundspace/res/guitar.wav +0 -0
  23. pyglet-2.0.10/examples/media/soundspace/res/piano.wav +0 -0
  24. pyglet-2.0.10/examples/media/soundspace/res/space.txt +24 -0
  25. pyglet-2.0.10/examples/media/soundspace/soundspace.py +660 -0
  26. {pyglet-2.0.8 → pyglet-2.0.10}/examples/model/fpscamera.py +50 -38
  27. pyglet-2.0.10/examples/net/client.py +18 -0
  28. pyglet-2.0.10/examples/net/server.py +25 -0
  29. pyglet-2.0.10/examples/opengl/compute_shader.py +39 -0
  30. {pyglet-2.0.8/examples/graphics → pyglet-2.0.10/examples}/shapes.py +3 -0
  31. {pyglet-2.0.8 → pyglet-2.0.10}/examples/window/fixed_resolution.py +37 -34
  32. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/__init__.py +21 -10
  33. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/app/base.py +13 -1
  34. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/canvas/cocoa.py +6 -0
  35. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/clock.py +47 -116
  36. pyglet-2.0.10/pyglet/customtypes.py +12 -0
  37. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/event.py +16 -16
  38. pyglet-2.0.10/pyglet/experimental/README.md +6 -0
  39. pyglet-2.0.10/pyglet/experimental/geoshader_sprite.py +792 -0
  40. pyglet-2.0.10/pyglet/experimental/net.py +247 -0
  41. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/font/directwrite.py +33 -59
  42. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/font/win32.py +85 -25
  43. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/gl/base.py +195 -46
  44. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/gl/gl_info.py +4 -2
  45. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/gl/lib.py +1 -2
  46. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/gl/win32.py +30 -30
  47. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/graphics/__init__.py +9 -21
  48. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/graphics/shader.py +53 -50
  49. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/graphics/vertexarray.py +8 -9
  50. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/graphics/vertexbuffer.py +50 -74
  51. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/graphics/vertexdomain.py +54 -97
  52. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/gui/frame.py +2 -2
  53. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/gui/widgets.py +31 -3
  54. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/image/__init__.py +35 -14
  55. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/image/atlas.py +9 -9
  56. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/image/buffer.py +19 -16
  57. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/image/codecs/wic.py +8 -10
  58. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/input/controller_db.py +19 -23
  59. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/input/linux/evdev.py +3 -2
  60. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/input/win32/xinput.py +2 -2
  61. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/libs/darwin/cocoapy/cocoalibs.py +1 -0
  62. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/libs/win32/__init__.py +12 -1
  63. pyglet-2.0.10/pyglet/libs/win32/com.py +397 -0
  64. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/libs/win32/types.py +9 -1
  65. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/math.py +18 -43
  66. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/media/codecs/wmf.py +16 -22
  67. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/media/devices/base.py +28 -24
  68. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/media/devices/win32.py +93 -47
  69. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/media/drivers/base.py +6 -4
  70. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/media/drivers/directsound/adaptation.py +13 -8
  71. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/media/drivers/directsound/lib_dsound.py +0 -1
  72. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/media/drivers/listener.py +1 -3
  73. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/media/drivers/openal/adaptation.py +17 -7
  74. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/media/drivers/xaudio2/adaptation.py +2 -1
  75. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/media/drivers/xaudio2/interface.py +12 -9
  76. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/media/drivers/xaudio2/lib_xaudio2.py +16 -34
  77. pyglet-2.0.10/pyglet/media/mediathreads.py +129 -0
  78. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/media/player.py +8 -3
  79. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/model/__init__.py +4 -17
  80. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/model/codecs/obj.py +1 -0
  81. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/shapes.py +194 -143
  82. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/sprite.py +4 -17
  83. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/text/__init__.py +2 -0
  84. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/text/caret.py +2 -1
  85. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/text/layout.py +171 -189
  86. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/util.py +6 -35
  87. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/window/__init__.py +75 -35
  88. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/window/cocoa/__init__.py +28 -0
  89. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/window/cocoa/pyglet_textview.py +11 -4
  90. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/window/key.py +10 -1
  91. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/window/win32/__init__.py +37 -0
  92. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/window/xlib/__init__.py +142 -5
  93. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet.egg-info/PKG-INFO +3 -2
  94. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet.egg-info/SOURCES.txt +68 -2
  95. {pyglet-2.0.8 → pyglet-2.0.10}/tests/integration/app/test_eventloop.py +1 -2
  96. {pyglet-2.0.8 → pyglet-2.0.10}/tests/integration/image/test_imagegrid.py +3 -0
  97. {pyglet-2.0.8 → pyglet-2.0.10}/tests/integration/image/test_texture3d.py +3 -0
  98. {pyglet-2.0.8 → pyglet-2.0.10}/tests/integration/media/test_driver.py +15 -12
  99. pyglet-2.0.10/tests/interactive/screenshots/committed/tests.interactive.image.test_image.test_bmp_loading[rgb_16bpp.bmp].001.png +0 -0
  100. pyglet-2.0.10/tests/interactive/screenshots/committed/tests.interactive.image.test_image.test_bmp_loading[rgb_1bpp.bmp].001.png +0 -0
  101. pyglet-2.0.10/tests/interactive/screenshots/committed/tests.interactive.image.test_image.test_bmp_loading[rgb_24bpp.bmp].001.png +0 -0
  102. pyglet-2.0.10/tests/interactive/screenshots/committed/tests.interactive.image.test_image.test_bmp_loading[rgb_32bpp.bmp].001.png +0 -0
  103. pyglet-2.0.10/tests/interactive/screenshots/committed/tests.interactive.image.test_image.test_bmp_loading[rgb_4bpp.bmp].001.png +0 -0
  104. pyglet-2.0.10/tests/interactive/screenshots/committed/tests.interactive.image.test_image.test_bmp_loading[rgb_8bpp.bmp].001.png +0 -0
  105. pyglet-2.0.10/tests/interactive/screenshots/committed/tests.interactive.image.test_image.test_bmp_loading[rgba_32bpp.bmp].001.png +0 -0
  106. pyglet-2.0.10/tests/interactive/screenshots/committed/tests.interactive.image.test_image.test_buffer_copy.001.png +0 -0
  107. pyglet-2.0.10/tests/interactive/screenshots/committed/tests.interactive.image.test_image.test_buffer_saving.001.png +0 -0
  108. pyglet-2.0.10/tests/interactive/screenshots/committed/tests.interactive.image.test_image.test_checkerboard.001.png +0 -0
  109. pyglet-2.0.10/tests/interactive/screenshots/committed/tests.interactive.image.test_image.test_dds_loading[rgb_dxt1.dds].001.png +0 -0
  110. pyglet-2.0.10/tests/interactive/screenshots/committed/tests.interactive.image.test_image.test_dds_loading[rgba_dxt1.dds].001.png +0 -0
  111. pyglet-2.0.10/tests/interactive/screenshots/committed/tests.interactive.image.test_image.test_dds_loading[rgba_dxt3.dds].001.png +0 -0
  112. pyglet-2.0.10/tests/interactive/screenshots/committed/tests.interactive.image.test_image.test_dds_loading[rgba_dxt5.dds].001.png +0 -0
  113. pyglet-2.0.10/tests/interactive/screenshots/committed/tests.interactive.image.test_image.test_depth_buffer_saving.001.png +0 -0
  114. pyglet-2.0.10/tests/interactive/screenshots/committed/tests.interactive.image.test_image.test_gdkpixbuf2_loading[8bpp.gif].001.png +0 -0
  115. pyglet-2.0.10/tests/interactive/screenshots/committed/tests.interactive.image.test_image.test_gdkpixbuf2_loading[l.png].001.png +0 -0
  116. pyglet-2.0.10/tests/interactive/screenshots/committed/tests.interactive.image.test_image.test_gdkpixbuf2_loading[la.png].001.png +0 -0
  117. pyglet-2.0.10/tests/interactive/screenshots/committed/tests.interactive.image.test_image.test_gdkpixbuf2_loading[rgb.png].001.png +0 -0
  118. pyglet-2.0.10/tests/interactive/screenshots/committed/tests.interactive.image.test_image.test_gdkpixbuf2_loading[rgba.png].001.png +0 -0
  119. pyglet-2.0.10/tests/interactive/screenshots/committed/tests.interactive.image.test_image.test_pil_loading[la.png].001.png +0 -0
  120. pyglet-2.0.10/tests/interactive/screenshots/committed/tests.interactive.image.test_image.test_pil_loading[rgb.png].001.png +0 -0
  121. pyglet-2.0.10/tests/interactive/screenshots/committed/tests.interactive.image.test_image.test_pil_loading[rgba.png].001.png +0 -0
  122. pyglet-2.0.10/tests/interactive/screenshots/committed/tests.interactive.image.test_image.test_pil_saving[l.png].001.png +0 -0
  123. pyglet-2.0.10/tests/interactive/screenshots/committed/tests.interactive.image.test_image.test_pil_saving[la.png].001.png +0 -0
  124. pyglet-2.0.10/tests/interactive/screenshots/committed/tests.interactive.image.test_image.test_pypng_loading[la.png].001.png +0 -0
  125. pyglet-2.0.10/tests/interactive/screenshots/committed/tests.interactive.image.test_image.test_pypng_loading[rgb.png].001.png +0 -0
  126. pyglet-2.0.10/tests/interactive/screenshots/committed/tests.interactive.image.test_image.test_pypng_loading[rgb_8bpp.png].001.png +0 -0
  127. pyglet-2.0.10/tests/interactive/screenshots/committed/tests.interactive.image.test_image.test_pypng_loading[rgb_8bpp_trans.png].001.png +0 -0
  128. pyglet-2.0.10/tests/interactive/screenshots/committed/tests.interactive.image.test_image.test_pypng_loading[rgba.png].001.png +0 -0
  129. pyglet-2.0.10/tests/interactive/screenshots/committed/tests.interactive.image.test_image.test_pypng_saving[l.png].001.png +0 -0
  130. pyglet-2.0.10/tests/interactive/screenshots/committed/tests.interactive.image.test_image.test_pypng_saving[la.png].001.png +0 -0
  131. pyglet-2.0.10/tests/interactive/screenshots/committed/tests.interactive.image.test_image.test_pypng_saving[rgb.png].001.png +0 -0
  132. pyglet-2.0.10/tests/interactive/screenshots/committed/tests.interactive.image.test_image.test_pypng_saving[rgba.png].001.png +0 -0
  133. pyglet-2.0.10/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_bmp_loading[rgb_16bpp.bmp].001.png +0 -0
  134. pyglet-2.0.10/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_bmp_loading[rgb_1bpp.bmp].001.png +0 -0
  135. pyglet-2.0.10/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_bmp_loading[rgb_24bpp.bmp].001.png +0 -0
  136. pyglet-2.0.10/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_bmp_loading[rgb_32bpp.bmp].001.png +0 -0
  137. pyglet-2.0.10/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_bmp_loading[rgb_4bpp.bmp].001.png +0 -0
  138. pyglet-2.0.10/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_bmp_loading[rgb_8bpp.bmp].001.png +0 -0
  139. pyglet-2.0.10/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_bmp_loading[rgba_32bpp.bmp].001.png +0 -0
  140. pyglet-2.0.10/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_buffer_copy.001.png +0 -0
  141. pyglet-2.0.10/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_buffer_saving.001.png +0 -0
  142. pyglet-2.0.10/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_checkerboard.001.png +0 -0
  143. pyglet-2.0.10/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_dds_loading[rgb_dxt1.dds].001.png +0 -0
  144. pyglet-2.0.10/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_dds_loading[rgba_dxt1.dds].001.png +0 -0
  145. pyglet-2.0.10/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_dds_loading[rgba_dxt3.dds].001.png +0 -0
  146. pyglet-2.0.10/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_dds_loading[rgba_dxt5.dds].001.png +0 -0
  147. pyglet-2.0.10/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_depth_buffer_saving.001.png +0 -0
  148. pyglet-2.0.10/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_gdkpixbuf2_loading[8bpp.gif].001.png +0 -0
  149. pyglet-2.0.10/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_gdkpixbuf2_loading[l.png].001.png +0 -0
  150. pyglet-2.0.10/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_gdkpixbuf2_loading[la.png].001.png +0 -0
  151. pyglet-2.0.10/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_gdkpixbuf2_loading[rgb.png].001.png +0 -0
  152. pyglet-2.0.10/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_gdkpixbuf2_loading[rgba.png].001.png +0 -0
  153. pyglet-2.0.10/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_pil_loading[la.png].001.png +0 -0
  154. pyglet-2.0.10/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_pil_loading[rgb.png].001.png +0 -0
  155. pyglet-2.0.10/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_pil_loading[rgba.png].001.png +0 -0
  156. pyglet-2.0.10/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_pil_saving[l.png].001.png +0 -0
  157. pyglet-2.0.10/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_pil_saving[la.png].001.png +0 -0
  158. pyglet-2.0.10/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_pil_saving[rgb.png].001.png +0 -0
  159. pyglet-2.0.10/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_pil_saving[rgba.png].001.png +0 -0
  160. pyglet-2.0.10/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_pypng_loading[la.png].001.png +0 -0
  161. pyglet-2.0.10/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_pypng_loading[rgb.png].001.png +0 -0
  162. pyglet-2.0.10/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_pypng_loading[rgb_8bpp.png].001.png +0 -0
  163. pyglet-2.0.10/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_pypng_loading[rgb_8bpp_trans.png].001.png +0 -0
  164. pyglet-2.0.10/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_pypng_loading[rgba.png].001.png +0 -0
  165. pyglet-2.0.10/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_pypng_saving[l.png].001.png +0 -0
  166. pyglet-2.0.10/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_pypng_saving[la.png].001.png +0 -0
  167. pyglet-2.0.10/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_pypng_saving[rgb.png].001.png +0 -0
  168. pyglet-2.0.10/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_pypng_saving[rgba.png].001.png +0 -0
  169. pyglet-2.0.10/tests/interactive/shapes/test_shapes.py +179 -0
  170. {pyglet-2.0.8 → pyglet-2.0.10}/tests/interactive/text/test_inline_elements.py +20 -17
  171. {pyglet-2.0.8 → pyglet-2.0.10}/tests/interactive/text/test_inline_elements_style_change.py +15 -14
  172. {pyglet-2.0.8 → pyglet-2.0.10}/tests/interactive/text/test_multiline_wrap.py +18 -18
  173. {pyglet-2.0.8 → pyglet-2.0.10}/tests/interactive/text/test_plain.py +5 -5
  174. {pyglet-2.0.8 → pyglet-2.0.10}/tests/interactive/text/test_style.py +5 -5
  175. {pyglet-2.0.8 → pyglet-2.0.10}/tests/unit/conftest.py +5 -0
  176. {pyglet-2.0.8 → pyglet-2.0.10}/tests/unit/shapes/test_shapes.py +24 -2
  177. {pyglet-2.0.8 → pyglet-2.0.10}/tests/unit/test_events.py +31 -21
  178. {pyglet-2.0.8 → pyglet-2.0.10}/tools/gencontrollerdb.py +3 -3
  179. pyglet-2.0.8/experimental/geoshader_sprite.py +0 -367
  180. pyglet-2.0.8/pyglet/libs/win32/com.py +0 -340
  181. pyglet-2.0.8/pyglet/media/mediathreads.py +0 -152
  182. pyglet-2.0.8/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_bmp_loading[rgb_24bpp.bmp].001.png +0 -0
  183. pyglet-2.0.8/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_bmp_loading[rgb_32bpp.bmp].001.png +0 -0
  184. pyglet-2.0.8/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_bmp_loading[rgb_4bpp.bmp].001.png +0 -0
  185. pyglet-2.0.8/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_bmp_loading[rgb_8bpp.bmp].001.png +0 -0
  186. pyglet-2.0.8/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_bmp_loading[rgba_32bpp.bmp].001.png +0 -0
  187. pyglet-2.0.8/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_checkerboard.001.png +0 -0
  188. pyglet-2.0.8/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_dds_loading[rgb_dxt1.dds].001.png +0 -0
  189. pyglet-2.0.8/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_dds_loading[rgba_dxt1.dds].001.png +0 -0
  190. pyglet-2.0.8/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_dds_loading[rgba_dxt3.dds].001.png +0 -0
  191. pyglet-2.0.8/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_dds_loading[rgba_dxt5.dds].001.png +0 -0
  192. pyglet-2.0.8/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_gdkpixbuf2_loading[8bpp.gif].001.png +0 -0
  193. pyglet-2.0.8/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_gdkpixbuf2_loading[l.png].001.png +0 -0
  194. pyglet-2.0.8/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_gdkpixbuf2_loading[la.png].001.png +0 -0
  195. pyglet-2.0.8/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_gdkpixbuf2_loading[rgb.png].001.png +0 -0
  196. pyglet-2.0.8/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_gdkpixbuf2_loading[rgba.png].001.png +0 -0
  197. pyglet-2.0.8/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_pil_loading[la.png].001.png +0 -0
  198. pyglet-2.0.8/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_pil_loading[rgb.png].001.png +0 -0
  199. pyglet-2.0.8/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_pil_loading[rgba.png].001.png +0 -0
  200. pyglet-2.0.8/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_pypng_loading[la.png].001.png +0 -0
  201. pyglet-2.0.8/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_pypng_loading[rgba.png].001.png +0 -0
  202. {pyglet-2.0.8 → pyglet-2.0.10}/.coveragerc +0 -0
  203. {pyglet-2.0.8 → pyglet-2.0.10}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
  204. {pyglet-2.0.8 → pyglet-2.0.10}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
  205. {pyglet-2.0.8 → pyglet-2.0.10}/.github/ISSUE_TEMPLATE/questions--or-other.md +0 -0
  206. {pyglet-2.0.8 → pyglet-2.0.10}/.github/workflows/codeql.yml +0 -0
  207. {pyglet-2.0.8 → pyglet-2.0.10}/LICENSE +0 -0
  208. {pyglet-2.0.8 → pyglet-2.0.10}/MANIFEST.in +0 -0
  209. {pyglet-2.0.8 → pyglet-2.0.10}/contrib/aseprite_codec/README +0 -0
  210. {pyglet-2.0.8 → pyglet-2.0.10}/contrib/aseprite_codec/asedemo.py +0 -0
  211. {pyglet-2.0.8 → pyglet-2.0.10}/contrib/aseprite_codec/aseprite.py +0 -0
  212. {pyglet-2.0.8 → pyglet-2.0.10}/contrib/aseprite_codec/running.ase +0 -0
  213. {pyglet-2.0.8 → pyglet-2.0.10}/contrib/logo3d/logo3d.jpg +0 -0
  214. {pyglet-2.0.8 → pyglet-2.0.10}/contrib/logo3d/logo3d.obj.zip +0 -0
  215. {pyglet-2.0.8 → pyglet-2.0.10}/contrib/logo3d/logo3d.wings +0 -0
  216. {pyglet-2.0.8 → pyglet-2.0.10}/contrib/scenemanager.py +0 -0
  217. {pyglet-2.0.8 → pyglet-2.0.10}/contrib/toys/follow_mouse.py +0 -0
  218. {pyglet-2.0.8 → pyglet-2.0.10}/doc/Makefile +0 -0
  219. {pyglet-2.0.8 → pyglet-2.0.10}/doc/README.md +0 -0
  220. {pyglet-2.0.8 → pyglet-2.0.10}/doc/_static/favicon.ico +0 -0
  221. {pyglet-2.0.8 → pyglet-2.0.10}/doc/_static/logo.png +0 -0
  222. {pyglet-2.0.8 → pyglet-2.0.10}/doc/_static/logo5.svg +0 -0
  223. {pyglet-2.0.8 → pyglet-2.0.10}/doc/_static/relatedlogo.png +0 -0
  224. {pyglet-2.0.8 → pyglet-2.0.10}/doc/external_resources.rst +0 -0
  225. {pyglet-2.0.8 → pyglet-2.0.10}/doc/index.rst +0 -0
  226. {pyglet-2.0.8 → pyglet-2.0.10}/doc/internal/contributing.rst +0 -0
  227. {pyglet-2.0.8 → pyglet-2.0.10}/doc/internal/dist.rst +0 -0
  228. {pyglet-2.0.8 → pyglet-2.0.10}/doc/internal/doc.rst +0 -0
  229. {pyglet-2.0.8 → pyglet-2.0.10}/doc/internal/generated.rst +0 -0
  230. {pyglet-2.0.8 → pyglet-2.0.10}/doc/internal/gl.rst +0 -0
  231. {pyglet-2.0.8 → pyglet-2.0.10}/doc/internal/media_logging_manual.rst +0 -0
  232. {pyglet-2.0.8 → pyglet-2.0.10}/doc/internal/media_manual.rst +0 -0
  233. {pyglet-2.0.8 → pyglet-2.0.10}/doc/internal/testing.rst +0 -0
  234. {pyglet-2.0.8 → pyglet-2.0.10}/doc/internal/virtualenv.rst +0 -0
  235. {pyglet-2.0.8 → pyglet-2.0.10}/doc/internal/wraptypes-class.svg +0 -0
  236. {pyglet-2.0.8 → pyglet-2.0.10}/doc/internal/wraptypes.rst +0 -0
  237. {pyglet-2.0.8 → pyglet-2.0.10}/doc/make.bat +0 -0
  238. {pyglet-2.0.8 → pyglet-2.0.10}/doc/modules/app.rst +0 -0
  239. {pyglet-2.0.8 → pyglet-2.0.10}/doc/modules/canvas.rst +0 -0
  240. {pyglet-2.0.8 → pyglet-2.0.10}/doc/modules/clock.rst +0 -0
  241. {pyglet-2.0.8 → pyglet-2.0.10}/doc/modules/event.rst +0 -0
  242. {pyglet-2.0.8 → pyglet-2.0.10}/doc/modules/font.rst +0 -0
  243. {pyglet-2.0.8 → pyglet-2.0.10}/doc/modules/gl.rst +0 -0
  244. {pyglet-2.0.8 → pyglet-2.0.10}/doc/modules/graphics/allocation.rst +0 -0
  245. {pyglet-2.0.8 → pyglet-2.0.10}/doc/modules/graphics/index.rst +0 -0
  246. {pyglet-2.0.8 → pyglet-2.0.10}/doc/modules/graphics/shader.rst +0 -0
  247. {pyglet-2.0.8 → pyglet-2.0.10}/doc/modules/graphics/vertexbuffer.rst +0 -0
  248. {pyglet-2.0.8 → pyglet-2.0.10}/doc/modules/graphics/vertexdomain.rst +0 -0
  249. {pyglet-2.0.8 → pyglet-2.0.10}/doc/modules/gui.rst +0 -0
  250. {pyglet-2.0.8 → pyglet-2.0.10}/doc/modules/image/animation.rst +0 -0
  251. {pyglet-2.0.8 → pyglet-2.0.10}/doc/modules/image/atlas.rst +0 -0
  252. {pyglet-2.0.8 → pyglet-2.0.10}/doc/modules/image/index.rst +0 -0
  253. {pyglet-2.0.8 → pyglet-2.0.10}/doc/modules/info.rst +0 -0
  254. {pyglet-2.0.8 → pyglet-2.0.10}/doc/modules/input.rst +0 -0
  255. {pyglet-2.0.8 → pyglet-2.0.10}/doc/modules/math.rst +0 -0
  256. {pyglet-2.0.8 → pyglet-2.0.10}/doc/modules/media.rst +0 -0
  257. {pyglet-2.0.8 → pyglet-2.0.10}/doc/modules/media_synthesis.rst +0 -0
  258. {pyglet-2.0.8 → pyglet-2.0.10}/doc/modules/pyglet.rst +0 -0
  259. {pyglet-2.0.8 → pyglet-2.0.10}/doc/modules/resource.rst +0 -0
  260. {pyglet-2.0.8 → pyglet-2.0.10}/doc/modules/sprite.rst +0 -0
  261. {pyglet-2.0.8 → pyglet-2.0.10}/doc/modules/text/caret.rst +0 -0
  262. {pyglet-2.0.8 → pyglet-2.0.10}/doc/modules/text/document.rst +0 -0
  263. {pyglet-2.0.8 → pyglet-2.0.10}/doc/modules/text/index.rst +0 -0
  264. {pyglet-2.0.8 → pyglet-2.0.10}/doc/modules/text/layout.rst +0 -0
  265. {pyglet-2.0.8 → pyglet-2.0.10}/doc/modules/window.rst +0 -0
  266. {pyglet-2.0.8 → pyglet-2.0.10}/doc/modules/window_mouse.rst +0 -0
  267. {pyglet-2.0.8 → pyglet-2.0.10}/doc/programming_guide/context.rst +0 -0
  268. {pyglet-2.0.8 → pyglet-2.0.10}/doc/programming_guide/debug.rst +0 -0
  269. {pyglet-2.0.8 → pyglet-2.0.10}/doc/programming_guide/events.rst +0 -0
  270. {pyglet-2.0.8 → pyglet-2.0.10}/doc/programming_guide/examplegame.rst +0 -0
  271. {pyglet-2.0.8 → pyglet-2.0.10}/doc/programming_guide/gl.rst +0 -0
  272. {pyglet-2.0.8 → pyglet-2.0.10}/doc/programming_guide/graphics.rst +0 -0
  273. {pyglet-2.0.8 → pyglet-2.0.10}/doc/programming_guide/image.rst +0 -0
  274. {pyglet-2.0.8 → pyglet-2.0.10}/doc/programming_guide/img/abstract_image.png +0 -0
  275. {pyglet-2.0.8 → pyglet-2.0.10}/doc/programming_guide/img/abstract_image.svg +0 -0
  276. {pyglet-2.0.8 → pyglet-2.0.10}/doc/programming_guide/img/buffer_image.png +0 -0
  277. {pyglet-2.0.8 → pyglet-2.0.10}/doc/programming_guide/img/buffer_image.svg +0 -0
  278. {pyglet-2.0.8 → pyglet-2.0.10}/doc/programming_guide/img/context_flow.png +0 -0
  279. {pyglet-2.0.8 → pyglet-2.0.10}/doc/programming_guide/img/context_flow.svg +0 -0
  280. {pyglet-2.0.8 → pyglet-2.0.10}/doc/programming_guide/img/cursor_mac_crosshair.png +0 -0
  281. {pyglet-2.0.8 → pyglet-2.0.10}/doc/programming_guide/img/cursor_mac_default.png +0 -0
  282. {pyglet-2.0.8 → pyglet-2.0.10}/doc/programming_guide/img/cursor_mac_hand.png +0 -0
  283. {pyglet-2.0.8 → pyglet-2.0.10}/doc/programming_guide/img/cursor_mac_no.png +0 -0
  284. {pyglet-2.0.8 → pyglet-2.0.10}/doc/programming_guide/img/cursor_mac_size_down.png +0 -0
  285. {pyglet-2.0.8 → pyglet-2.0.10}/doc/programming_guide/img/cursor_mac_size_left.png +0 -0
  286. {pyglet-2.0.8 → pyglet-2.0.10}/doc/programming_guide/img/cursor_mac_size_left_right.png +0 -0
  287. {pyglet-2.0.8 → pyglet-2.0.10}/doc/programming_guide/img/cursor_mac_size_right.png +0 -0
  288. {pyglet-2.0.8 → pyglet-2.0.10}/doc/programming_guide/img/cursor_mac_size_up.png +0 -0
  289. {pyglet-2.0.8 → pyglet-2.0.10}/doc/programming_guide/img/cursor_mac_size_up_down.png +0 -0
  290. {pyglet-2.0.8 → pyglet-2.0.10}/doc/programming_guide/img/cursor_mac_text.png +0 -0
  291. {pyglet-2.0.8 → pyglet-2.0.10}/doc/programming_guide/img/cursor_mac_wait.png +0 -0
  292. {pyglet-2.0.8 → pyglet-2.0.10}/doc/programming_guide/img/cursor_win_crosshair.png +0 -0
  293. {pyglet-2.0.8 → pyglet-2.0.10}/doc/programming_guide/img/cursor_win_default.png +0 -0
  294. {pyglet-2.0.8 → pyglet-2.0.10}/doc/programming_guide/img/cursor_win_hand.png +0 -0
  295. {pyglet-2.0.8 → pyglet-2.0.10}/doc/programming_guide/img/cursor_win_help.png +0 -0
  296. {pyglet-2.0.8 → pyglet-2.0.10}/doc/programming_guide/img/cursor_win_no.png +0 -0
  297. {pyglet-2.0.8 → pyglet-2.0.10}/doc/programming_guide/img/cursor_win_size.png +0 -0
  298. {pyglet-2.0.8 → pyglet-2.0.10}/doc/programming_guide/img/cursor_win_size_left_right.png +0 -0
  299. {pyglet-2.0.8 → pyglet-2.0.10}/doc/programming_guide/img/cursor_win_size_nesw.png +0 -0
  300. {pyglet-2.0.8 → pyglet-2.0.10}/doc/programming_guide/img/cursor_win_size_nwse.png +0 -0
  301. {pyglet-2.0.8 → pyglet-2.0.10}/doc/programming_guide/img/cursor_win_size_up_down.png +0 -0
  302. {pyglet-2.0.8 → pyglet-2.0.10}/doc/programming_guide/img/cursor_win_text.png +0 -0
  303. {pyglet-2.0.8 → pyglet-2.0.10}/doc/programming_guide/img/cursor_win_wait.png +0 -0
  304. {pyglet-2.0.8 → pyglet-2.0.10}/doc/programming_guide/img/cursor_win_wait_arrow.png +0 -0
  305. {pyglet-2.0.8 → pyglet-2.0.10}/doc/programming_guide/img/explosion.png +0 -0
  306. {pyglet-2.0.8 → pyglet-2.0.10}/doc/programming_guide/img/font_metrics.png +0 -0
  307. {pyglet-2.0.8 → pyglet-2.0.10}/doc/programming_guide/img/font_metrics.svg +0 -0
  308. {pyglet-2.0.8 → pyglet-2.0.10}/doc/programming_guide/img/image_classes.png +0 -0
  309. {pyglet-2.0.8 → pyglet-2.0.10}/doc/programming_guide/img/image_classes.svg +0 -0
  310. {pyglet-2.0.8 → pyglet-2.0.10}/doc/programming_guide/img/image_grid.png +0 -0
  311. {pyglet-2.0.8 → pyglet-2.0.10}/doc/programming_guide/img/image_grid.svg +0 -0
  312. {pyglet-2.0.8 → pyglet-2.0.10}/doc/programming_guide/img/image_sequence.png +0 -0
  313. {pyglet-2.0.8 → pyglet-2.0.10}/doc/programming_guide/img/image_sequence.svg +0 -0
  314. {pyglet-2.0.8 → pyglet-2.0.10}/doc/programming_guide/img/mouse_coordinates.png +0 -0
  315. {pyglet-2.0.8 → pyglet-2.0.10}/doc/programming_guide/img/mouse_coordinates.svg +0 -0
  316. {pyglet-2.0.8 → pyglet-2.0.10}/doc/programming_guide/img/screens.png +0 -0
  317. {pyglet-2.0.8 → pyglet-2.0.10}/doc/programming_guide/img/screens.svg +0 -0
  318. {pyglet-2.0.8 → pyglet-2.0.10}/doc/programming_guide/img/text_classes.png +0 -0
  319. {pyglet-2.0.8 → pyglet-2.0.10}/doc/programming_guide/img/text_classes.svg +0 -0
  320. {pyglet-2.0.8 → pyglet-2.0.10}/doc/programming_guide/img/window_location.png +0 -0
  321. {pyglet-2.0.8 → pyglet-2.0.10}/doc/programming_guide/img/window_location.svg +0 -0
  322. {pyglet-2.0.8 → pyglet-2.0.10}/doc/programming_guide/img/window_osx_borderless.png +0 -0
  323. {pyglet-2.0.8 → pyglet-2.0.10}/doc/programming_guide/img/window_osx_default.png +0 -0
  324. {pyglet-2.0.8 → pyglet-2.0.10}/doc/programming_guide/img/window_osx_dialog.png +0 -0
  325. {pyglet-2.0.8 → pyglet-2.0.10}/doc/programming_guide/img/window_osx_tool.png +0 -0
  326. {pyglet-2.0.8 → pyglet-2.0.10}/doc/programming_guide/img/window_xp_default.png +0 -0
  327. {pyglet-2.0.8 → pyglet-2.0.10}/doc/programming_guide/img/window_xp_dialog.png +0 -0
  328. {pyglet-2.0.8 → pyglet-2.0.10}/doc/programming_guide/img/window_xp_overlay.png +0 -0
  329. {pyglet-2.0.8 → pyglet-2.0.10}/doc/programming_guide/img/window_xp_tool.png +0 -0
  330. {pyglet-2.0.8 → pyglet-2.0.10}/doc/programming_guide/img/window_xp_transparent.png +0 -0
  331. {pyglet-2.0.8 → pyglet-2.0.10}/doc/programming_guide/input.rst +0 -0
  332. {pyglet-2.0.8 → pyglet-2.0.10}/doc/programming_guide/installation.rst +0 -0
  333. {pyglet-2.0.8 → pyglet-2.0.10}/doc/programming_guide/math.rst +0 -0
  334. {pyglet-2.0.8 → pyglet-2.0.10}/doc/programming_guide/migration.rst +0 -0
  335. {pyglet-2.0.8 → pyglet-2.0.10}/doc/programming_guide/mouse.rst +0 -0
  336. {pyglet-2.0.8 → pyglet-2.0.10}/doc/programming_guide/options.rst +0 -0
  337. {pyglet-2.0.8 → pyglet-2.0.10}/doc/programming_guide/resources.rst +0 -0
  338. {pyglet-2.0.8 → pyglet-2.0.10}/doc/programming_guide/shapes.rst +0 -0
  339. {pyglet-2.0.8 → pyglet-2.0.10}/doc/programming_guide/text.rst +0 -0
  340. {pyglet-2.0.8 → pyglet-2.0.10}/doc/programming_guide/time.rst +0 -0
  341. {pyglet-2.0.8 → pyglet-2.0.10}/doc/programming_guide/windowing.rst +0 -0
  342. {pyglet-2.0.8 → pyglet-2.0.10}/doc/requirements.txt +0 -0
  343. {pyglet-2.0.8 → pyglet-2.0.10}/examples/events/events_key_state_handler.py +0 -0
  344. {pyglet-2.0.8 → pyglet-2.0.10}/examples/events/register_event_type.py +0 -0
  345. {pyglet-2.0.8 → pyglet-2.0.10}/examples/events/window_events.py +0 -0
  346. {pyglet-2.0.8 → pyglet-2.0.10}/examples/events/window_platform_event.py +0 -0
  347. {pyglet-2.0.8 → pyglet-2.0.10}/examples/file_dialog.py +0 -0
  348. {pyglet-2.0.8 → pyglet-2.0.10}/examples/game/resources/asteroid.png +0 -0
  349. {pyglet-2.0.8 → pyglet-2.0.10}/examples/game/resources/bullet.png +0 -0
  350. {pyglet-2.0.8 → pyglet-2.0.10}/examples/game/resources/bullet.wav +0 -0
  351. {pyglet-2.0.8 → pyglet-2.0.10}/examples/game/resources/engine_flame.png +0 -0
  352. {pyglet-2.0.8 → pyglet-2.0.10}/examples/game/resources/player.png +0 -0
  353. {pyglet-2.0.8 → pyglet-2.0.10}/examples/game/version1/asteroid.py +0 -0
  354. {pyglet-2.0.8 → pyglet-2.0.10}/examples/game/version1/game/__init__.py +0 -0
  355. {pyglet-2.0.8 → pyglet-2.0.10}/examples/game/version1/game/load.py +0 -0
  356. {pyglet-2.0.8 → pyglet-2.0.10}/examples/game/version1/game/resources.py +0 -0
  357. {pyglet-2.0.8 → pyglet-2.0.10}/examples/game/version2/asteroid.py +0 -0
  358. {pyglet-2.0.8 → pyglet-2.0.10}/examples/game/version2/game/__init__.py +0 -0
  359. {pyglet-2.0.8 → pyglet-2.0.10}/examples/game/version2/game/load.py +0 -0
  360. {pyglet-2.0.8 → pyglet-2.0.10}/examples/game/version2/game/physicalobject.py +0 -0
  361. {pyglet-2.0.8 → pyglet-2.0.10}/examples/game/version2/game/player.py +0 -0
  362. {pyglet-2.0.8 → pyglet-2.0.10}/examples/game/version2/game/resources.py +0 -0
  363. {pyglet-2.0.8 → pyglet-2.0.10}/examples/game/version3/asteroid.py +0 -0
  364. {pyglet-2.0.8 → pyglet-2.0.10}/examples/game/version3/game/__init__.py +0 -0
  365. {pyglet-2.0.8 → pyglet-2.0.10}/examples/game/version3/game/load.py +0 -0
  366. {pyglet-2.0.8 → pyglet-2.0.10}/examples/game/version3/game/physicalobject.py +0 -0
  367. {pyglet-2.0.8 → pyglet-2.0.10}/examples/game/version3/game/player.py +0 -0
  368. {pyglet-2.0.8 → pyglet-2.0.10}/examples/game/version3/game/resources.py +0 -0
  369. {pyglet-2.0.8 → pyglet-2.0.10}/examples/game/version3/game/util.py +0 -0
  370. {pyglet-2.0.8 → pyglet-2.0.10}/examples/game/version4/asteroid.py +0 -0
  371. {pyglet-2.0.8 → pyglet-2.0.10}/examples/game/version4/game/__init__.py +0 -0
  372. {pyglet-2.0.8 → pyglet-2.0.10}/examples/game/version4/game/asteroid.py +0 -0
  373. {pyglet-2.0.8 → pyglet-2.0.10}/examples/game/version4/game/bullet.py +0 -0
  374. {pyglet-2.0.8 → pyglet-2.0.10}/examples/game/version4/game/load.py +0 -0
  375. {pyglet-2.0.8 → pyglet-2.0.10}/examples/game/version4/game/physicalobject.py +0 -0
  376. {pyglet-2.0.8 → pyglet-2.0.10}/examples/game/version4/game/player.py +0 -0
  377. {pyglet-2.0.8 → pyglet-2.0.10}/examples/game/version4/game/resources.py +0 -0
  378. {pyglet-2.0.8 → pyglet-2.0.10}/examples/game/version4/game/util.py +0 -0
  379. {pyglet-2.0.8 → pyglet-2.0.10}/examples/game/version5/asteroid.py +0 -0
  380. {pyglet-2.0.8 → pyglet-2.0.10}/examples/game/version5/game/__init__.py +0 -0
  381. {pyglet-2.0.8 → pyglet-2.0.10}/examples/game/version5/game/asteroid.py +0 -0
  382. {pyglet-2.0.8 → pyglet-2.0.10}/examples/game/version5/game/bullet.py +0 -0
  383. {pyglet-2.0.8 → pyglet-2.0.10}/examples/game/version5/game/load.py +0 -0
  384. {pyglet-2.0.8 → pyglet-2.0.10}/examples/game/version5/game/physicalobject.py +0 -0
  385. {pyglet-2.0.8 → pyglet-2.0.10}/examples/game/version5/game/player.py +0 -0
  386. {pyglet-2.0.8 → pyglet-2.0.10}/examples/game/version5/game/resources.py +0 -0
  387. {pyglet-2.0.8 → pyglet-2.0.10}/examples/game/version5/game/util.py +0 -0
  388. {pyglet-2.0.8 → pyglet-2.0.10}/examples/graphics/image_convert.py +0 -0
  389. {pyglet-2.0.8 → pyglet-2.0.10}/examples/graphics/image_display.py +0 -0
  390. {pyglet-2.0.8 → pyglet-2.0.10}/examples/gui/bar.png +0 -0
  391. {pyglet-2.0.8 → pyglet-2.0.10}/examples/gui/button_down.png +0 -0
  392. {pyglet-2.0.8 → pyglet-2.0.10}/examples/gui/button_hover.png +0 -0
  393. {pyglet-2.0.8 → pyglet-2.0.10}/examples/gui/button_up.png +0 -0
  394. {pyglet-2.0.8 → pyglet-2.0.10}/examples/gui/knob.png +0 -0
  395. {pyglet-2.0.8 → pyglet-2.0.10}/examples/gui/widgets.py +0 -0
  396. {pyglet-2.0.8 → pyglet-2.0.10}/examples/hello_world.py +0 -0
  397. {pyglet-2.0.8 → pyglet-2.0.10}/examples/input/apple_remote.py +0 -0
  398. {pyglet-2.0.8 → pyglet-2.0.10}/examples/input/input.py +0 -0
  399. {pyglet-2.0.8 → pyglet-2.0.10}/examples/input/joystick.py +0 -0
  400. {pyglet-2.0.8 → pyglet-2.0.10}/examples/input/tablet.py +0 -0
  401. {pyglet-2.0.8 → pyglet-2.0.10}/examples/media/media_player.py +0 -0
  402. {pyglet-2.0.8 → pyglet-2.0.10}/examples/media/noisy/README +0 -0
  403. {pyglet-2.0.8 → pyglet-2.0.10}/examples/media/noisy/ball.png +0 -0
  404. {pyglet-2.0.8 → pyglet-2.0.10}/examples/media/noisy/ball.wav +0 -0
  405. {pyglet-2.0.8 → pyglet-2.0.10}/examples/media/noisy/noisy.py +0 -0
  406. {pyglet-2.0.8 → pyglet-2.0.10}/examples/media/synthesizer.py +0 -0
  407. {pyglet-2.0.8 → pyglet-2.0.10}/examples/media/video.py +0 -0
  408. {pyglet-2.0.8 → pyglet-2.0.10}/examples/model/box.mtl +0 -0
  409. {pyglet-2.0.8 → pyglet-2.0.10}/examples/model/box.obj +0 -0
  410. {pyglet-2.0.8 → pyglet-2.0.10}/examples/model/logo3d.mtl +0 -0
  411. {pyglet-2.0.8 → pyglet-2.0.10}/examples/model/logo3d.obj +0 -0
  412. {pyglet-2.0.8 → pyglet-2.0.10}/examples/model/model.py +0 -0
  413. {pyglet-2.0.8 → pyglet-2.0.10}/examples/model/pyglet.png +0 -0
  414. {pyglet-2.0.8 → pyglet-2.0.10}/examples/opengl/egl_context.py +0 -0
  415. {pyglet-2.0.8 → pyglet-2.0.10}/examples/opengl/opengl.py +0 -0
  416. {pyglet-2.0.8 → pyglet-2.0.10}/examples/opengl/opengl_context.py +0 -0
  417. {pyglet-2.0.8 → pyglet-2.0.10}/examples/opengl/opengl_core.py +0 -0
  418. {pyglet-2.0.8 → pyglet-2.0.10}/examples/opengl/opengl_scissor.py +0 -0
  419. {pyglet-2.0.8 → pyglet-2.0.10}/examples/opengl/opengl_shader.py +0 -0
  420. {pyglet-2.0.8 → pyglet-2.0.10}/examples/opengl/pyglet.png +0 -0
  421. {pyglet-2.0.8 → pyglet-2.0.10}/examples/programming_guide/animation.py +0 -0
  422. {pyglet-2.0.8 → pyglet-2.0.10}/examples/programming_guide/dinosaur.gif +0 -0
  423. {pyglet-2.0.8 → pyglet-2.0.10}/examples/programming_guide/events.py +0 -0
  424. {pyglet-2.0.8 → pyglet-2.0.10}/examples/programming_guide/hello_world.py +0 -0
  425. {pyglet-2.0.8 → pyglet-2.0.10}/examples/programming_guide/image_viewer.py +0 -0
  426. {pyglet-2.0.8 → pyglet-2.0.10}/examples/programming_guide/kitten.jpg +0 -0
  427. {pyglet-2.0.8 → pyglet-2.0.10}/examples/programming_guide/window_subclass.py +0 -0
  428. {pyglet-2.0.8 → pyglet-2.0.10}/examples/resources/kitten.jpg +0 -0
  429. {pyglet-2.0.8 → pyglet-2.0.10}/examples/resources/pyglet.png +0 -0
  430. {pyglet-2.0.8 → pyglet-2.0.10}/examples/sprite/depth_sprite.py +0 -0
  431. {pyglet-2.0.8 → pyglet-2.0.10}/examples/sprite/display_sprite.py +0 -0
  432. {pyglet-2.0.8 → pyglet-2.0.10}/examples/sprite/multi_texture_sprite.py +0 -0
  433. {pyglet-2.0.8 → pyglet-2.0.10}/examples/sprite/sprite_batching.py +0 -0
  434. {pyglet-2.0.8 → pyglet-2.0.10}/examples/text/advanced_font.py +0 -0
  435. {pyglet-2.0.8 → pyglet-2.0.10}/examples/text/font_comparison.py +0 -0
  436. {pyglet-2.0.8 → pyglet-2.0.10}/examples/text/html_label.py +0 -0
  437. {pyglet-2.0.8 → pyglet-2.0.10}/examples/text/pyglet.png +0 -0
  438. {pyglet-2.0.8 → pyglet-2.0.10}/examples/text/text_input.py +0 -0
  439. {pyglet-2.0.8 → pyglet-2.0.10}/examples/timer.py +0 -0
  440. {pyglet-2.0.8 → pyglet-2.0.10}/examples/window/camera.py +0 -0
  441. {pyglet-2.0.8 → pyglet-2.0.10}/examples/window/camera_group.py +0 -0
  442. {pyglet-2.0.8 → pyglet-2.0.10}/examples/window/multiple_windows.py +0 -0
  443. {pyglet-2.0.8 → pyglet-2.0.10}/examples/window/overlay_window.py +0 -0
  444. {pyglet-2.0.8 → pyglet-2.0.10}/examples/window/transparent_window.py +0 -0
  445. {pyglet-2.0.8 → pyglet-2.0.10}/experimental/dist_field/README +0 -0
  446. {pyglet-2.0.8 → pyglet-2.0.10}/experimental/dist_field/genfield.py +0 -0
  447. {pyglet-2.0.8 → pyglet-2.0.10}/experimental/dist_field/py.df.png +0 -0
  448. {pyglet-2.0.8 → pyglet-2.0.10}/experimental/dist_field/py.png +0 -0
  449. {pyglet-2.0.8 → pyglet-2.0.10}/experimental/dist_field/renderfield.py +0 -0
  450. {pyglet-2.0.8 → pyglet-2.0.10}/experimental/flaccodec.py +0 -0
  451. {pyglet-2.0.8 → pyglet-2.0.10}/experimental/hello_world.svg +0 -0
  452. {pyglet-2.0.8 → pyglet-2.0.10}/experimental/spritebenchmark.py +0 -0
  453. {pyglet-2.0.8 → pyglet-2.0.10}/experimental/svg_test.py +0 -0
  454. {pyglet-2.0.8 → pyglet-2.0.10}/experimental/wayland/gbm_egl_context.py +0 -0
  455. {pyglet-2.0.8 → pyglet-2.0.10}/experimental/win32priority.py +0 -0
  456. {pyglet-2.0.8 → pyglet-2.0.10}/make.py +0 -0
  457. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/app/__init__.py +0 -0
  458. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/app/cocoa.py +0 -0
  459. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/app/win32.py +0 -0
  460. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/app/xlib.py +0 -0
  461. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/canvas/__init__.py +0 -0
  462. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/canvas/base.py +0 -0
  463. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/canvas/headless.py +0 -0
  464. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/canvas/win32.py +0 -0
  465. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/canvas/xlib.py +0 -0
  466. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/canvas/xlib_vidmoderestore.py +0 -0
  467. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/extlibs/__init__.py +0 -0
  468. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/extlibs/png.py +0 -0
  469. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/font/__init__.py +0 -0
  470. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/font/base.py +0 -0
  471. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/font/fontconfig.py +0 -0
  472. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/font/freetype.py +0 -0
  473. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/font/freetype_lib.py +0 -0
  474. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/font/quartz.py +0 -0
  475. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/font/ttf.py +0 -0
  476. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/font/user.py +0 -0
  477. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/font/win32query.py +0 -0
  478. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/gl/__init__.py +0 -0
  479. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/gl/agl.py +0 -0
  480. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/gl/cocoa.py +0 -0
  481. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/gl/gl.py +0 -0
  482. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/gl/gl_compat.py +0 -0
  483. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/gl/glx.py +0 -0
  484. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/gl/glx_info.py +0 -0
  485. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/gl/glxext_arb.py +0 -0
  486. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/gl/glxext_mesa.py +0 -0
  487. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/gl/glxext_nv.py +0 -0
  488. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/gl/headless.py +0 -0
  489. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/gl/lib_agl.py +0 -0
  490. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/gl/lib_glx.py +0 -0
  491. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/gl/lib_wgl.py +0 -0
  492. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/gl/wgl.py +0 -0
  493. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/gl/wgl_info.py +0 -0
  494. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/gl/wglext_arb.py +0 -0
  495. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/gl/wglext_nv.py +0 -0
  496. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/gl/xlib.py +0 -0
  497. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/graphics/allocation.py +0 -0
  498. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/gui/__init__.py +0 -0
  499. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/image/animation.py +0 -0
  500. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/image/codecs/__init__.py +0 -0
  501. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/image/codecs/bmp.py +0 -0
  502. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/image/codecs/dds.py +0 -0
  503. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/image/codecs/gdiplus.py +0 -0
  504. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/image/codecs/gdkpixbuf2.py +0 -0
  505. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/image/codecs/gif.py +0 -0
  506. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/image/codecs/pil.py +0 -0
  507. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/image/codecs/png.py +0 -0
  508. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/image/codecs/quartz.py +0 -0
  509. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/image/codecs/s3tc.py +0 -0
  510. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/info.py +0 -0
  511. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/input/__init__.py +0 -0
  512. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/input/base.py +0 -0
  513. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/input/controller.py +0 -0
  514. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/input/linux/__init__.py +0 -0
  515. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/input/linux/evdev_constants.py +0 -0
  516. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/input/linux/x11_xinput.py +0 -0
  517. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/input/linux/x11_xinput_tablet.py +0 -0
  518. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/input/macos/__init__.py +0 -0
  519. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/input/macos/darwin_hid.py +0 -0
  520. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/input/win32/__init__.py +0 -0
  521. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/input/win32/directinput.py +0 -0
  522. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/input/win32/wintab.py +0 -0
  523. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/lib.py +0 -0
  524. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/libs/__init__.py +0 -0
  525. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/libs/darwin/__init__.py +0 -0
  526. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/libs/darwin/cocoapy/__init__.py +0 -0
  527. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/libs/darwin/cocoapy/cocoatypes.py +0 -0
  528. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/libs/darwin/cocoapy/runtime.py +0 -0
  529. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/libs/darwin/coreaudio.py +0 -0
  530. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/libs/darwin/quartzkey.py +0 -0
  531. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/libs/egl/__init__.py +0 -0
  532. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/libs/egl/egl.py +0 -0
  533. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/libs/egl/eglext.py +0 -0
  534. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/libs/egl/lib.py +0 -0
  535. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/libs/wayland/__init__.py +0 -0
  536. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/libs/wayland/gbm.py +0 -0
  537. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/libs/wayland/xkbcommon.py +0 -0
  538. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/libs/win32/constants.py +0 -0
  539. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/libs/win32/context_managers.py +0 -0
  540. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/libs/win32/dinput.py +0 -0
  541. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/libs/win32/libwintab.py +0 -0
  542. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/libs/win32/winkey.py +0 -0
  543. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/libs/x11/__init__.py +0 -0
  544. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/libs/x11/cursorfont.py +0 -0
  545. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/libs/x11/xf86vmode.py +0 -0
  546. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/libs/x11/xinerama.py +0 -0
  547. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/libs/x11/xinput.py +0 -0
  548. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/libs/x11/xlib.py +0 -0
  549. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/libs/x11/xsync.py +0 -0
  550. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/media/__init__.py +0 -0
  551. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/media/buffered_logger.py +0 -0
  552. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/media/codecs/__init__.py +0 -0
  553. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/media/codecs/base.py +0 -0
  554. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/media/codecs/coreaudio.py +0 -0
  555. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/media/codecs/ffmpeg.py +0 -0
  556. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/media/codecs/ffmpeg_lib/__init__.py +0 -0
  557. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/media/codecs/ffmpeg_lib/compat.py +0 -0
  558. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/media/codecs/ffmpeg_lib/libavcodec.py +0 -0
  559. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/media/codecs/ffmpeg_lib/libavformat.py +0 -0
  560. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/media/codecs/ffmpeg_lib/libavutil.py +0 -0
  561. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/media/codecs/ffmpeg_lib/libswresample.py +0 -0
  562. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/media/codecs/ffmpeg_lib/libswscale.py +0 -0
  563. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/media/codecs/gstreamer.py +0 -0
  564. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/media/codecs/pyogg.py +0 -0
  565. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/media/codecs/wave.py +0 -0
  566. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/media/devices/__init__.py +0 -0
  567. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/media/drivers/__init__.py +0 -0
  568. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/media/drivers/directsound/__init__.py +0 -0
  569. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/media/drivers/directsound/exceptions.py +0 -0
  570. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/media/drivers/directsound/interface.py +0 -0
  571. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/media/drivers/openal/__init__.py +0 -0
  572. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/media/drivers/openal/interface.py +0 -0
  573. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/media/drivers/openal/lib_alc.py +0 -0
  574. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/media/drivers/openal/lib_openal.py +0 -0
  575. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/media/drivers/pulse/__init__.py +0 -0
  576. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/media/drivers/pulse/adaptation.py +0 -0
  577. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/media/drivers/pulse/interface.py +0 -0
  578. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/media/drivers/pulse/lib_pulseaudio.py +0 -0
  579. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/media/drivers/silent/__init__.py +0 -0
  580. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/media/drivers/silent/adaptation.py +0 -0
  581. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/media/drivers/xaudio2/__init__.py +0 -0
  582. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/media/exceptions.py +0 -0
  583. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/media/instrumentation.py +0 -0
  584. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/media/synthesis.py +0 -0
  585. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/model/codecs/__init__.py +0 -0
  586. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/model/codecs/gltf.py +0 -0
  587. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/resource.py +0 -0
  588. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/text/document.py +0 -0
  589. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/text/formats/__init__.py +0 -0
  590. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/text/formats/attributed.py +0 -0
  591. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/text/formats/html.py +0 -0
  592. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/text/formats/plaintext.py +0 -0
  593. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/text/formats/structured.py +0 -0
  594. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/text/runlist.py +0 -0
  595. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/window/cocoa/pyglet_delegate.py +0 -0
  596. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/window/cocoa/pyglet_view.py +0 -0
  597. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/window/cocoa/pyglet_window.py +0 -0
  598. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/window/cocoa/systemcursor.py +0 -0
  599. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/window/event.py +0 -0
  600. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/window/headless/__init__.py +0 -0
  601. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/window/mouse.py +0 -0
  602. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet.egg-info/dependency_links.txt +0 -0
  603. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet.egg-info/top_level.txt +0 -0
  604. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet.egg-info/zip-safe +0 -0
  605. {pyglet-2.0.8 → pyglet-2.0.10}/pyproject.toml +0 -0
  606. {pyglet-2.0.8 → pyglet-2.0.10}/pytest.ini +0 -0
  607. {pyglet-2.0.8 → pyglet-2.0.10}/setup.cfg +0 -0
  608. {pyglet-2.0.8 → pyglet-2.0.10}/setup.py +0 -0
  609. {pyglet-2.0.8 → pyglet-2.0.10}/tests/__init__.py +0 -0
  610. {pyglet-2.0.8 → pyglet-2.0.10}/tests/annotations.py +0 -0
  611. {pyglet-2.0.8 → pyglet-2.0.10}/tests/base/__init__.py +0 -0
  612. {pyglet-2.0.8 → pyglet-2.0.10}/tests/base/data.py +0 -0
  613. {pyglet-2.0.8 → pyglet-2.0.10}/tests/base/event_loop.py +0 -0
  614. {pyglet-2.0.8 → pyglet-2.0.10}/tests/base/interactive.py +0 -0
  615. {pyglet-2.0.8 → pyglet-2.0.10}/tests/base/performance.py +0 -0
  616. {pyglet-2.0.8 → pyglet-2.0.10}/tests/base/test_interactive_test_base.py +0 -0
  617. {pyglet-2.0.8 → pyglet-2.0.10}/tests/conftest.py +0 -0
  618. {pyglet-2.0.8 → pyglet-2.0.10}/tests/data/fonts/README +0 -0
  619. {pyglet-2.0.8 → pyglet-2.0.10}/tests/data/fonts/action_man.ttf +0 -0
  620. {pyglet-2.0.8 → pyglet-2.0.10}/tests/data/fonts/action_man_bold.ttf +0 -0
  621. {pyglet-2.0.8 → pyglet-2.0.10}/tests/data/fonts/action_man_bold_italic.ttf +0 -0
  622. {pyglet-2.0.8 → pyglet-2.0.10}/tests/data/fonts/action_man_italic.ttf +0 -0
  623. {pyglet-2.0.8 → pyglet-2.0.10}/tests/data/fonts/courR12-ISO8859-1.pcf +0 -0
  624. {pyglet-2.0.8 → pyglet-2.0.10}/tests/data/images/8bpp.gif +0 -0
  625. {pyglet-2.0.8 → pyglet-2.0.10}/tests/data/images/cursor.png +0 -0
  626. {pyglet-2.0.8 → pyglet-2.0.10}/tests/data/images/dinosaur.gif +0 -0
  627. {pyglet-2.0.8 → pyglet-2.0.10}/tests/data/images/gdk_close.png +0 -0
  628. {pyglet-2.0.8 → pyglet-2.0.10}/tests/data/images/grey_background.png +0 -0
  629. {pyglet-2.0.8 → pyglet-2.0.10}/tests/data/images/icon1.png +0 -0
  630. {pyglet-2.0.8 → pyglet-2.0.10}/tests/data/images/icon_size1.png +0 -0
  631. {pyglet-2.0.8 → pyglet-2.0.10}/tests/data/images/icon_size2.png +0 -0
  632. {pyglet-2.0.8 → pyglet-2.0.10}/tests/data/images/icon_size3.png +0 -0
  633. {pyglet-2.0.8 → pyglet-2.0.10}/tests/data/images/icon_size4.png +0 -0
  634. {pyglet-2.0.8 → pyglet-2.0.10}/tests/data/images/icon_size5.png +0 -0
  635. {pyglet-2.0.8 → pyglet-2.0.10}/tests/data/images/l.png +0 -0
  636. {pyglet-2.0.8 → pyglet-2.0.10}/tests/data/images/la.png +0 -0
  637. {pyglet-2.0.8 → pyglet-2.0.10}/tests/data/images/multitexture.png +0 -0
  638. {pyglet-2.0.8 → pyglet-2.0.10}/tests/data/images/rgb.png +0 -0
  639. {pyglet-2.0.8 → pyglet-2.0.10}/tests/data/images/rgb_16bpp.bmp +0 -0
  640. {pyglet-2.0.8 → pyglet-2.0.10}/tests/data/images/rgb_1bpp.bmp +0 -0
  641. {pyglet-2.0.8 → pyglet-2.0.10}/tests/data/images/rgb_24bpp.bmp +0 -0
  642. {pyglet-2.0.8 → pyglet-2.0.10}/tests/data/images/rgb_32bpp.bmp +0 -0
  643. {pyglet-2.0.8 → pyglet-2.0.10}/tests/data/images/rgb_4bpp.bmp +0 -0
  644. {pyglet-2.0.8 → pyglet-2.0.10}/tests/data/images/rgb_8bpp.bmp +0 -0
  645. {pyglet-2.0.8 → pyglet-2.0.10}/tests/data/images/rgb_8bpp.png +0 -0
  646. {pyglet-2.0.8 → pyglet-2.0.10}/tests/data/images/rgb_8bpp_trans.png +0 -0
  647. {pyglet-2.0.8 → pyglet-2.0.10}/tests/data/images/rgb_dxt1.dds +0 -0
  648. {pyglet-2.0.8 → pyglet-2.0.10}/tests/data/images/rgba.png +0 -0
  649. {pyglet-2.0.8 → pyglet-2.0.10}/tests/data/images/rgba_32bpp.bmp +0 -0
  650. {pyglet-2.0.8 → pyglet-2.0.10}/tests/data/images/rgba_dxt1.dds +0 -0
  651. {pyglet-2.0.8 → pyglet-2.0.10}/tests/data/images/rgba_dxt3.dds +0 -0
  652. {pyglet-2.0.8 → pyglet-2.0.10}/tests/data/images/rgba_dxt5.dds +0 -0
  653. {pyglet-2.0.8 → pyglet-2.0.10}/tests/data/images/tests.interactive.test_interactive_test_base._Test.test_1.001.png +0 -0
  654. {pyglet-2.0.8 → pyglet-2.0.10}/tests/data/media/README +0 -0
  655. {pyglet-2.0.8 → pyglet-2.0.10}/tests/data/media/alert.wav +0 -0
  656. {pyglet-2.0.8 → pyglet-2.0.10}/tests/data/media/login.wav +0 -0
  657. {pyglet-2.0.8 → pyglet-2.0.10}/tests/data/media/logout.wav +0 -0
  658. {pyglet-2.0.8 → pyglet-2.0.10}/tests/data/media/receive.wav +0 -0
  659. {pyglet-2.0.8 → pyglet-2.0.10}/tests/data/media/send.wav +0 -0
  660. {pyglet-2.0.8 → pyglet-2.0.10}/tests/data/media/synthesis_sawtooth_16_11025_1ch.wav +0 -0
  661. {pyglet-2.0.8 → pyglet-2.0.10}/tests/data/media/synthesis_sawtooth_16_44800_1ch.wav +0 -0
  662. {pyglet-2.0.8 → pyglet-2.0.10}/tests/data/media/synthesis_silence_16_11025_1ch.wav +0 -0
  663. {pyglet-2.0.8 → pyglet-2.0.10}/tests/data/media/synthesis_silence_16_44800_1ch.wav +0 -0
  664. {pyglet-2.0.8 → pyglet-2.0.10}/tests/data/media/synthesis_simplefm_16_11025_1ch.wav +0 -0
  665. {pyglet-2.0.8 → pyglet-2.0.10}/tests/data/media/synthesis_simplefm_16_44800_1ch.wav +0 -0
  666. {pyglet-2.0.8 → pyglet-2.0.10}/tests/data/media/synthesis_sine_16_11025_1ch.wav +0 -0
  667. {pyglet-2.0.8 → pyglet-2.0.10}/tests/data/media/synthesis_sine_16_44800_1ch.wav +0 -0
  668. {pyglet-2.0.8 → pyglet-2.0.10}/tests/data/media/synthesis_square_16_11025_1ch.wav +0 -0
  669. {pyglet-2.0.8 → pyglet-2.0.10}/tests/data/media/synthesis_square_16_44800_1ch.wav +0 -0
  670. {pyglet-2.0.8 → pyglet-2.0.10}/tests/data/media/synthesis_triangle_16_11025_1ch.wav +0 -0
  671. {pyglet-2.0.8 → pyglet-2.0.10}/tests/data/media/synthesis_triangle_16_44800_1ch.wav +0 -0
  672. {pyglet-2.0.8 → pyglet-2.0.10}/tests/data/models/logo3d.mtl +0 -0
  673. {pyglet-2.0.8 → pyglet-2.0.10}/tests/data/models/logo3d.obj +0 -0
  674. {pyglet-2.0.8 → pyglet-2.0.10}/tests/integration/__init__.py +0 -0
  675. {pyglet-2.0.8 → pyglet-2.0.10}/tests/integration/app/__init__.py +0 -0
  676. {pyglet-2.0.8 → pyglet-2.0.10}/tests/integration/font/test_fontconfig.py +0 -0
  677. {pyglet-2.0.8 → pyglet-2.0.10}/tests/integration/font/test_freetype_face.py +0 -0
  678. {pyglet-2.0.8 → pyglet-2.0.10}/tests/integration/graphics/__init__.py +0 -0
  679. {pyglet-2.0.8 → pyglet-2.0.10}/tests/integration/graphics/test_allocation.py +0 -0
  680. {pyglet-2.0.8 → pyglet-2.0.10}/tests/integration/image/__init__.py +0 -0
  681. {pyglet-2.0.8 → pyglet-2.0.10}/tests/integration/image/test_gdkpixbuf2.py +0 -0
  682. {pyglet-2.0.8 → pyglet-2.0.10}/tests/integration/media/__init__.py +0 -0
  683. {pyglet-2.0.8 → pyglet-2.0.10}/tests/integration/media/mock_player.py +0 -0
  684. {pyglet-2.0.8 → pyglet-2.0.10}/tests/integration/media/test_directsound.py +0 -0
  685. {pyglet-2.0.8 → pyglet-2.0.10}/tests/integration/media/test_openal.py +0 -0
  686. {pyglet-2.0.8 → pyglet-2.0.10}/tests/integration/media/test_player.py +0 -0
  687. {pyglet-2.0.8 → pyglet-2.0.10}/tests/integration/media/test_pulse.py +0 -0
  688. {pyglet-2.0.8 → pyglet-2.0.10}/tests/integration/model/__init__.py +0 -0
  689. {pyglet-2.0.8 → pyglet-2.0.10}/tests/integration/model/test_loading.py +0 -0
  690. {pyglet-2.0.8 → pyglet-2.0.10}/tests/integration/platform/__init__.py +0 -0
  691. {pyglet-2.0.8 → pyglet-2.0.10}/tests/integration/platform/test_linux_fontconfig.py +0 -0
  692. {pyglet-2.0.8 → pyglet-2.0.10}/tests/integration/platform/test_win_context_managers.py +0 -0
  693. {pyglet-2.0.8 → pyglet-2.0.10}/tests/integration/platform/test_win_multicore_clock.py +0 -0
  694. {pyglet-2.0.8 → pyglet-2.0.10}/tests/integration/resource/__init__.py +0 -0
  695. {pyglet-2.0.8 → pyglet-2.0.10}/tests/integration/resource/dir1/dir1/f3.txt +0 -0
  696. {pyglet-2.0.8 → pyglet-2.0.10}/tests/integration/resource/dir1/f2.txt +0 -0
  697. {pyglet-2.0.8 → pyglet-2.0.10}/tests/integration/resource/dir1/res.zip +0 -0
  698. {pyglet-2.0.8 → pyglet-2.0.10}/tests/integration/resource/dir2/f6.txt +0 -0
  699. {pyglet-2.0.8 → pyglet-2.0.10}/tests/integration/resource/f1.txt +0 -0
  700. {pyglet-2.0.8 → pyglet-2.0.10}/tests/integration/resource/rgbm.png +0 -0
  701. {pyglet-2.0.8 → pyglet-2.0.10}/tests/integration/resource/test_resource_image_loading.py +0 -0
  702. {pyglet-2.0.8 → pyglet-2.0.10}/tests/integration/resource/test_resource_loading.py +0 -0
  703. {pyglet-2.0.8 → pyglet-2.0.10}/tests/integration/text/__init__.py +0 -0
  704. {pyglet-2.0.8 → pyglet-2.0.10}/tests/integration/text/test_empty_document.py +0 -0
  705. {pyglet-2.0.8 → pyglet-2.0.10}/tests/integration/window/__init__.py +0 -0
  706. {pyglet-2.0.8 → pyglet-2.0.10}/tests/integration/window/test_context_share.py +0 -0
  707. {pyglet-2.0.8 → pyglet-2.0.10}/tests/integration/window/test_event_sequence.py +0 -0
  708. {pyglet-2.0.8 → pyglet-2.0.10}/tests/integration/window/test_window_caption.py +0 -0
  709. {pyglet-2.0.8 → pyglet-2.0.10}/tests/interactive/__init__.py +0 -0
  710. {pyglet-2.0.8 → pyglet-2.0.10}/tests/interactive/conftest.py +0 -0
  711. {pyglet-2.0.8 → pyglet-2.0.10}/tests/interactive/graphics/__init__.py +0 -0
  712. {pyglet-2.0.8 → pyglet-2.0.10}/tests/interactive/graphics/test_multitexture.py +0 -0
  713. {pyglet-2.0.8 → pyglet-2.0.10}/tests/interactive/image/__init__.py +0 -0
  714. {pyglet-2.0.8 → pyglet-2.0.10}/tests/interactive/image/test_image.py +0 -0
  715. {pyglet-2.0.8 → pyglet-2.0.10}/tests/interactive/media/__init__.py +0 -0
  716. {pyglet-2.0.8 → pyglet-2.0.10}/tests/interactive/media/test_player.py +0 -0
  717. {pyglet-2.0.8 → pyglet-2.0.10}/tests/interactive/screenshots/committed/README +0 -0
  718. /pyglet-2.0.8/tests/interactive/screenshots/session/tests.interactive.graphics.test_multitexture.test_multitexture.001.png → /pyglet-2.0.10/tests/interactive/screenshots/committed/tests.interactive.image.test_image.test_pil_saving[rgb.png].001.png +0 -0
  719. /pyglet-2.0.8/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_bmp_loading[rgb_16bpp.bmp].001.png → /pyglet-2.0.10/tests/interactive/screenshots/committed/tests.interactive.image.test_image.test_pil_saving[rgba.png].001.png +0 -0
  720. {pyglet-2.0.8 → pyglet-2.0.10}/tests/interactive/screenshots/session/README +0 -0
  721. /pyglet-2.0.8/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_bmp_loading[rgb_1bpp.bmp].001.png → /pyglet-2.0.10/tests/interactive/screenshots/session/tests.interactive.graphics.test_multitexture.test_multitexture.001.png +0 -0
  722. {pyglet-2.0.8 → pyglet-2.0.10}/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_pil_loading[l.png].001.png +0 -0
  723. {pyglet-2.0.8 → pyglet-2.0.10}/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_pypng_loading[l.png].001.png +0 -0
  724. {pyglet-2.0.8 → pyglet-2.0.10}/tests/interactive/text/__init__.py +0 -0
  725. {pyglet-2.0.8 → pyglet-2.0.10}/tests/interactive/text/test_caret_color.py +0 -0
  726. {pyglet-2.0.8 → pyglet-2.0.10}/tests/interactive/text/test_content_valign.py +0 -0
  727. {pyglet-2.0.8 → pyglet-2.0.10}/tests/interactive/text/test_html.py +0 -0
  728. {pyglet-2.0.8 → pyglet-2.0.10}/tests/interactive/window/__init__.py +0 -0
  729. {pyglet-2.0.8 → pyglet-2.0.10}/tests/interactive/window/test_window_events.py +0 -0
  730. {pyglet-2.0.8 → pyglet-2.0.10}/tests/interactive/window/test_window_fullscreen.py +0 -0
  731. {pyglet-2.0.8 → pyglet-2.0.10}/tests/interactive/window/test_window_modes.py +0 -0
  732. {pyglet-2.0.8 → pyglet-2.0.10}/tests/interactive/window/test_window_multisample.py +0 -0
  733. {pyglet-2.0.8 → pyglet-2.0.10}/tests/interactive/window/test_window_open.py +0 -0
  734. {pyglet-2.0.8 → pyglet-2.0.10}/tests/interactive/window/test_window_settings.py +0 -0
  735. {pyglet-2.0.8 → pyglet-2.0.10}/tests/interactive/window/test_window_styles.py +0 -0
  736. {pyglet-2.0.8 → pyglet-2.0.10}/tests/interactive/window/window_util.py +0 -0
  737. {pyglet-2.0.8 → pyglet-2.0.10}/tests/interactive/windowed_test_base.py +0 -0
  738. {pyglet-2.0.8 → pyglet-2.0.10}/tests/requirements.txt +0 -0
  739. {pyglet-2.0.8 → pyglet-2.0.10}/tests/unit/__init__.py +0 -0
  740. {pyglet-2.0.8 → pyglet-2.0.10}/tests/unit/media/__init__.py +0 -0
  741. {pyglet-2.0.8 → pyglet-2.0.10}/tests/unit/media/test_listener.py +0 -0
  742. {pyglet-2.0.8 → pyglet-2.0.10}/tests/unit/media/test_player.py +0 -0
  743. {pyglet-2.0.8 → pyglet-2.0.10}/tests/unit/media/test_sources.py +0 -0
  744. {pyglet-2.0.8 → pyglet-2.0.10}/tests/unit/media/test_synthesis.py +0 -0
  745. {pyglet-2.0.8 → pyglet-2.0.10}/tests/unit/shapes/__init__.py +0 -0
  746. {pyglet-2.0.8 → pyglet-2.0.10}/tests/unit/shapes/conftest.py +0 -0
  747. {pyglet-2.0.8 → pyglet-2.0.10}/tests/unit/shapes/test_bordered_rectangle.py +0 -0
  748. {pyglet-2.0.8 → pyglet-2.0.10}/tests/unit/test_atlas.py +0 -0
  749. {pyglet-2.0.8 → pyglet-2.0.10}/tests/unit/test_clock.py +0 -0
  750. {pyglet-2.0.8 → pyglet-2.0.10}/tests/unit/test_clock_freq.py +0 -0
  751. {pyglet-2.0.8 → pyglet-2.0.10}/tests/unit/test_font.py +0 -0
  752. {pyglet-2.0.8 → pyglet-2.0.10}/tests/unit/test_input.py +0 -0
  753. {pyglet-2.0.8 → pyglet-2.0.10}/tests/unit/test_math.py +0 -0
  754. {pyglet-2.0.8 → pyglet-2.0.10}/tests/unit/test_resource_path.py +0 -0
  755. {pyglet-2.0.8 → pyglet-2.0.10}/tests/unit/test_sprite.py +0 -0
  756. {pyglet-2.0.8 → pyglet-2.0.10}/tests/unit/test_text.py +0 -0
  757. {pyglet-2.0.8 → pyglet-2.0.10}/tests/unit/text/__init__.py +0 -0
  758. {pyglet-2.0.8 → pyglet-2.0.10}/tests/unit/text/test_caret.py +0 -0
  759. {pyglet-2.0.8 → pyglet-2.0.10}/tests/unit/text/test_layout.py +0 -0
  760. {pyglet-2.0.8 → pyglet-2.0.10}/tools/al_info.py +0 -0
  761. {pyglet-2.0.8 → pyglet-2.0.10}/tools/ffmpeg/bokeh_timeline.py +0 -0
  762. {pyglet-2.0.8 → pyglet-2.0.10}/tools/ffmpeg/compare.py +0 -0
  763. {pyglet-2.0.8 → pyglet-2.0.10}/tools/ffmpeg/configure.py +0 -0
  764. {pyglet-2.0.8 → pyglet-2.0.10}/tools/ffmpeg/extractors.py +0 -0
  765. {pyglet-2.0.8 → pyglet-2.0.10}/tools/ffmpeg/fs.py +0 -0
  766. {pyglet-2.0.8 → pyglet-2.0.10}/tools/ffmpeg/mp.py +0 -0
  767. {pyglet-2.0.8 → pyglet-2.0.10}/tools/ffmpeg/mpexceptions.py +0 -0
  768. {pyglet-2.0.8 → pyglet-2.0.10}/tools/ffmpeg/playmany.py +0 -0
  769. {pyglet-2.0.8 → pyglet-2.0.10}/tools/ffmpeg/readme_ffmpeg_debbuging_branch.txt +0 -0
  770. {pyglet-2.0.8 → pyglet-2.0.10}/tools/ffmpeg/readme_run_tests.txt +0 -0
  771. {pyglet-2.0.8 → pyglet-2.0.10}/tools/ffmpeg/report.py +0 -0
  772. {pyglet-2.0.8 → pyglet-2.0.10}/tools/ffmpeg/reports.py +0 -0
  773. {pyglet-2.0.8 → pyglet-2.0.10}/tools/ffmpeg/retry_crashed.py +0 -0
  774. {pyglet-2.0.8 → pyglet-2.0.10}/tools/ffmpeg/run_test_suite.py +0 -0
  775. {pyglet-2.0.8 → pyglet-2.0.10}/tools/ffmpeg/summarize.py +0 -0
  776. {pyglet-2.0.8 → pyglet-2.0.10}/tools/ffmpeg/test_instrumentation.py +0 -0
  777. {pyglet-2.0.8 → pyglet-2.0.10}/tools/ffmpeg/timeline.py +0 -0
  778. {pyglet-2.0.8 → pyglet-2.0.10}/tools/gendist.sh +0 -0
  779. {pyglet-2.0.8 → pyglet-2.0.10}/tools/gengl.py +0 -0
  780. {pyglet-2.0.8 → pyglet-2.0.10}/tools/gengl_old.py +0 -0
  781. {pyglet-2.0.8 → pyglet-2.0.10}/tools/genwrappers.py +0 -0
  782. {pyglet-2.0.8 → pyglet-2.0.10}/tools/gl.template +0 -0
  783. {pyglet-2.0.8 → pyglet-2.0.10}/tools/gl.xml +0 -0
  784. {pyglet-2.0.8 → pyglet-2.0.10}/tools/gl_info.py +0 -0
  785. {pyglet-2.0.8 → pyglet-2.0.10}/tools/inspect_font.py +0 -0
  786. {pyglet-2.0.8 → pyglet-2.0.10}/tools/requirements.txt +0 -0
  787. {pyglet-2.0.8 → pyglet-2.0.10}/tools/wgl.h +0 -0
  788. {pyglet-2.0.8 → pyglet-2.0.10}/tools/wraptypes/__init__.py +0 -0
  789. {pyglet-2.0.8 → pyglet-2.0.10}/tools/wraptypes/cparser.py +0 -0
  790. {pyglet-2.0.8 → pyglet-2.0.10}/tools/wraptypes/ctypesparser.py +0 -0
  791. {pyglet-2.0.8 → pyglet-2.0.10}/tools/wraptypes/lex.py +0 -0
  792. {pyglet-2.0.8 → pyglet-2.0.10}/tools/wraptypes/preprocessor.py +0 -0
  793. {pyglet-2.0.8 → pyglet-2.0.10}/tools/wraptypes/wrap.py +0 -0
  794. {pyglet-2.0.8 → pyglet-2.0.10}/tools/wraptypes/yacc.py +0 -0
  795. {pyglet-2.0.8 → pyglet-2.0.10}/website/LICENSE.txt +0 -0
  796. {pyglet-2.0.8 → pyglet-2.0.10}/website/README.rst +0 -0
  797. {pyglet-2.0.8 → pyglet-2.0.10}/website/assets/favicon.ico +0 -0
  798. {pyglet-2.0.8 → pyglet-2.0.10}/website/assets/static/css/example-custom-styles.css +0 -0
  799. {pyglet-2.0.8 → pyglet-2.0.10}/website/assets/static/images/pyglet.png +0 -0
  800. {pyglet-2.0.8 → pyglet-2.0.10}/website/content/404.html/contents.lr +0 -0
  801. {pyglet-2.0.8 → pyglet-2.0.10}/website/content/404.html/ngc-5793.jpg +0 -0
  802. {pyglet-2.0.8 → pyglet-2.0.10}/website/content/authors/benjamin/contents.lr +0 -0
  803. {pyglet-2.0.8 → pyglet-2.0.10}/website/content/authors/benjamin/pyglet.png +0 -0
  804. {pyglet-2.0.8 → pyglet-2.0.10}/website/content/authors/contents.lr +0 -0
  805. {pyglet-2.0.8 → pyglet-2.0.10}/website/content/blog/contents.lr +0 -0
  806. {pyglet-2.0.8 → pyglet-2.0.10}/website/content/blog/welcome-blog/contents.lr +0 -0
  807. {pyglet-2.0.8 → pyglet-2.0.10}/website/content/contents.lr +0 -0
  808. {pyglet-2.0.8 → pyglet-2.0.10}/website/content/eclipse.jpg +0 -0
  809. {pyglet-2.0.8 → pyglet-2.0.10}/website/pyglet.lektorproject +0 -0
  810. {pyglet-2.0.8 → pyglet-2.0.10}/website/themes/lektor-icon/AUTHORS.txt +0 -0
  811. {pyglet-2.0.8 → pyglet-2.0.10}/website/themes/lektor-icon/CHANGELOG.md +0 -0
  812. {pyglet-2.0.8 → pyglet-2.0.10}/website/themes/lektor-icon/CONTRIBUTING.md +0 -0
  813. {pyglet-2.0.8 → pyglet-2.0.10}/website/themes/lektor-icon/LICENSE.txt +0 -0
  814. {pyglet-2.0.8 → pyglet-2.0.10}/website/themes/lektor-icon/NOTICE.txt +0 -0
  815. {pyglet-2.0.8 → pyglet-2.0.10}/website/themes/lektor-icon/README.md +0 -0
  816. {pyglet-2.0.8 → pyglet-2.0.10}/website/themes/lektor-icon/assets/static/css/bootstrap.css +0 -0
  817. {pyglet-2.0.8 → pyglet-2.0.10}/website/themes/lektor-icon/assets/static/css/icomoon.css +0 -0
  818. {pyglet-2.0.8 → pyglet-2.0.10}/website/themes/lektor-icon/assets/static/css/magnific-popup.css +0 -0
  819. {pyglet-2.0.8 → pyglet-2.0.10}/website/themes/lektor-icon/assets/static/css/style.css +0 -0
  820. {pyglet-2.0.8 → pyglet-2.0.10}/website/themes/lektor-icon/assets/static/fonts/bootstrap/glyphicons-halflings-regular.ttf +0 -0
  821. {pyglet-2.0.8 → pyglet-2.0.10}/website/themes/lektor-icon/assets/static/fonts/bootstrap/glyphicons-halflings-regular.woff +0 -0
  822. {pyglet-2.0.8 → pyglet-2.0.10}/website/themes/lektor-icon/assets/static/fonts/bootstrap/glyphicons-halflings-regular.woff2 +0 -0
  823. {pyglet-2.0.8 → pyglet-2.0.10}/website/themes/lektor-icon/assets/static/fonts/icomoon/icomoon.ttf +0 -0
  824. {pyglet-2.0.8 → pyglet-2.0.10}/website/themes/lektor-icon/assets/static/fonts/icomoon/icomoon.woff +0 -0
  825. {pyglet-2.0.8 → pyglet-2.0.10}/website/themes/lektor-icon/assets/static/images/Preloader_2.gif +0 -0
  826. {pyglet-2.0.8 → pyglet-2.0.10}/website/themes/lektor-icon/assets/static/images/placeholder_person.png +0 -0
  827. {pyglet-2.0.8 → pyglet-2.0.10}/website/themes/lektor-icon/assets/static/js/jquery-3.3.1.min.js +0 -0
  828. {pyglet-2.0.8 → pyglet-2.0.10}/website/themes/lektor-icon/assets/static/js/jquery.easing.min.js +0 -0
  829. {pyglet-2.0.8 → pyglet-2.0.10}/website/themes/lektor-icon/assets/static/js/jquery.magnific-popup.min.js +0 -0
  830. {pyglet-2.0.8 → pyglet-2.0.10}/website/themes/lektor-icon/assets/static/js/jquery.stellar.js +0 -0
  831. {pyglet-2.0.8 → pyglet-2.0.10}/website/themes/lektor-icon/assets/static/js/jquery.stellar.min.js +0 -0
  832. {pyglet-2.0.8 → pyglet-2.0.10}/website/themes/lektor-icon/assets/static/js/jquery.waypoints.min.js +0 -0
  833. {pyglet-2.0.8 → pyglet-2.0.10}/website/themes/lektor-icon/assets/static/js/magnific-popup-options.js +0 -0
  834. {pyglet-2.0.8 → pyglet-2.0.10}/website/themes/lektor-icon/assets/static/js/main-singlelayout.js +0 -0
  835. {pyglet-2.0.8 → pyglet-2.0.10}/website/themes/lektor-icon/assets/static/js/main.js +0 -0
  836. {pyglet-2.0.8 → pyglet-2.0.10}/website/themes/lektor-icon/flowblocks/content.ini +0 -0
  837. {pyglet-2.0.8 → pyglet-2.0.10}/website/themes/lektor-icon/flowblocks/gallery.ini +0 -0
  838. {pyglet-2.0.8 → pyglet-2.0.10}/website/themes/lektor-icon/flowblocks/gallery_item.ini +0 -0
  839. {pyglet-2.0.8 → pyglet-2.0.10}/website/themes/lektor-icon/flowblocks/member.ini +0 -0
  840. {pyglet-2.0.8 → pyglet-2.0.10}/website/themes/lektor-icon/flowblocks/mission.ini +0 -0
  841. {pyglet-2.0.8 → pyglet-2.0.10}/website/themes/lektor-icon/flowblocks/mission_tab.ini +0 -0
  842. {pyglet-2.0.8 → pyglet-2.0.10}/website/themes/lektor-icon/flowblocks/service.ini +0 -0
  843. {pyglet-2.0.8 → pyglet-2.0.10}/website/themes/lektor-icon/flowblocks/services.ini +0 -0
  844. {pyglet-2.0.8 → pyglet-2.0.10}/website/themes/lektor-icon/flowblocks/team.ini +0 -0
  845. {pyglet-2.0.8 → pyglet-2.0.10}/website/themes/lektor-icon/images/blog-index.png +0 -0
  846. {pyglet-2.0.8 → pyglet-2.0.10}/website/themes/lektor-icon/images/full-blog.png +0 -0
  847. {pyglet-2.0.8 → pyglet-2.0.10}/website/themes/lektor-icon/images/full-page.png +0 -0
  848. {pyglet-2.0.8 → pyglet-2.0.10}/website/themes/lektor-icon/images/gallery-404.png +0 -0
  849. {pyglet-2.0.8 → pyglet-2.0.10}/website/themes/lektor-icon/images/gallery-singlepage.png +0 -0
  850. {pyglet-2.0.8 → pyglet-2.0.10}/website/themes/lektor-icon/images/mainpage-screenshots.png +0 -0
  851. {pyglet-2.0.8 → pyglet-2.0.10}/website/themes/lektor-icon/images/responsive-layout.png +0 -0
  852. {pyglet-2.0.8 → pyglet-2.0.10}/website/themes/lektor-icon/models/404.ini +0 -0
  853. {pyglet-2.0.8 → pyglet-2.0.10}/website/themes/lektor-icon/models/author.ini +0 -0
  854. {pyglet-2.0.8 → pyglet-2.0.10}/website/themes/lektor-icon/models/authors.ini +0 -0
  855. {pyglet-2.0.8 → pyglet-2.0.10}/website/themes/lektor-icon/models/blog-post.ini +0 -0
  856. {pyglet-2.0.8 → pyglet-2.0.10}/website/themes/lektor-icon/models/blog.ini +0 -0
  857. {pyglet-2.0.8 → pyglet-2.0.10}/website/themes/lektor-icon/models/page.ini +0 -0
  858. {pyglet-2.0.8 → pyglet-2.0.10}/website/themes/lektor-icon/models/single-layout.ini +0 -0
  859. {pyglet-2.0.8 → pyglet-2.0.10}/website/themes/lektor-icon/templates/404.html +0 -0
  860. {pyglet-2.0.8 → pyglet-2.0.10}/website/themes/lektor-icon/templates/author.html +0 -0
  861. {pyglet-2.0.8 → pyglet-2.0.10}/website/themes/lektor-icon/templates/authors.html +0 -0
  862. {pyglet-2.0.8 → pyglet-2.0.10}/website/themes/lektor-icon/templates/blocks/content.html +0 -0
  863. {pyglet-2.0.8 → pyglet-2.0.10}/website/themes/lektor-icon/templates/blocks/gallery.html +0 -0
  864. {pyglet-2.0.8 → pyglet-2.0.10}/website/themes/lektor-icon/templates/blocks/mission.html +0 -0
  865. {pyglet-2.0.8 → pyglet-2.0.10}/website/themes/lektor-icon/templates/blocks/services.html +0 -0
  866. {pyglet-2.0.8 → pyglet-2.0.10}/website/themes/lektor-icon/templates/blocks/team.html +0 -0
  867. {pyglet-2.0.8 → pyglet-2.0.10}/website/themes/lektor-icon/templates/blog-layout.html +0 -0
  868. {pyglet-2.0.8 → pyglet-2.0.10}/website/themes/lektor-icon/templates/blog-post.html +0 -0
  869. {pyglet-2.0.8 → pyglet-2.0.10}/website/themes/lektor-icon/templates/blog.html +0 -0
  870. {pyglet-2.0.8 → pyglet-2.0.10}/website/themes/lektor-icon/templates/layout.html +0 -0
  871. {pyglet-2.0.8 → pyglet-2.0.10}/website/themes/lektor-icon/templates/macros/blog.html +0 -0
  872. {pyglet-2.0.8 → pyglet-2.0.10}/website/themes/lektor-icon/templates/macros/pagination.html +0 -0
  873. {pyglet-2.0.8 → pyglet-2.0.10}/website/themes/lektor-icon/templates/none.html +0 -0
  874. {pyglet-2.0.8 → pyglet-2.0.10}/website/themes/lektor-icon/templates/page.html +0 -0
  875. {pyglet-2.0.8 → pyglet-2.0.10}/website/themes/lektor-icon/templates/single-layout.html +0 -0
  876. {pyglet-2.0.8 → pyglet-2.0.10}/website/themes/lektor-icon/theme.ini +0 -0
@@ -128,12 +128,18 @@ inheritance_graph_attrs = dict(rankdir="LR", size='""')
128
128
  # Add any Sphinx extension module names here, as strings. They can be extensions
129
129
  # coming with Sphinx (named 'sphinx.ext.*') or your custom ones.
130
130
  extensions = ['sphinx.ext.autodoc',
131
+ 'sphinx.ext.intersphinx',
131
132
  'sphinx.ext.inheritance_diagram',
132
133
  'sphinx.ext.todo',
133
134
  'sphinx.ext.napoleon']
134
135
 
135
136
  autodoc_member_order = 'groupwise'
136
137
 
138
+ # Enable links to Python's main doc
139
+ intersphinx_mapping = {
140
+ 'python': ('https://docs.python.org/3', None)
141
+ }
142
+
137
143
  # Add any paths that contain templates here, relative to this directory.
138
144
  templates_path = ['_templates']
139
145
 
@@ -15,6 +15,7 @@ pyglet.shapes
15
15
  .. autoattribute:: x
16
16
  .. autoattribute:: y
17
17
  .. autoattribute:: position
18
+ .. autoattribute:: rotation
18
19
  .. autoattribute:: anchor_x
19
20
  .. autoattribute:: anchor_y
20
21
  .. autoattribute:: anchor_position
@@ -30,7 +31,6 @@ pyglet.shapes
30
31
 
31
32
  .. autoattribute:: angle
32
33
  .. autoattribute:: start_angle
33
- .. autoattribute:: rotation
34
34
 
35
35
 
36
36
  .. autoclass:: BezierCurve
@@ -51,7 +51,6 @@ pyglet.shapes
51
51
 
52
52
  .. autoattribute:: a
53
53
  .. autoattribute:: b
54
- .. autoattribute:: rotation
55
54
 
56
55
 
57
56
  .. autoclass:: Sector
@@ -60,7 +59,6 @@ pyglet.shapes
60
59
  .. autoattribute:: angle
61
60
  .. autoattribute:: start_angle
62
61
  .. autoattribute:: radius
63
- .. autoattribute:: rotation
64
62
 
65
63
 
66
64
  .. autoclass:: Line
@@ -75,7 +73,13 @@ pyglet.shapes
75
73
 
76
74
  .. autoattribute:: width
77
75
  .. autoattribute:: height
78
- .. autoattribute:: rotation
76
+
77
+
78
+ .. autoclass:: Box
79
+ :show-inheritance:
80
+
81
+ .. autoattribute:: width
82
+ .. autoattribute:: height
79
83
 
80
84
 
81
85
  .. autoclass:: BorderedRectangle
@@ -84,7 +88,6 @@ pyglet.shapes
84
88
  .. autoattribute:: width
85
89
  .. autoattribute:: height
86
90
  .. autoattribute:: border_color
87
- .. autoattribute:: rotation
88
91
 
89
92
 
90
93
  .. autoclass:: Triangle
@@ -102,10 +105,7 @@ pyglet.shapes
102
105
  .. autoattribute:: outer_radius
103
106
  .. autoattribute:: inner_radius
104
107
  .. autoattribute:: num_spikes
105
- .. autoattribute:: rotation
106
108
 
107
109
 
108
110
  .. autoclass:: Polygon
109
111
  :show-inheritance:
110
-
111
- .. autoattribute:: rotation
@@ -127,7 +127,10 @@ Misc functions
127
127
  Text motion constants
128
128
  ^^^^^^^^^^^^^^^^^^^^^
129
129
 
130
- These are allowed to clash with key constants.
130
+ These are allowed to clash with key constants because they abstract
131
+ common text motions from their platform-specific keyboard shortcuts.
132
+ See :ref:`guide_keyboard-motion-events` for more information.
133
+
131
134
 
132
135
  .. list-table::
133
136
 
@@ -139,6 +142,10 @@ These are allowed to clash with key constants.
139
142
  * ``MOTION_DOWN``
140
143
  *
141
144
  * ``MOTION_LEFT``
145
+ *
146
+ * ``MOTION_COPY``
147
+ *
148
+ * ``MOTION_PASTE``
142
149
  *
143
150
  * ``MOTION_NEXT_WORD``
144
151
  *
@@ -160,6 +167,7 @@ These are allowed to clash with key constants.
160
167
  *
161
168
  * ``MOTION_DELETE``
162
169
 
170
+
163
171
  Number pad
164
172
  ^^^^^^^^^^
165
173
 
@@ -4,31 +4,40 @@ The application event loop
4
4
  ==========================
5
5
 
6
6
  In order to let pyglet process operating system events such as mouse and
7
- keyboard events, applications need to enter an application event loop. The
8
- event loop continuously checks for new events, dispatches those events, and
9
- updates the contents of all open windows.
7
+ keyboard events, applications need to enter an application event loop. The
8
+ event loop watches for new events, dispatches those events, and sleeps until
9
+ something else needs to be done. It also handles any functions that you
10
+ have scheduled on the clock (see :ref:`guide_calling-functions-periodically`).
11
+ pyglet ensures that the loop iterates only as often as necessary to fulfill all
12
+ scheduled functions and user input. It is well tuned for performance and low
13
+ power usage on Windows, Linux and macOS.
10
14
 
11
- pyglet provides an application event loop that is tuned for performance and
12
- low power usage on Windows, Linux and Mac OS X. Most applications need only
13
- call::
15
+ After creating Windows and attaching event handlers, most applications need
16
+ only call::
14
17
 
15
18
  pyglet.app.run()
16
19
 
17
- to enter the event loop after creating their initial set of windows and
18
- attaching event handlers. The :py:func:`~pyglet.app.run` function does not
19
- return until all open windows have been closed, or until
20
- :py:func:`pyglet.app.exit()` is called.
20
+ The :py:func:`~pyglet.app.run` function does not return until all open windows
21
+ have been closed, or until :py:func:`pyglet.app.exit()` is called.
21
22
 
22
- The pyglet application event loop dispatches window events (such as for mouse
23
- and keyboard input) as they occur and dispatches the
24
- :py:meth:`~pyglet.window.Window.on_draw` event to
25
- each window after every iteration through the loop.
23
+ Once you have entered the event loop it dispatches window events (such as for
24
+ keyboard input or mouse movement), events from Controllers or Joysticks,
25
+ and any other events as they occur. By default, the application event loop will
26
+ also refresh all Windows and dispatch the :py:meth:`~pyglet.window.Window.on_draw`
27
+ event at a rate of 60Hz (60 times per second). You can customize this by
28
+ passing the desired interval in seconds to :py:func:`~pyglet.app.run`::
26
29
 
27
- To have additional code run periodically or every iteration through the loop,
28
- schedule functions on the clock (see
29
- :ref:`guide_calling-functions-periodically`). pyglet ensures that the loop
30
- iterates only as often as necessary
31
- to fulfill all scheduled functions and user input.
30
+ pyglet.app.run(1/30) # 30Hz
31
+ # or
32
+ pyglet.app.run(1/120) # 120Hz
33
+ # or for benchmarking, redraw as fast as possible:
34
+ pyglet.app.run(0)
35
+
36
+
37
+ Passing `None` to :py:func:`~pyglet.app.run` is a special case. It will enter
38
+ the event loop as usual, but it will not dispatch the Window events. This can
39
+ be desired if you wish to have different refresh rates for different Windows,
40
+ or even change the refresh rate while the application is running.
32
41
 
33
42
  Customising the event loop
34
43
  --------------------------
@@ -52,7 +61,7 @@ instance. Other pyglet modules such as :py:mod:`pyglet.window` depend on this.
52
61
  Event loop events
53
62
  ^^^^^^^^^^^^^^^^^
54
63
 
55
- You can listen for several events on the event loop instance. The most useful
64
+ You can listen for several events on the event loop instance. A useful one
56
65
  of these is :py:meth:`~pyglet.app.EventLoop.on_window_close`, which is
57
66
  dispatched whenever a window is closed. The default handler for this event
58
67
  exits the event loop if there are no more windows. The following example
@@ -73,7 +82,7 @@ Overriding the default idle policy
73
82
 
74
83
  The :py:meth:`pyglet.app.EventLoop.idle` method is called every iteration of
75
84
  the event loop. It is responsible for calling scheduled clock functions,
76
- redrawing windows, and deciding how idle the application is. You can override
85
+ and deciding how idle the application is. You can override
77
86
  this method if you have specific requirements for tuning the performance
78
87
  of your application; especially if it uses many windows.
79
88
 
@@ -81,32 +90,38 @@ The default implementation has the following algorithm:
81
90
 
82
91
  1. Call :py:func:`pyglet.clock.tick` with ``poll=True`` to call any scheduled
83
92
  functions.
84
- 2. Dispatch the :py:meth:`~pyglet.window.Window.on_draw` event and call
85
- :py:meth:`~pyglet.window.Window.flip` on every open window.
86
- 3. Return the value of :py:func:`pyglet.clock.get_sleep_time`.
93
+ 2. Return the value of :py:func:`pyglet.clock.get_sleep_time`.
87
94
 
88
95
  The return value of the :py:meth:`~pyglet.clock.get_sleep_time` method is
89
96
  the number of seconds until the event loop needs to iterate again (unless
90
97
  there is an earlier user-input event); or ``None`` if the loop can wait
91
98
  for input indefinitely.
92
99
 
93
- Note that this default policy causes every window to be redrawn during every
94
- user event -- if you have more knowledge about which events have an effect on
95
- which windows you can improve on the performance of this method.
96
100
 
97
- Dispatching events manually
98
- ---------------------------
101
+ Creating a Custom Event Loop
102
+ ----------------------------
99
103
 
100
- Earlier versions of pyglet and certain other windowing toolkits such as
101
- PyGame and SDL require the application developer to write their own event
102
- loop. This is usually just an inconvenience compared to
103
- :py:func:`pyglet.app.run`, but can be necessary in some situations when
104
- combining pyglet with other toolkits.
104
+ Many windowing toolkits requie the application developer to write their own
105
+ event loop. This is also possible in pyglet, but is usually just an inconvenience
106
+ compared to :py:func:`pyglet.app.run`. It can be necessary in some situations,
107
+ such as when combining pyglet with other toolkits, but is strongly discouraged
108
+ for the following reasons:
105
109
 
106
- A simple event loop usually has the following form::
110
+ * Keeping track of delta times between frames, and maintaining a stable frame
111
+ rate can be challenging. It is difficult to write a manual event loop that does
112
+ not waste CPU cycles and is still responsive to user input.
113
+ * The :py:class:`~pyglet.app.EventLoop` class provides plenty of hooks for most
114
+ toolkits to be integrated without needing to resort to a manual event loop.
115
+ * Because :py:class:`~pyglet.app.EventLoop` is tuned for specific operating
116
+ systems, it is more responsive to user events, and continues calling clock
117
+ functions while windows are being resized, and (on macOS) the menu bar is
118
+ being tracked.
119
+
120
+ With that out of the way, a manual event loop usually has the following form::
107
121
 
108
122
  while True:
109
123
  pyglet.clock.tick()
124
+ pyglet.app.platform_event_loop.step(timeout)
110
125
 
111
126
  for window in pyglet.app.windows:
112
127
  window.switch_to()
@@ -114,26 +129,15 @@ A simple event loop usually has the following form::
114
129
  window.dispatch_event('on_draw')
115
130
  window.flip()
116
131
 
117
- The :py:meth:`~pyglet.window.Window.dispatch_events` method checks the window's
118
- operating system event queue for user input and dispatches any events found.
119
- The method does not wait for input -- if ther are no events pending, control is
120
- returned to the program immediately.
121
-
122
132
  The call to :py:func:`pyglet.clock.tick` is required for ensuring scheduled
123
133
  functions are called, including the internal data pump functions for playing
124
134
  sounds, animations, and video.
125
135
 
126
- While it is possible to write your own event loop in this way, it is strongly
127
- discouraged for the following reasons:
128
-
129
- * The :py:class:`~pyglet.app.EventLoop` class provides plenty of hooks for most
130
- toolkits to be integrated without needing to resort to a manual event loop.
131
- * Because :py:class:`~pyglet.app.EventLoop` is tuned for specific operating
132
- systems, it is more responsive to user events, and continues calling clock
133
- functions while windows are being resized, and (on Mac OS X) the menu bar is
134
- being tracked.
135
- * It is difficult to write a manual event loop that does not consume
136
- 100% CPU while still remaining responsive to user input.
136
+ The :py:meth:`~pyglet.window.Window.dispatch_events` method checks the window's
137
+ operating system event queue for user input and dispatches any events found.
138
+ The method does not wait for input -- if there are no events pending, control is
139
+ returned to the program immediately.
137
140
 
138
- The capability for writing manual event loops remains for legacy support and
139
- extreme cases where the developer knows what they are doing.
141
+ The :py:meth:`~pyglet.window.Window.dispatch_event('on_draw')` method is optional
142
+ if you are catching this Window event. If you are not using this event, your
143
+ draw calls (`Batch.draw()`) should go here instead.
@@ -3,27 +3,73 @@
3
3
  Keyboard input
4
4
  ==============
5
5
 
6
- pyglet has support for low-level keyboard input suitable for games as well as
7
- locale- and device-independent Unicode text entry.
6
+ pyglet provides multiple types of keyboard input abstraction:
8
7
 
9
- Keyboard input requires a window which has focus. The operating system
10
- usually decides which application window has keyboard focus. Typically this
11
- window appears above all others and may be decorated differently, though this
12
- is platform-specific (for example, some Linux window managers couple
13
- keyboard focus with the mouse pointer).
8
+ #. Cross-platform key press/release events suitable for game controls
9
+ #. Unicode text entry with automatic locale and platform handling
10
+ #. Cross-platform detection of common text editing actions
14
11
 
15
- You can request keyboard focus for a window with the
16
- :py:meth:`~pyglet.window.Window.activate` method, but you should not rely
17
- on this -- it may simply provide a visual cue to the user indicating that
18
- the window requires user input, without actually getting focus.
19
12
 
20
- Windows created with the
21
- :py:attr:`~pyglet.window.Window.WINDOW_STYLE_BORDERLESS` or
22
- :py:attr:`~pyglet.window.Window.WINDOW_STYLE_TOOL`
23
- style cannot receive keyboard focus.
13
+ All of them have the following restrictions:
14
+
15
+ #. There must be at least one pyglet :py:class:`~pyglet.window.Window`
16
+ instance which can hold keyboard focus
17
+
18
+ #. Windows created with the following styles cannot hold keyboard focus:
19
+
20
+ * :py:attr:`~pyglet.window.Window.WINDOW_STYLE_BORDERLESS`
21
+ * :py:attr:`~pyglet.window.Window.WINDOW_STYLE_TOOL`
22
+
23
+
24
+ If your project's requirements fall outside these restrictions, you
25
+ should consider alternatives. Examples include:
26
+
27
+ * Python's built-in :py:func:`input` function
28
+ * The `Textual <https://www.textualize.io/projects/#textual>`_ terminal UI
29
+ framework
30
+
31
+
32
+ Keyboard Focus Conventions
33
+ --------------------------
34
+
35
+ Keyboard focus is where the user's keyboard input is sent.
36
+
37
+ Desktop operating systems often follow these conventions:
38
+
39
+ #. Only one window can have focus
40
+ #. Clicking a window gives it focus
41
+ #. The window with focus is displayed above all others
42
+ #. The window with focus has a distinct title bar style
43
+ #. Windows can have focus taken away
44
+ #. Windows can request focus
45
+
46
+ However, the items above are not guaranteed to be true.
47
+
48
+ For example, pyglet allows you to request focus from the OS by calling
49
+ :py:meth:`Window.activate <pyglet.window.Window.activate>`. However,
50
+ the OS may not support the feature. Even if it does support it, the OS
51
+ may not only refuse, but do so without notifying the user focus was
52
+ requested.
53
+
54
+ Deviations from the conventions can occur for any of the following
55
+ reasons:
56
+
57
+ .. list-table::
58
+ :header-rows: 1
59
+
60
+ * - Cause
61
+ - Example(s)
62
+
63
+ * - Modal dialogs
64
+ - Permission requests and error notifications
65
+
66
+ * - User settings
67
+ - Window focus is set to follow the mouse
68
+
69
+ * - Platform quirks
70
+ - Split screen utilities and Linux window managers
71
+ with multi-focus modes
24
72
 
25
- It is not possible to use pyglet's keyboard or text events without a window;
26
- consider using Python built-in functions such as ``input`` instead.
27
73
 
28
74
  Keyboard events
29
75
  ---------------
@@ -165,10 +211,10 @@ similar functionality in allowing players to set up their own key bindings.
165
211
  Remembering key state
166
212
  ^^^^^^^^^^^^^^^^^^^^^
167
213
 
168
- pyglet provides the convenience class
169
- :py:class:`~pyglet.window.key.KeyStateHandler` for storing the
170
- current keyboard state. This can be pushed onto the event handler stack of
171
- any window and subsequently queried as a dict::
214
+ :py:class:`~pyglet.window.key.KeyStateHandler` is a convenience class which
215
+ stores the current keyboard state. Instances can be pushed onto the event
216
+ handler stack of any window and subsequently queried using key code constants
217
+ as keys::
172
218
 
173
219
  from pyglet.window import key
174
220
 
@@ -182,16 +228,16 @@ any window and subsequently queried as a dict::
182
228
 
183
229
  .. _guide_text-and-motion-events:
184
230
 
185
- Text and motion events
186
- ----------------------
231
+ Text Input and Motion Events
232
+ ----------------------------
187
233
 
188
- pyglet decouples the keys that the user presses from the Unicode text that is
189
- input. There are several benefits to this:
234
+ pyglet offers Unicode text input events in addition to individual key events.
235
+ There are several benefits to this:
190
236
 
191
- * The complex task of mapping modifiers and key symbols to Unicode characters
192
- is taken care of automatically and correctly.
193
- * Key repeat is applied to keys held down according to the user's operating
194
- system preferences.
237
+ * Automatic and correct mapping of platform-specific modifiers and key symbols
238
+ to Unicode characters
239
+ * Key repeat for held keys is automatically applied to text input according to
240
+ the user's operating system preferences.
195
241
  * Dead keys and compose keys are automatically interpreted to produce
196
242
  diacritic marks or combining characters.
197
243
  * Keyboard input can be routed via an input palette, for example to input
@@ -210,46 +256,41 @@ When text is entered into a window, the
210
256
  pass
211
257
 
212
258
  The only parameter provided is a Unicode string.
213
- For keyboard input this will usually be one character long,
214
- however more complex input methods such as an input palette may
215
- provide an entire word or phrase at once.
259
+ Although this will usually be one character long for direct keyboard
260
+ input, more complex input methods such as an input palettes may provide
261
+ entire words or phrases at once.
216
262
 
217
- You should always use the :py:meth:`~pyglet.window.Window.on_text`
218
- event when you need to determine a string from a sequence of keystrokes.
219
- Conversely, you never use :py:meth:`~pyglet.window.Window.on_text` when you
220
- require keys to be pressed (for example, to control the movement of the player
221
- in a game).
263
+ How does this differ from :py:meth:`~pyglet.window.Window.on_key_press`?
264
+
265
+ * Always use the :py:meth:`~pyglet.window.Window.on_text`
266
+ event when you need a string from a series of keystrokes
267
+ * Never use the :py:meth:`~pyglet.window.Window.on_text` event when you
268
+ need individual presses, such as controlling player movement in a game
222
269
 
223
- Motion events
224
- ^^^^^^^^^^^^^
225
270
 
226
- In addition to entering text, users press keys on the keyboard to navigate
227
- around text widgets according to well-ingrained conventions. For example,
228
- pressing the left arrow key moves the cursor one character to the left.
271
+ .. _guide_keyboard-motion-events:
229
272
 
230
- While you might be tempted to use the
231
- :py:meth:`~pyglet.window.Window.on_key_press` event to capture these
232
- events, there are a couple of problems:
273
+ Motion events
274
+ ^^^^^^^^^^^^^
233
275
 
234
- * Key repeat events are not generated for
235
- :py:meth:`~pyglet.window.Window.on_key_press`, yet users expect
236
- that holding down the left arrow key will eventually move the character to
237
- the beginning of the line.
238
- * Different operating systems have different conventions for the behaviour of
239
- keys. For example, on Windows it is customary for the Home key to move the
240
- cursor to the beginning of the line, whereas on Mac OS X the same key moves
241
- to the beginning of the document.
276
+ In addition to key presses and entering new text, pyglet also supports common
277
+ text editing motions:
242
278
 
243
- pyglet windows provide the :py:meth:`~pyglet.window.Window.on_text_motion`
244
- event, which takes care of these problems by abstracting away the key presses
245
- and providing your application only with the intended cursor motion::
279
+ * Selecting text
280
+ * Moving the caret in response to non-character keys
281
+ * Deleting, copying, and pasting text
246
282
 
247
- def on_text_motion(motion):
248
- pass
283
+ pyglet automatically detects and translates platform-specific versions of
284
+ supported motions into cross-platform
285
+ :py:meth:`~pyglet.window.Window.on_text_motion` events. These events are
286
+ intended be handled by the :py:meth:`Caret <pyglet.text.caret.Caret.on_text_motion>`
287
+ of any active :py:class:`~pyglet.text.layout.IncrementalTextLayout`, such
288
+ as those used in :py:class:`~pyglet.gui.widgets.TextEntry` fields.
249
289
 
250
- `motion` is an integer which is a constant defined in
251
- :py:mod:`pyglet.window.key`. The following table shows the defined text motions
252
- and their keyboard mapping on each operating system.
290
+ The `motion` argument to the event handler will be a constant value
291
+ defined in :py:mod:`pyglet.window.key`. The table below lists the
292
+ supported text motions with their keyboard mapping on each supported
293
+ platform.
253
294
 
254
295
  .. list-table::
255
296
  :header-rows: 1
@@ -274,6 +315,14 @@ and their keyboard mapping on each operating system.
274
315
  - Move the cursor right
275
316
  - Right
276
317
  - Right
318
+ * - ``MOTION_COPY``
319
+ - Copy the current selection to the clipboard
320
+ - Ctrl + C
321
+ - Command + C
322
+ * - ``MOTION_PASTE``
323
+ - Paste the clipboard contents into the current document
324
+ - Ctrl + V
325
+ - Command + V
277
326
  * - ``MOTION_PREVIOUS_WORD``
278
327
  - Move the cursor to the previous word
279
328
  - Ctrl + Left
@@ -315,6 +364,80 @@ and their keyboard mapping on each operating system.
315
364
  - Delete
316
365
  - Delete
317
366
 
367
+ If you believe pyglet needs to add support for a motion which is
368
+ currently missing, please skip to
369
+ :ref:`guide_keyboard-adding-new-motion-events`.
370
+
371
+ Customizing this behavior for an individual project is currently
372
+ difficult due to the way carets and text entry fields are interconnected.
373
+ However, using :py:meth:`~pyglet.window.Window.on_key_press` to handle
374
+ motion events should still be avoided for the following reasons:
375
+
376
+ * Supported platforms can assign a key to different motions. For example
377
+ the Home key moves the cursor to the start of a line on Windows, but
378
+ to the beginning of a document on Mac OS.
379
+ * Users expect holding down a motion's keys to repeat it released. For
380
+ example, holding Backspace deletes multiple characters. However, only
381
+ one :py:meth:`~pyglet.window.Window.on_key_press` event occurs per
382
+ keypress.
383
+
384
+
385
+ .. _guide_keyboard-adding-new-motion-events:
386
+
387
+ Adding New Motions
388
+ """"""""""""""""""
389
+
390
+ Before adding a new motion, please do the following:
391
+
392
+ #. Consult the previous section & each platform's documentation to be
393
+ sure it is:
394
+
395
+ #. A common text operation present on every platform
396
+ #. Not already implemented by pyglet
397
+
398
+ #. Attempt to find the corresponding functionality in
399
+ `Apple's NSTextView documentation
400
+ <https://developer.apple.com/documentation/appkit/nstextview/>`_
401
+
402
+ #. Discuss the addition and any remaining questions with maintainers by either:
403
+
404
+ * `Filing a GitHub Issue <https://github.com/pyglet/pyglet/issues>`_
405
+ * `Discord or the mailing list <https://github.com/pyglet/pyglet#contact>`_
406
+
407
+ Then, once you're ready:
408
+
409
+ #. Add the motion constant to :py:mod:`pyglet.window.key`
410
+
411
+ #. Add an entry for the constant in the :ref:`guide_keyboard-motion-events`
412
+ section
413
+
414
+ #. Implement shared handling behavior in :py:meth:`~pyglet.text.caret.Caret.on_text_motion`
415
+
416
+ #. Implement Mac support (usually the most confusing step)
417
+
418
+ #. Open `pyglet/window/cocoa/pyglet_textview.py
419
+ <https://github.com/pyglet/pyglet/blob/master/pyglet/window/cocoa/pyglet_textview.py>`_
420
+ #. Implement a corresponding handler method on
421
+ ``PygletTextView_Implementation`` (pyglet's subclass of ``NSTextView``)
422
+
423
+ #. Add the Windows keyboard shortcut
424
+
425
+ #. Open `pyglet/window/win32/__init__.py
426
+ <https://github.com/pyglet/pyglet/blob/master/pyglet/window/win32/__init__.py>`_
427
+ #. Add the keyboard shortcut to the ``_motion_map`` dictionary
428
+
429
+ #. Add the Linux keyboard shortcut
430
+
431
+ #. Open `pyglet/window/xlib/__init__.py
432
+ <https://github.com/pyglet/pyglet/blob/master/pyglet/window/xlib/__init__.py>`_
433
+ #. Add the keyboard shortcut to the ``_motion_map`` dictionary
434
+
435
+
436
+ Be sure to test your changes before making a PR if possible!
437
+
438
+ If you do not have access to a specific platform above, include this in your PR's
439
+ notes.
440
+
318
441
  Keyboard exclusivity
319
442
  --------------------
320
443
 
@@ -328,15 +451,19 @@ application which should not be closed, or a game in which it is possible for
328
451
  a user to accidentally press one of these keys.
329
452
 
330
453
  To enable this mode, call
331
- :py:meth:`~pyglet.window.Window.set_exclusive_keyboard` for the window on
332
- which it should apply. On Mac OS X the dock and menu bar will slide out of
333
- view while exclusive keyboard is activated.
454
+ :py:meth:`Window.set_exclusive_keyboard <pyglet.window.Window.set_exclusive_keyboard>`
455
+ on the window it should apply to. On Mac OS X, the dock and menu bar
456
+ will slide out of view while exclusive keyboard is activated.
334
457
 
335
458
  The following restrictions apply on Windows:
336
459
 
337
- * Most keys are not disabled: a user can still switch away from your
338
- application using Ctrl+Escape, Alt+Escape, the Windows key or
339
- Ctrl+Alt+Delete. Only the Alt+Tab combination is disabled.
460
+ * Only Alt+Tab can be disabled
461
+ * Users will still be able to switch applications through:
462
+
463
+ * Ctrl+Escape
464
+ * Alt+Escape
465
+ * the Windows key
466
+ * Ctrl+Alt+Delete
340
467
 
341
468
  The following restrictions apply on Mac OS X:
342
469