pyglet 2.0.9__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 (874) hide show
  1. {pyglet-2.0.9 → pyglet-2.0.10}/.github/workflows/unittests.yml +1 -5
  2. {pyglet-2.0.9 → pyglet-2.0.10}/.readthedocs.yml +5 -1
  3. {pyglet-2.0.9 → pyglet-2.0.10}/PKG-INFO +3 -2
  4. {pyglet-2.0.9 → pyglet-2.0.10}/README.md +2 -1
  5. {pyglet-2.0.9 → pyglet-2.0.10}/RELEASE_NOTES +36 -0
  6. {pyglet-2.0.9 → pyglet-2.0.10}/contrib/qt_sprite_preview.py +774 -586
  7. {pyglet-2.0.9 → pyglet-2.0.10}/doc/conf.py +6 -0
  8. {pyglet-2.0.9 → pyglet-2.0.10}/doc/modules/shapes.rst +8 -8
  9. {pyglet-2.0.9 → pyglet-2.0.10}/doc/modules/window_key.rst +9 -1
  10. {pyglet-2.0.9 → pyglet-2.0.10}/doc/programming_guide/eventloop.rst +27 -26
  11. {pyglet-2.0.9 → pyglet-2.0.10}/doc/programming_guide/keyboard.rst +194 -67
  12. {pyglet-2.0.9 → pyglet-2.0.10}/doc/programming_guide/media.rst +297 -67
  13. {pyglet-2.0.9 → pyglet-2.0.10}/doc/programming_guide/quickstart.rst +1 -0
  14. pyglet-2.0.10/examples/clipboard.py +18 -0
  15. {pyglet-2.0.9 → pyglet-2.0.10}/examples/media/media_info.py +1 -9
  16. pyglet-2.0.10/examples/media/soundspace/README +38 -0
  17. pyglet-2.0.10/examples/media/soundspace/reader.py +117 -0
  18. pyglet-2.0.10/examples/media/soundspace/res/bass.wav +0 -0
  19. pyglet-2.0.10/examples/media/soundspace/res/drums.wav +0 -0
  20. pyglet-2.0.10/examples/media/soundspace/res/guitar.wav +0 -0
  21. pyglet-2.0.10/examples/media/soundspace/res/piano.wav +0 -0
  22. pyglet-2.0.10/examples/media/soundspace/res/space.txt +24 -0
  23. pyglet-2.0.10/examples/media/soundspace/soundspace.py +660 -0
  24. {pyglet-2.0.9 → pyglet-2.0.10}/examples/model/fpscamera.py +50 -38
  25. pyglet-2.0.10/examples/net/client.py +18 -0
  26. pyglet-2.0.10/examples/net/server.py +25 -0
  27. {pyglet-2.0.9/examples/graphics → pyglet-2.0.10/examples}/shapes.py +3 -0
  28. {pyglet-2.0.9 → pyglet-2.0.10}/examples/window/fixed_resolution.py +37 -34
  29. {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/__init__.py +19 -10
  30. pyglet-2.0.10/pyglet/experimental/README.md +6 -0
  31. {pyglet-2.0.9 → pyglet-2.0.10/pyglet}/experimental/geoshader_sprite.py +29 -33
  32. pyglet-2.0.10/pyglet/experimental/net.py +247 -0
  33. {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/font/directwrite.py +33 -59
  34. {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/font/win32.py +10 -1
  35. {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/gl/base.py +195 -46
  36. {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/gl/gl_info.py +4 -2
  37. {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/gl/lib.py +1 -2
  38. {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/gl/win32.py +30 -30
  39. {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/graphics/__init__.py +9 -21
  40. {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/graphics/shader.py +53 -50
  41. {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/graphics/vertexarray.py +8 -9
  42. {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/graphics/vertexbuffer.py +50 -74
  43. {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/graphics/vertexdomain.py +54 -97
  44. {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/gui/widgets.py +28 -0
  45. {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/image/__init__.py +19 -5
  46. {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/image/buffer.py +19 -16
  47. {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/image/codecs/wic.py +1 -1
  48. {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/input/controller_db.py +19 -23
  49. {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/input/linux/evdev.py +3 -2
  50. {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/input/win32/xinput.py +2 -2
  51. {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/libs/darwin/cocoapy/cocoalibs.py +1 -0
  52. {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/libs/win32/__init__.py +12 -1
  53. pyglet-2.0.10/pyglet/libs/win32/com.py +397 -0
  54. {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/libs/win32/types.py +8 -1
  55. {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/media/codecs/wmf.py +16 -22
  56. {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/media/devices/base.py +1 -2
  57. {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/media/devices/win32.py +10 -10
  58. {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/media/drivers/base.py +2 -3
  59. {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/media/drivers/directsound/lib_dsound.py +0 -1
  60. {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/media/drivers/listener.py +1 -3
  61. {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/media/drivers/xaudio2/lib_xaudio2.py +16 -34
  62. {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/media/player.py +8 -3
  63. {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/model/__init__.py +4 -17
  64. {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/shapes.py +154 -125
  65. {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/sprite.py +4 -17
  66. {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/text/__init__.py +2 -0
  67. {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/text/caret.py +2 -1
  68. {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/text/layout.py +171 -189
  69. {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/util.py +0 -31
  70. {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/window/__init__.py +46 -18
  71. {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/window/cocoa/__init__.py +28 -0
  72. {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/window/key.py +10 -1
  73. {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/window/win32/__init__.py +37 -0
  74. {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/window/xlib/__init__.py +142 -5
  75. {pyglet-2.0.9 → pyglet-2.0.10}/pyglet.egg-info/PKG-INFO +3 -2
  76. {pyglet-2.0.9 → pyglet-2.0.10}/pyglet.egg-info/SOURCES.txt +66 -2
  77. {pyglet-2.0.9 → pyglet-2.0.10}/tests/integration/app/test_eventloop.py +1 -2
  78. {pyglet-2.0.9 → pyglet-2.0.10}/tests/integration/image/test_imagegrid.py +3 -0
  79. {pyglet-2.0.9 → pyglet-2.0.10}/tests/integration/image/test_texture3d.py +3 -0
  80. {pyglet-2.0.9 → pyglet-2.0.10}/tests/integration/media/test_driver.py +15 -12
  81. pyglet-2.0.10/tests/interactive/screenshots/committed/tests.interactive.image.test_image.test_bmp_loading[rgb_16bpp.bmp].001.png +0 -0
  82. pyglet-2.0.10/tests/interactive/screenshots/committed/tests.interactive.image.test_image.test_bmp_loading[rgb_1bpp.bmp].001.png +0 -0
  83. pyglet-2.0.10/tests/interactive/screenshots/committed/tests.interactive.image.test_image.test_bmp_loading[rgb_24bpp.bmp].001.png +0 -0
  84. pyglet-2.0.10/tests/interactive/screenshots/committed/tests.interactive.image.test_image.test_bmp_loading[rgb_32bpp.bmp].001.png +0 -0
  85. pyglet-2.0.10/tests/interactive/screenshots/committed/tests.interactive.image.test_image.test_bmp_loading[rgb_4bpp.bmp].001.png +0 -0
  86. pyglet-2.0.10/tests/interactive/screenshots/committed/tests.interactive.image.test_image.test_bmp_loading[rgb_8bpp.bmp].001.png +0 -0
  87. pyglet-2.0.10/tests/interactive/screenshots/committed/tests.interactive.image.test_image.test_bmp_loading[rgba_32bpp.bmp].001.png +0 -0
  88. pyglet-2.0.10/tests/interactive/screenshots/committed/tests.interactive.image.test_image.test_buffer_copy.001.png +0 -0
  89. pyglet-2.0.10/tests/interactive/screenshots/committed/tests.interactive.image.test_image.test_buffer_saving.001.png +0 -0
  90. pyglet-2.0.10/tests/interactive/screenshots/committed/tests.interactive.image.test_image.test_checkerboard.001.png +0 -0
  91. pyglet-2.0.10/tests/interactive/screenshots/committed/tests.interactive.image.test_image.test_dds_loading[rgb_dxt1.dds].001.png +0 -0
  92. pyglet-2.0.10/tests/interactive/screenshots/committed/tests.interactive.image.test_image.test_dds_loading[rgba_dxt1.dds].001.png +0 -0
  93. pyglet-2.0.10/tests/interactive/screenshots/committed/tests.interactive.image.test_image.test_dds_loading[rgba_dxt3.dds].001.png +0 -0
  94. pyglet-2.0.10/tests/interactive/screenshots/committed/tests.interactive.image.test_image.test_dds_loading[rgba_dxt5.dds].001.png +0 -0
  95. pyglet-2.0.10/tests/interactive/screenshots/committed/tests.interactive.image.test_image.test_depth_buffer_saving.001.png +0 -0
  96. pyglet-2.0.10/tests/interactive/screenshots/committed/tests.interactive.image.test_image.test_gdkpixbuf2_loading[8bpp.gif].001.png +0 -0
  97. pyglet-2.0.10/tests/interactive/screenshots/committed/tests.interactive.image.test_image.test_gdkpixbuf2_loading[l.png].001.png +0 -0
  98. pyglet-2.0.10/tests/interactive/screenshots/committed/tests.interactive.image.test_image.test_gdkpixbuf2_loading[la.png].001.png +0 -0
  99. pyglet-2.0.10/tests/interactive/screenshots/committed/tests.interactive.image.test_image.test_gdkpixbuf2_loading[rgb.png].001.png +0 -0
  100. pyglet-2.0.10/tests/interactive/screenshots/committed/tests.interactive.image.test_image.test_gdkpixbuf2_loading[rgba.png].001.png +0 -0
  101. pyglet-2.0.10/tests/interactive/screenshots/committed/tests.interactive.image.test_image.test_pil_loading[la.png].001.png +0 -0
  102. pyglet-2.0.10/tests/interactive/screenshots/committed/tests.interactive.image.test_image.test_pil_loading[rgb.png].001.png +0 -0
  103. pyglet-2.0.10/tests/interactive/screenshots/committed/tests.interactive.image.test_image.test_pil_loading[rgba.png].001.png +0 -0
  104. pyglet-2.0.10/tests/interactive/screenshots/committed/tests.interactive.image.test_image.test_pil_saving[l.png].001.png +0 -0
  105. pyglet-2.0.10/tests/interactive/screenshots/committed/tests.interactive.image.test_image.test_pil_saving[la.png].001.png +0 -0
  106. pyglet-2.0.10/tests/interactive/screenshots/committed/tests.interactive.image.test_image.test_pypng_loading[la.png].001.png +0 -0
  107. pyglet-2.0.10/tests/interactive/screenshots/committed/tests.interactive.image.test_image.test_pypng_loading[rgb.png].001.png +0 -0
  108. pyglet-2.0.10/tests/interactive/screenshots/committed/tests.interactive.image.test_image.test_pypng_loading[rgb_8bpp.png].001.png +0 -0
  109. pyglet-2.0.10/tests/interactive/screenshots/committed/tests.interactive.image.test_image.test_pypng_loading[rgb_8bpp_trans.png].001.png +0 -0
  110. pyglet-2.0.10/tests/interactive/screenshots/committed/tests.interactive.image.test_image.test_pypng_loading[rgba.png].001.png +0 -0
  111. pyglet-2.0.10/tests/interactive/screenshots/committed/tests.interactive.image.test_image.test_pypng_saving[l.png].001.png +0 -0
  112. pyglet-2.0.10/tests/interactive/screenshots/committed/tests.interactive.image.test_image.test_pypng_saving[la.png].001.png +0 -0
  113. pyglet-2.0.10/tests/interactive/screenshots/committed/tests.interactive.image.test_image.test_pypng_saving[rgb.png].001.png +0 -0
  114. pyglet-2.0.10/tests/interactive/screenshots/committed/tests.interactive.image.test_image.test_pypng_saving[rgba.png].001.png +0 -0
  115. pyglet-2.0.10/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_bmp_loading[rgb_16bpp.bmp].001.png +0 -0
  116. pyglet-2.0.10/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_bmp_loading[rgb_1bpp.bmp].001.png +0 -0
  117. pyglet-2.0.10/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_bmp_loading[rgb_24bpp.bmp].001.png +0 -0
  118. pyglet-2.0.10/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_bmp_loading[rgb_32bpp.bmp].001.png +0 -0
  119. pyglet-2.0.10/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_bmp_loading[rgb_4bpp.bmp].001.png +0 -0
  120. pyglet-2.0.10/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_bmp_loading[rgb_8bpp.bmp].001.png +0 -0
  121. pyglet-2.0.10/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_bmp_loading[rgba_32bpp.bmp].001.png +0 -0
  122. pyglet-2.0.10/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_buffer_copy.001.png +0 -0
  123. pyglet-2.0.10/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_buffer_saving.001.png +0 -0
  124. pyglet-2.0.10/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_checkerboard.001.png +0 -0
  125. pyglet-2.0.10/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_dds_loading[rgb_dxt1.dds].001.png +0 -0
  126. pyglet-2.0.10/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_dds_loading[rgba_dxt1.dds].001.png +0 -0
  127. pyglet-2.0.10/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_dds_loading[rgba_dxt3.dds].001.png +0 -0
  128. pyglet-2.0.10/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_dds_loading[rgba_dxt5.dds].001.png +0 -0
  129. pyglet-2.0.10/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_depth_buffer_saving.001.png +0 -0
  130. pyglet-2.0.10/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_gdkpixbuf2_loading[8bpp.gif].001.png +0 -0
  131. pyglet-2.0.10/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_gdkpixbuf2_loading[l.png].001.png +0 -0
  132. pyglet-2.0.10/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_gdkpixbuf2_loading[la.png].001.png +0 -0
  133. pyglet-2.0.10/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_gdkpixbuf2_loading[rgb.png].001.png +0 -0
  134. pyglet-2.0.10/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_gdkpixbuf2_loading[rgba.png].001.png +0 -0
  135. pyglet-2.0.10/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_pil_loading[la.png].001.png +0 -0
  136. pyglet-2.0.10/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_pil_loading[rgb.png].001.png +0 -0
  137. pyglet-2.0.10/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_pil_loading[rgba.png].001.png +0 -0
  138. pyglet-2.0.10/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_pil_saving[l.png].001.png +0 -0
  139. pyglet-2.0.10/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_pil_saving[la.png].001.png +0 -0
  140. pyglet-2.0.10/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_pil_saving[rgb.png].001.png +0 -0
  141. pyglet-2.0.10/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_pil_saving[rgba.png].001.png +0 -0
  142. pyglet-2.0.10/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_pypng_loading[la.png].001.png +0 -0
  143. pyglet-2.0.10/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_pypng_loading[rgb.png].001.png +0 -0
  144. pyglet-2.0.10/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_pypng_loading[rgb_8bpp.png].001.png +0 -0
  145. pyglet-2.0.10/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_pypng_loading[rgb_8bpp_trans.png].001.png +0 -0
  146. pyglet-2.0.10/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_pypng_loading[rgba.png].001.png +0 -0
  147. pyglet-2.0.10/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_pypng_saving[l.png].001.png +0 -0
  148. pyglet-2.0.10/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_pypng_saving[la.png].001.png +0 -0
  149. pyglet-2.0.10/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_pypng_saving[rgb.png].001.png +0 -0
  150. pyglet-2.0.10/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_pypng_saving[rgba.png].001.png +0 -0
  151. pyglet-2.0.10/tests/interactive/shapes/test_shapes.py +179 -0
  152. {pyglet-2.0.9 → pyglet-2.0.10}/tests/interactive/text/test_inline_elements.py +20 -17
  153. {pyglet-2.0.9 → pyglet-2.0.10}/tests/interactive/text/test_inline_elements_style_change.py +15 -14
  154. {pyglet-2.0.9 → pyglet-2.0.10}/tests/interactive/text/test_multiline_wrap.py +18 -18
  155. {pyglet-2.0.9 → pyglet-2.0.10}/tests/interactive/text/test_plain.py +5 -5
  156. {pyglet-2.0.9 → pyglet-2.0.10}/tests/interactive/text/test_style.py +5 -5
  157. {pyglet-2.0.9 → pyglet-2.0.10}/tests/unit/conftest.py +5 -0
  158. {pyglet-2.0.9 → pyglet-2.0.10}/tests/unit/shapes/test_shapes.py +24 -2
  159. {pyglet-2.0.9 → pyglet-2.0.10}/tests/unit/test_events.py +31 -21
  160. {pyglet-2.0.9 → pyglet-2.0.10}/tools/gencontrollerdb.py +3 -3
  161. pyglet-2.0.9/pyglet/libs/win32/com.py +0 -340
  162. pyglet-2.0.9/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_bmp_loading[rgb_24bpp.bmp].001.png +0 -0
  163. pyglet-2.0.9/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_bmp_loading[rgb_32bpp.bmp].001.png +0 -0
  164. pyglet-2.0.9/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_bmp_loading[rgb_4bpp.bmp].001.png +0 -0
  165. pyglet-2.0.9/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_bmp_loading[rgb_8bpp.bmp].001.png +0 -0
  166. pyglet-2.0.9/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_bmp_loading[rgba_32bpp.bmp].001.png +0 -0
  167. pyglet-2.0.9/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_checkerboard.001.png +0 -0
  168. pyglet-2.0.9/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_dds_loading[rgb_dxt1.dds].001.png +0 -0
  169. pyglet-2.0.9/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_dds_loading[rgba_dxt1.dds].001.png +0 -0
  170. pyglet-2.0.9/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_dds_loading[rgba_dxt3.dds].001.png +0 -0
  171. pyglet-2.0.9/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_dds_loading[rgba_dxt5.dds].001.png +0 -0
  172. pyglet-2.0.9/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_gdkpixbuf2_loading[8bpp.gif].001.png +0 -0
  173. pyglet-2.0.9/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_gdkpixbuf2_loading[l.png].001.png +0 -0
  174. pyglet-2.0.9/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_gdkpixbuf2_loading[la.png].001.png +0 -0
  175. pyglet-2.0.9/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_gdkpixbuf2_loading[rgb.png].001.png +0 -0
  176. pyglet-2.0.9/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_gdkpixbuf2_loading[rgba.png].001.png +0 -0
  177. pyglet-2.0.9/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_pil_loading[la.png].001.png +0 -0
  178. pyglet-2.0.9/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_pil_loading[rgb.png].001.png +0 -0
  179. pyglet-2.0.9/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_pil_loading[rgba.png].001.png +0 -0
  180. pyglet-2.0.9/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_pypng_loading[la.png].001.png +0 -0
  181. pyglet-2.0.9/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_pypng_loading[rgba.png].001.png +0 -0
  182. {pyglet-2.0.9 → pyglet-2.0.10}/.coveragerc +0 -0
  183. {pyglet-2.0.9 → pyglet-2.0.10}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
  184. {pyglet-2.0.9 → pyglet-2.0.10}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
  185. {pyglet-2.0.9 → pyglet-2.0.10}/.github/ISSUE_TEMPLATE/questions--or-other.md +0 -0
  186. {pyglet-2.0.9 → pyglet-2.0.10}/.github/workflows/codeql.yml +0 -0
  187. {pyglet-2.0.9 → pyglet-2.0.10}/.gitignore +0 -0
  188. {pyglet-2.0.9 → pyglet-2.0.10}/LICENSE +0 -0
  189. {pyglet-2.0.9 → pyglet-2.0.10}/MANIFEST.in +0 -0
  190. {pyglet-2.0.9 → pyglet-2.0.10}/contrib/aseprite_codec/README +0 -0
  191. {pyglet-2.0.9 → pyglet-2.0.10}/contrib/aseprite_codec/asedemo.py +0 -0
  192. {pyglet-2.0.9 → pyglet-2.0.10}/contrib/aseprite_codec/aseprite.py +0 -0
  193. {pyglet-2.0.9 → pyglet-2.0.10}/contrib/aseprite_codec/running.ase +0 -0
  194. {pyglet-2.0.9 → pyglet-2.0.10}/contrib/logo3d/logo3d.jpg +0 -0
  195. {pyglet-2.0.9 → pyglet-2.0.10}/contrib/logo3d/logo3d.obj.zip +0 -0
  196. {pyglet-2.0.9 → pyglet-2.0.10}/contrib/logo3d/logo3d.wings +0 -0
  197. {pyglet-2.0.9 → pyglet-2.0.10}/contrib/scenemanager.py +0 -0
  198. {pyglet-2.0.9 → pyglet-2.0.10}/contrib/toys/follow_mouse.py +0 -0
  199. {pyglet-2.0.9 → pyglet-2.0.10}/doc/Makefile +0 -0
  200. {pyglet-2.0.9 → pyglet-2.0.10}/doc/README.md +0 -0
  201. {pyglet-2.0.9 → pyglet-2.0.10}/doc/_static/favicon.ico +0 -0
  202. {pyglet-2.0.9 → pyglet-2.0.10}/doc/_static/logo.png +0 -0
  203. {pyglet-2.0.9 → pyglet-2.0.10}/doc/_static/logo5.svg +0 -0
  204. {pyglet-2.0.9 → pyglet-2.0.10}/doc/_static/relatedlogo.png +0 -0
  205. {pyglet-2.0.9 → pyglet-2.0.10}/doc/external_resources.rst +0 -0
  206. {pyglet-2.0.9 → pyglet-2.0.10}/doc/index.rst +0 -0
  207. {pyglet-2.0.9 → pyglet-2.0.10}/doc/internal/contributing.rst +0 -0
  208. {pyglet-2.0.9 → pyglet-2.0.10}/doc/internal/dist.rst +0 -0
  209. {pyglet-2.0.9 → pyglet-2.0.10}/doc/internal/doc.rst +0 -0
  210. {pyglet-2.0.9 → pyglet-2.0.10}/doc/internal/generated.rst +0 -0
  211. {pyglet-2.0.9 → pyglet-2.0.10}/doc/internal/gl.rst +0 -0
  212. {pyglet-2.0.9 → pyglet-2.0.10}/doc/internal/media_logging_manual.rst +0 -0
  213. {pyglet-2.0.9 → pyglet-2.0.10}/doc/internal/media_manual.rst +0 -0
  214. {pyglet-2.0.9 → pyglet-2.0.10}/doc/internal/testing.rst +0 -0
  215. {pyglet-2.0.9 → pyglet-2.0.10}/doc/internal/virtualenv.rst +0 -0
  216. {pyglet-2.0.9 → pyglet-2.0.10}/doc/internal/wraptypes-class.svg +0 -0
  217. {pyglet-2.0.9 → pyglet-2.0.10}/doc/internal/wraptypes.rst +0 -0
  218. {pyglet-2.0.9 → pyglet-2.0.10}/doc/make.bat +0 -0
  219. {pyglet-2.0.9 → pyglet-2.0.10}/doc/modules/app.rst +0 -0
  220. {pyglet-2.0.9 → pyglet-2.0.10}/doc/modules/canvas.rst +0 -0
  221. {pyglet-2.0.9 → pyglet-2.0.10}/doc/modules/clock.rst +0 -0
  222. {pyglet-2.0.9 → pyglet-2.0.10}/doc/modules/event.rst +0 -0
  223. {pyglet-2.0.9 → pyglet-2.0.10}/doc/modules/font.rst +0 -0
  224. {pyglet-2.0.9 → pyglet-2.0.10}/doc/modules/gl.rst +0 -0
  225. {pyglet-2.0.9 → pyglet-2.0.10}/doc/modules/graphics/allocation.rst +0 -0
  226. {pyglet-2.0.9 → pyglet-2.0.10}/doc/modules/graphics/index.rst +0 -0
  227. {pyglet-2.0.9 → pyglet-2.0.10}/doc/modules/graphics/shader.rst +0 -0
  228. {pyglet-2.0.9 → pyglet-2.0.10}/doc/modules/graphics/vertexbuffer.rst +0 -0
  229. {pyglet-2.0.9 → pyglet-2.0.10}/doc/modules/graphics/vertexdomain.rst +0 -0
  230. {pyglet-2.0.9 → pyglet-2.0.10}/doc/modules/gui.rst +0 -0
  231. {pyglet-2.0.9 → pyglet-2.0.10}/doc/modules/image/animation.rst +0 -0
  232. {pyglet-2.0.9 → pyglet-2.0.10}/doc/modules/image/atlas.rst +0 -0
  233. {pyglet-2.0.9 → pyglet-2.0.10}/doc/modules/image/index.rst +0 -0
  234. {pyglet-2.0.9 → pyglet-2.0.10}/doc/modules/info.rst +0 -0
  235. {pyglet-2.0.9 → pyglet-2.0.10}/doc/modules/input.rst +0 -0
  236. {pyglet-2.0.9 → pyglet-2.0.10}/doc/modules/math.rst +0 -0
  237. {pyglet-2.0.9 → pyglet-2.0.10}/doc/modules/media.rst +0 -0
  238. {pyglet-2.0.9 → pyglet-2.0.10}/doc/modules/media_synthesis.rst +0 -0
  239. {pyglet-2.0.9 → pyglet-2.0.10}/doc/modules/pyglet.rst +0 -0
  240. {pyglet-2.0.9 → pyglet-2.0.10}/doc/modules/resource.rst +0 -0
  241. {pyglet-2.0.9 → pyglet-2.0.10}/doc/modules/sprite.rst +0 -0
  242. {pyglet-2.0.9 → pyglet-2.0.10}/doc/modules/text/caret.rst +0 -0
  243. {pyglet-2.0.9 → pyglet-2.0.10}/doc/modules/text/document.rst +0 -0
  244. {pyglet-2.0.9 → pyglet-2.0.10}/doc/modules/text/index.rst +0 -0
  245. {pyglet-2.0.9 → pyglet-2.0.10}/doc/modules/text/layout.rst +0 -0
  246. {pyglet-2.0.9 → pyglet-2.0.10}/doc/modules/window.rst +0 -0
  247. {pyglet-2.0.9 → pyglet-2.0.10}/doc/modules/window_mouse.rst +0 -0
  248. {pyglet-2.0.9 → pyglet-2.0.10}/doc/programming_guide/context.rst +0 -0
  249. {pyglet-2.0.9 → pyglet-2.0.10}/doc/programming_guide/debug.rst +0 -0
  250. {pyglet-2.0.9 → pyglet-2.0.10}/doc/programming_guide/events.rst +0 -0
  251. {pyglet-2.0.9 → pyglet-2.0.10}/doc/programming_guide/examplegame.rst +0 -0
  252. {pyglet-2.0.9 → pyglet-2.0.10}/doc/programming_guide/gl.rst +0 -0
  253. {pyglet-2.0.9 → pyglet-2.0.10}/doc/programming_guide/graphics.rst +0 -0
  254. {pyglet-2.0.9 → pyglet-2.0.10}/doc/programming_guide/image.rst +0 -0
  255. {pyglet-2.0.9 → pyglet-2.0.10}/doc/programming_guide/img/abstract_image.png +0 -0
  256. {pyglet-2.0.9 → pyglet-2.0.10}/doc/programming_guide/img/abstract_image.svg +0 -0
  257. {pyglet-2.0.9 → pyglet-2.0.10}/doc/programming_guide/img/buffer_image.png +0 -0
  258. {pyglet-2.0.9 → pyglet-2.0.10}/doc/programming_guide/img/buffer_image.svg +0 -0
  259. {pyglet-2.0.9 → pyglet-2.0.10}/doc/programming_guide/img/context_flow.png +0 -0
  260. {pyglet-2.0.9 → pyglet-2.0.10}/doc/programming_guide/img/context_flow.svg +0 -0
  261. {pyglet-2.0.9 → pyglet-2.0.10}/doc/programming_guide/img/cursor_mac_crosshair.png +0 -0
  262. {pyglet-2.0.9 → pyglet-2.0.10}/doc/programming_guide/img/cursor_mac_default.png +0 -0
  263. {pyglet-2.0.9 → pyglet-2.0.10}/doc/programming_guide/img/cursor_mac_hand.png +0 -0
  264. {pyglet-2.0.9 → pyglet-2.0.10}/doc/programming_guide/img/cursor_mac_no.png +0 -0
  265. {pyglet-2.0.9 → pyglet-2.0.10}/doc/programming_guide/img/cursor_mac_size_down.png +0 -0
  266. {pyglet-2.0.9 → pyglet-2.0.10}/doc/programming_guide/img/cursor_mac_size_left.png +0 -0
  267. {pyglet-2.0.9 → pyglet-2.0.10}/doc/programming_guide/img/cursor_mac_size_left_right.png +0 -0
  268. {pyglet-2.0.9 → pyglet-2.0.10}/doc/programming_guide/img/cursor_mac_size_right.png +0 -0
  269. {pyglet-2.0.9 → pyglet-2.0.10}/doc/programming_guide/img/cursor_mac_size_up.png +0 -0
  270. {pyglet-2.0.9 → pyglet-2.0.10}/doc/programming_guide/img/cursor_mac_size_up_down.png +0 -0
  271. {pyglet-2.0.9 → pyglet-2.0.10}/doc/programming_guide/img/cursor_mac_text.png +0 -0
  272. {pyglet-2.0.9 → pyglet-2.0.10}/doc/programming_guide/img/cursor_mac_wait.png +0 -0
  273. {pyglet-2.0.9 → pyglet-2.0.10}/doc/programming_guide/img/cursor_win_crosshair.png +0 -0
  274. {pyglet-2.0.9 → pyglet-2.0.10}/doc/programming_guide/img/cursor_win_default.png +0 -0
  275. {pyglet-2.0.9 → pyglet-2.0.10}/doc/programming_guide/img/cursor_win_hand.png +0 -0
  276. {pyglet-2.0.9 → pyglet-2.0.10}/doc/programming_guide/img/cursor_win_help.png +0 -0
  277. {pyglet-2.0.9 → pyglet-2.0.10}/doc/programming_guide/img/cursor_win_no.png +0 -0
  278. {pyglet-2.0.9 → pyglet-2.0.10}/doc/programming_guide/img/cursor_win_size.png +0 -0
  279. {pyglet-2.0.9 → pyglet-2.0.10}/doc/programming_guide/img/cursor_win_size_left_right.png +0 -0
  280. {pyglet-2.0.9 → pyglet-2.0.10}/doc/programming_guide/img/cursor_win_size_nesw.png +0 -0
  281. {pyglet-2.0.9 → pyglet-2.0.10}/doc/programming_guide/img/cursor_win_size_nwse.png +0 -0
  282. {pyglet-2.0.9 → pyglet-2.0.10}/doc/programming_guide/img/cursor_win_size_up_down.png +0 -0
  283. {pyglet-2.0.9 → pyglet-2.0.10}/doc/programming_guide/img/cursor_win_text.png +0 -0
  284. {pyglet-2.0.9 → pyglet-2.0.10}/doc/programming_guide/img/cursor_win_wait.png +0 -0
  285. {pyglet-2.0.9 → pyglet-2.0.10}/doc/programming_guide/img/cursor_win_wait_arrow.png +0 -0
  286. {pyglet-2.0.9 → pyglet-2.0.10}/doc/programming_guide/img/explosion.png +0 -0
  287. {pyglet-2.0.9 → pyglet-2.0.10}/doc/programming_guide/img/font_metrics.png +0 -0
  288. {pyglet-2.0.9 → pyglet-2.0.10}/doc/programming_guide/img/font_metrics.svg +0 -0
  289. {pyglet-2.0.9 → pyglet-2.0.10}/doc/programming_guide/img/image_classes.png +0 -0
  290. {pyglet-2.0.9 → pyglet-2.0.10}/doc/programming_guide/img/image_classes.svg +0 -0
  291. {pyglet-2.0.9 → pyglet-2.0.10}/doc/programming_guide/img/image_grid.png +0 -0
  292. {pyglet-2.0.9 → pyglet-2.0.10}/doc/programming_guide/img/image_grid.svg +0 -0
  293. {pyglet-2.0.9 → pyglet-2.0.10}/doc/programming_guide/img/image_sequence.png +0 -0
  294. {pyglet-2.0.9 → pyglet-2.0.10}/doc/programming_guide/img/image_sequence.svg +0 -0
  295. {pyglet-2.0.9 → pyglet-2.0.10}/doc/programming_guide/img/mouse_coordinates.png +0 -0
  296. {pyglet-2.0.9 → pyglet-2.0.10}/doc/programming_guide/img/mouse_coordinates.svg +0 -0
  297. {pyglet-2.0.9 → pyglet-2.0.10}/doc/programming_guide/img/screens.png +0 -0
  298. {pyglet-2.0.9 → pyglet-2.0.10}/doc/programming_guide/img/screens.svg +0 -0
  299. {pyglet-2.0.9 → pyglet-2.0.10}/doc/programming_guide/img/text_classes.png +0 -0
  300. {pyglet-2.0.9 → pyglet-2.0.10}/doc/programming_guide/img/text_classes.svg +0 -0
  301. {pyglet-2.0.9 → pyglet-2.0.10}/doc/programming_guide/img/window_location.png +0 -0
  302. {pyglet-2.0.9 → pyglet-2.0.10}/doc/programming_guide/img/window_location.svg +0 -0
  303. {pyglet-2.0.9 → pyglet-2.0.10}/doc/programming_guide/img/window_osx_borderless.png +0 -0
  304. {pyglet-2.0.9 → pyglet-2.0.10}/doc/programming_guide/img/window_osx_default.png +0 -0
  305. {pyglet-2.0.9 → pyglet-2.0.10}/doc/programming_guide/img/window_osx_dialog.png +0 -0
  306. {pyglet-2.0.9 → pyglet-2.0.10}/doc/programming_guide/img/window_osx_tool.png +0 -0
  307. {pyglet-2.0.9 → pyglet-2.0.10}/doc/programming_guide/img/window_xp_default.png +0 -0
  308. {pyglet-2.0.9 → pyglet-2.0.10}/doc/programming_guide/img/window_xp_dialog.png +0 -0
  309. {pyglet-2.0.9 → pyglet-2.0.10}/doc/programming_guide/img/window_xp_overlay.png +0 -0
  310. {pyglet-2.0.9 → pyglet-2.0.10}/doc/programming_guide/img/window_xp_tool.png +0 -0
  311. {pyglet-2.0.9 → pyglet-2.0.10}/doc/programming_guide/img/window_xp_transparent.png +0 -0
  312. {pyglet-2.0.9 → pyglet-2.0.10}/doc/programming_guide/input.rst +0 -0
  313. {pyglet-2.0.9 → pyglet-2.0.10}/doc/programming_guide/installation.rst +0 -0
  314. {pyglet-2.0.9 → pyglet-2.0.10}/doc/programming_guide/math.rst +0 -0
  315. {pyglet-2.0.9 → pyglet-2.0.10}/doc/programming_guide/migration.rst +0 -0
  316. {pyglet-2.0.9 → pyglet-2.0.10}/doc/programming_guide/mouse.rst +0 -0
  317. {pyglet-2.0.9 → pyglet-2.0.10}/doc/programming_guide/options.rst +0 -0
  318. {pyglet-2.0.9 → pyglet-2.0.10}/doc/programming_guide/resources.rst +0 -0
  319. {pyglet-2.0.9 → pyglet-2.0.10}/doc/programming_guide/shapes.rst +0 -0
  320. {pyglet-2.0.9 → pyglet-2.0.10}/doc/programming_guide/text.rst +0 -0
  321. {pyglet-2.0.9 → pyglet-2.0.10}/doc/programming_guide/time.rst +0 -0
  322. {pyglet-2.0.9 → pyglet-2.0.10}/doc/programming_guide/windowing.rst +0 -0
  323. {pyglet-2.0.9 → pyglet-2.0.10}/doc/requirements.txt +0 -0
  324. {pyglet-2.0.9 → pyglet-2.0.10}/examples/events/events_key_state_handler.py +0 -0
  325. {pyglet-2.0.9 → pyglet-2.0.10}/examples/events/register_event_type.py +0 -0
  326. {pyglet-2.0.9 → pyglet-2.0.10}/examples/events/window_events.py +0 -0
  327. {pyglet-2.0.9 → pyglet-2.0.10}/examples/events/window_platform_event.py +0 -0
  328. {pyglet-2.0.9 → pyglet-2.0.10}/examples/file_dialog.py +0 -0
  329. {pyglet-2.0.9 → pyglet-2.0.10}/examples/game/resources/asteroid.png +0 -0
  330. {pyglet-2.0.9 → pyglet-2.0.10}/examples/game/resources/bullet.png +0 -0
  331. {pyglet-2.0.9 → pyglet-2.0.10}/examples/game/resources/bullet.wav +0 -0
  332. {pyglet-2.0.9 → pyglet-2.0.10}/examples/game/resources/engine_flame.png +0 -0
  333. {pyglet-2.0.9 → pyglet-2.0.10}/examples/game/resources/player.png +0 -0
  334. {pyglet-2.0.9 → pyglet-2.0.10}/examples/game/version1/asteroid.py +0 -0
  335. {pyglet-2.0.9 → pyglet-2.0.10}/examples/game/version1/game/__init__.py +0 -0
  336. {pyglet-2.0.9 → pyglet-2.0.10}/examples/game/version1/game/load.py +0 -0
  337. {pyglet-2.0.9 → pyglet-2.0.10}/examples/game/version1/game/resources.py +0 -0
  338. {pyglet-2.0.9 → pyglet-2.0.10}/examples/game/version2/asteroid.py +0 -0
  339. {pyglet-2.0.9 → pyglet-2.0.10}/examples/game/version2/game/__init__.py +0 -0
  340. {pyglet-2.0.9 → pyglet-2.0.10}/examples/game/version2/game/load.py +0 -0
  341. {pyglet-2.0.9 → pyglet-2.0.10}/examples/game/version2/game/physicalobject.py +0 -0
  342. {pyglet-2.0.9 → pyglet-2.0.10}/examples/game/version2/game/player.py +0 -0
  343. {pyglet-2.0.9 → pyglet-2.0.10}/examples/game/version2/game/resources.py +0 -0
  344. {pyglet-2.0.9 → pyglet-2.0.10}/examples/game/version3/asteroid.py +0 -0
  345. {pyglet-2.0.9 → pyglet-2.0.10}/examples/game/version3/game/__init__.py +0 -0
  346. {pyglet-2.0.9 → pyglet-2.0.10}/examples/game/version3/game/load.py +0 -0
  347. {pyglet-2.0.9 → pyglet-2.0.10}/examples/game/version3/game/physicalobject.py +0 -0
  348. {pyglet-2.0.9 → pyglet-2.0.10}/examples/game/version3/game/player.py +0 -0
  349. {pyglet-2.0.9 → pyglet-2.0.10}/examples/game/version3/game/resources.py +0 -0
  350. {pyglet-2.0.9 → pyglet-2.0.10}/examples/game/version3/game/util.py +0 -0
  351. {pyglet-2.0.9 → pyglet-2.0.10}/examples/game/version4/asteroid.py +0 -0
  352. {pyglet-2.0.9 → pyglet-2.0.10}/examples/game/version4/game/__init__.py +0 -0
  353. {pyglet-2.0.9 → pyglet-2.0.10}/examples/game/version4/game/asteroid.py +0 -0
  354. {pyglet-2.0.9 → pyglet-2.0.10}/examples/game/version4/game/bullet.py +0 -0
  355. {pyglet-2.0.9 → pyglet-2.0.10}/examples/game/version4/game/load.py +0 -0
  356. {pyglet-2.0.9 → pyglet-2.0.10}/examples/game/version4/game/physicalobject.py +0 -0
  357. {pyglet-2.0.9 → pyglet-2.0.10}/examples/game/version4/game/player.py +0 -0
  358. {pyglet-2.0.9 → pyglet-2.0.10}/examples/game/version4/game/resources.py +0 -0
  359. {pyglet-2.0.9 → pyglet-2.0.10}/examples/game/version4/game/util.py +0 -0
  360. {pyglet-2.0.9 → pyglet-2.0.10}/examples/game/version5/asteroid.py +0 -0
  361. {pyglet-2.0.9 → pyglet-2.0.10}/examples/game/version5/game/__init__.py +0 -0
  362. {pyglet-2.0.9 → pyglet-2.0.10}/examples/game/version5/game/asteroid.py +0 -0
  363. {pyglet-2.0.9 → pyglet-2.0.10}/examples/game/version5/game/bullet.py +0 -0
  364. {pyglet-2.0.9 → pyglet-2.0.10}/examples/game/version5/game/load.py +0 -0
  365. {pyglet-2.0.9 → pyglet-2.0.10}/examples/game/version5/game/physicalobject.py +0 -0
  366. {pyglet-2.0.9 → pyglet-2.0.10}/examples/game/version5/game/player.py +0 -0
  367. {pyglet-2.0.9 → pyglet-2.0.10}/examples/game/version5/game/resources.py +0 -0
  368. {pyglet-2.0.9 → pyglet-2.0.10}/examples/game/version5/game/util.py +0 -0
  369. {pyglet-2.0.9 → pyglet-2.0.10}/examples/graphics/image_convert.py +0 -0
  370. {pyglet-2.0.9 → pyglet-2.0.10}/examples/graphics/image_display.py +0 -0
  371. {pyglet-2.0.9 → pyglet-2.0.10}/examples/gui/bar.png +0 -0
  372. {pyglet-2.0.9 → pyglet-2.0.10}/examples/gui/button_down.png +0 -0
  373. {pyglet-2.0.9 → pyglet-2.0.10}/examples/gui/button_hover.png +0 -0
  374. {pyglet-2.0.9 → pyglet-2.0.10}/examples/gui/button_up.png +0 -0
  375. {pyglet-2.0.9 → pyglet-2.0.10}/examples/gui/knob.png +0 -0
  376. {pyglet-2.0.9 → pyglet-2.0.10}/examples/gui/widgets.py +0 -0
  377. {pyglet-2.0.9 → pyglet-2.0.10}/examples/hello_world.py +0 -0
  378. {pyglet-2.0.9 → pyglet-2.0.10}/examples/input/apple_remote.py +0 -0
  379. {pyglet-2.0.9 → pyglet-2.0.10}/examples/input/controller.py +0 -0
  380. {pyglet-2.0.9 → pyglet-2.0.10}/examples/input/input.py +0 -0
  381. {pyglet-2.0.9 → pyglet-2.0.10}/examples/input/joystick.py +0 -0
  382. {pyglet-2.0.9 → pyglet-2.0.10}/examples/input/tablet.py +0 -0
  383. {pyglet-2.0.9 → pyglet-2.0.10}/examples/media/media_player.py +0 -0
  384. {pyglet-2.0.9 → pyglet-2.0.10}/examples/media/noisy/README +0 -0
  385. {pyglet-2.0.9 → pyglet-2.0.10}/examples/media/noisy/ball.png +0 -0
  386. {pyglet-2.0.9 → pyglet-2.0.10}/examples/media/noisy/ball.wav +0 -0
  387. {pyglet-2.0.9 → pyglet-2.0.10}/examples/media/noisy/noisy.py +0 -0
  388. {pyglet-2.0.9 → pyglet-2.0.10}/examples/media/synthesizer.py +0 -0
  389. {pyglet-2.0.9 → pyglet-2.0.10}/examples/media/video.py +0 -0
  390. {pyglet-2.0.9 → pyglet-2.0.10}/examples/model/box.mtl +0 -0
  391. {pyglet-2.0.9 → pyglet-2.0.10}/examples/model/box.obj +0 -0
  392. {pyglet-2.0.9 → pyglet-2.0.10}/examples/model/logo3d.mtl +0 -0
  393. {pyglet-2.0.9 → pyglet-2.0.10}/examples/model/logo3d.obj +0 -0
  394. {pyglet-2.0.9 → pyglet-2.0.10}/examples/model/model.py +0 -0
  395. {pyglet-2.0.9 → pyglet-2.0.10}/examples/model/pyglet.png +0 -0
  396. {pyglet-2.0.9 → pyglet-2.0.10}/examples/opengl/compute_shader.py +0 -0
  397. {pyglet-2.0.9 → pyglet-2.0.10}/examples/opengl/egl_context.py +0 -0
  398. {pyglet-2.0.9 → pyglet-2.0.10}/examples/opengl/opengl.py +0 -0
  399. {pyglet-2.0.9 → pyglet-2.0.10}/examples/opengl/opengl_context.py +0 -0
  400. {pyglet-2.0.9 → pyglet-2.0.10}/examples/opengl/opengl_core.py +0 -0
  401. {pyglet-2.0.9 → pyglet-2.0.10}/examples/opengl/opengl_scissor.py +0 -0
  402. {pyglet-2.0.9 → pyglet-2.0.10}/examples/opengl/opengl_shader.py +0 -0
  403. {pyglet-2.0.9 → pyglet-2.0.10}/examples/opengl/pyglet.png +0 -0
  404. {pyglet-2.0.9 → pyglet-2.0.10}/examples/programming_guide/animation.py +0 -0
  405. {pyglet-2.0.9 → pyglet-2.0.10}/examples/programming_guide/dinosaur.gif +0 -0
  406. {pyglet-2.0.9 → pyglet-2.0.10}/examples/programming_guide/events.py +0 -0
  407. {pyglet-2.0.9 → pyglet-2.0.10}/examples/programming_guide/hello_world.py +0 -0
  408. {pyglet-2.0.9 → pyglet-2.0.10}/examples/programming_guide/image_viewer.py +0 -0
  409. {pyglet-2.0.9 → pyglet-2.0.10}/examples/programming_guide/kitten.jpg +0 -0
  410. {pyglet-2.0.9 → pyglet-2.0.10}/examples/programming_guide/window_subclass.py +0 -0
  411. {pyglet-2.0.9 → pyglet-2.0.10}/examples/resources/kitten.jpg +0 -0
  412. {pyglet-2.0.9 → pyglet-2.0.10}/examples/resources/pyglet.png +0 -0
  413. {pyglet-2.0.9 → pyglet-2.0.10}/examples/sprite/depth_sprite.py +0 -0
  414. {pyglet-2.0.9 → pyglet-2.0.10}/examples/sprite/display_sprite.py +0 -0
  415. {pyglet-2.0.9 → pyglet-2.0.10}/examples/sprite/multi_texture_sprite.py +0 -0
  416. {pyglet-2.0.9 → pyglet-2.0.10}/examples/sprite/sprite_batching.py +0 -0
  417. {pyglet-2.0.9 → pyglet-2.0.10}/examples/text/advanced_font.py +0 -0
  418. {pyglet-2.0.9 → pyglet-2.0.10}/examples/text/font_comparison.py +0 -0
  419. {pyglet-2.0.9 → pyglet-2.0.10}/examples/text/html_label.py +0 -0
  420. {pyglet-2.0.9 → pyglet-2.0.10}/examples/text/pyglet.png +0 -0
  421. {pyglet-2.0.9 → pyglet-2.0.10}/examples/text/text_input.py +0 -0
  422. {pyglet-2.0.9 → pyglet-2.0.10}/examples/timer.py +0 -0
  423. {pyglet-2.0.9 → pyglet-2.0.10}/examples/window/camera.py +0 -0
  424. {pyglet-2.0.9 → pyglet-2.0.10}/examples/window/camera_group.py +0 -0
  425. {pyglet-2.0.9 → pyglet-2.0.10}/examples/window/multiple_windows.py +0 -0
  426. {pyglet-2.0.9 → pyglet-2.0.10}/examples/window/overlay_window.py +0 -0
  427. {pyglet-2.0.9 → pyglet-2.0.10}/examples/window/transparent_window.py +0 -0
  428. {pyglet-2.0.9 → pyglet-2.0.10}/experimental/dist_field/README +0 -0
  429. {pyglet-2.0.9 → pyglet-2.0.10}/experimental/dist_field/genfield.py +0 -0
  430. {pyglet-2.0.9 → pyglet-2.0.10}/experimental/dist_field/py.df.png +0 -0
  431. {pyglet-2.0.9 → pyglet-2.0.10}/experimental/dist_field/py.png +0 -0
  432. {pyglet-2.0.9 → pyglet-2.0.10}/experimental/dist_field/renderfield.py +0 -0
  433. {pyglet-2.0.9 → pyglet-2.0.10}/experimental/flaccodec.py +0 -0
  434. {pyglet-2.0.9 → pyglet-2.0.10}/experimental/hello_world.svg +0 -0
  435. {pyglet-2.0.9 → pyglet-2.0.10}/experimental/spritebenchmark.py +0 -0
  436. {pyglet-2.0.9 → pyglet-2.0.10}/experimental/svg_test.py +0 -0
  437. {pyglet-2.0.9 → pyglet-2.0.10}/experimental/wayland/gbm_egl_context.py +0 -0
  438. {pyglet-2.0.9 → pyglet-2.0.10}/experimental/win32priority.py +0 -0
  439. {pyglet-2.0.9 → pyglet-2.0.10}/make.py +0 -0
  440. {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/app/__init__.py +0 -0
  441. {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/app/base.py +0 -0
  442. {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/app/cocoa.py +0 -0
  443. {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/app/win32.py +0 -0
  444. {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/app/xlib.py +0 -0
  445. {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/canvas/__init__.py +0 -0
  446. {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/canvas/base.py +0 -0
  447. {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/canvas/cocoa.py +0 -0
  448. {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/canvas/headless.py +0 -0
  449. {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/canvas/win32.py +0 -0
  450. {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/canvas/xlib.py +0 -0
  451. {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/canvas/xlib_vidmoderestore.py +0 -0
  452. {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/clock.py +0 -0
  453. {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/customtypes.py +0 -0
  454. {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/event.py +0 -0
  455. {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/extlibs/__init__.py +0 -0
  456. {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/extlibs/png.py +0 -0
  457. {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/font/__init__.py +0 -0
  458. {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/font/base.py +0 -0
  459. {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/font/fontconfig.py +0 -0
  460. {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/font/freetype.py +0 -0
  461. {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/font/freetype_lib.py +0 -0
  462. {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/font/quartz.py +0 -0
  463. {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/font/ttf.py +0 -0
  464. {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/font/user.py +0 -0
  465. {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/font/win32query.py +0 -0
  466. {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/gl/__init__.py +0 -0
  467. {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/gl/agl.py +0 -0
  468. {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/gl/cocoa.py +0 -0
  469. {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/gl/gl.py +0 -0
  470. {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/gl/gl_compat.py +0 -0
  471. {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/gl/glx.py +0 -0
  472. {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/gl/glx_info.py +0 -0
  473. {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/gl/glxext_arb.py +0 -0
  474. {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/gl/glxext_mesa.py +0 -0
  475. {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/gl/glxext_nv.py +0 -0
  476. {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/gl/headless.py +0 -0
  477. {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/gl/lib_agl.py +0 -0
  478. {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/gl/lib_glx.py +0 -0
  479. {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/gl/lib_wgl.py +0 -0
  480. {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/gl/wgl.py +0 -0
  481. {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/gl/wgl_info.py +0 -0
  482. {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/gl/wglext_arb.py +0 -0
  483. {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/gl/wglext_nv.py +0 -0
  484. {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/gl/xlib.py +0 -0
  485. {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/graphics/allocation.py +0 -0
  486. {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/gui/__init__.py +0 -0
  487. {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/gui/frame.py +0 -0
  488. {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/image/animation.py +0 -0
  489. {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/image/atlas.py +0 -0
  490. {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/image/codecs/__init__.py +0 -0
  491. {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/image/codecs/bmp.py +0 -0
  492. {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/image/codecs/dds.py +0 -0
  493. {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/image/codecs/gdiplus.py +0 -0
  494. {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/image/codecs/gdkpixbuf2.py +0 -0
  495. {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/image/codecs/gif.py +0 -0
  496. {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/image/codecs/pil.py +0 -0
  497. {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/image/codecs/png.py +0 -0
  498. {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/image/codecs/quartz.py +0 -0
  499. {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/image/codecs/s3tc.py +0 -0
  500. {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/info.py +0 -0
  501. {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/input/__init__.py +0 -0
  502. {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/input/base.py +0 -0
  503. {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/input/controller.py +0 -0
  504. {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/input/linux/__init__.py +0 -0
  505. {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/input/linux/evdev_constants.py +0 -0
  506. {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/input/linux/x11_xinput.py +0 -0
  507. {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/input/linux/x11_xinput_tablet.py +0 -0
  508. {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/input/macos/__init__.py +0 -0
  509. {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/input/macos/darwin_hid.py +0 -0
  510. {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/input/win32/__init__.py +0 -0
  511. {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/input/win32/directinput.py +0 -0
  512. {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/input/win32/wintab.py +0 -0
  513. {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/lib.py +0 -0
  514. {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/libs/__init__.py +0 -0
  515. {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/libs/darwin/__init__.py +0 -0
  516. {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/libs/darwin/cocoapy/__init__.py +0 -0
  517. {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/libs/darwin/cocoapy/cocoatypes.py +0 -0
  518. {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/libs/darwin/cocoapy/runtime.py +0 -0
  519. {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/libs/darwin/coreaudio.py +0 -0
  520. {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/libs/darwin/quartzkey.py +0 -0
  521. {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/libs/egl/__init__.py +0 -0
  522. {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/libs/egl/egl.py +0 -0
  523. {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/libs/egl/eglext.py +0 -0
  524. {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/libs/egl/lib.py +0 -0
  525. {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/libs/wayland/__init__.py +0 -0
  526. {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/libs/wayland/gbm.py +0 -0
  527. {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/libs/wayland/xkbcommon.py +0 -0
  528. {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/libs/win32/constants.py +0 -0
  529. {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/libs/win32/context_managers.py +0 -0
  530. {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/libs/win32/dinput.py +0 -0
  531. {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/libs/win32/libwintab.py +0 -0
  532. {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/libs/win32/winkey.py +0 -0
  533. {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/libs/x11/__init__.py +0 -0
  534. {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/libs/x11/cursorfont.py +0 -0
  535. {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/libs/x11/xf86vmode.py +0 -0
  536. {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/libs/x11/xinerama.py +0 -0
  537. {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/libs/x11/xinput.py +0 -0
  538. {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/libs/x11/xlib.py +0 -0
  539. {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/libs/x11/xsync.py +0 -0
  540. {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/math.py +0 -0
  541. {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/media/__init__.py +0 -0
  542. {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/media/buffered_logger.py +0 -0
  543. {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/media/codecs/__init__.py +0 -0
  544. {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/media/codecs/base.py +0 -0
  545. {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/media/codecs/coreaudio.py +0 -0
  546. {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/media/codecs/ffmpeg.py +0 -0
  547. {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/media/codecs/ffmpeg_lib/__init__.py +0 -0
  548. {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/media/codecs/ffmpeg_lib/compat.py +0 -0
  549. {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/media/codecs/ffmpeg_lib/libavcodec.py +0 -0
  550. {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/media/codecs/ffmpeg_lib/libavformat.py +0 -0
  551. {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/media/codecs/ffmpeg_lib/libavutil.py +0 -0
  552. {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/media/codecs/ffmpeg_lib/libswresample.py +0 -0
  553. {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/media/codecs/ffmpeg_lib/libswscale.py +0 -0
  554. {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/media/codecs/gstreamer.py +0 -0
  555. {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/media/codecs/pyogg.py +0 -0
  556. {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/media/codecs/wave.py +0 -0
  557. {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/media/devices/__init__.py +0 -0
  558. {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/media/drivers/__init__.py +0 -0
  559. {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/media/drivers/directsound/__init__.py +0 -0
  560. {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/media/drivers/directsound/adaptation.py +0 -0
  561. {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/media/drivers/directsound/exceptions.py +0 -0
  562. {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/media/drivers/directsound/interface.py +0 -0
  563. {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/media/drivers/openal/__init__.py +0 -0
  564. {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/media/drivers/openal/adaptation.py +0 -0
  565. {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/media/drivers/openal/interface.py +0 -0
  566. {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/media/drivers/openal/lib_alc.py +0 -0
  567. {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/media/drivers/openal/lib_openal.py +0 -0
  568. {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/media/drivers/pulse/__init__.py +0 -0
  569. {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/media/drivers/pulse/adaptation.py +0 -0
  570. {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/media/drivers/pulse/interface.py +0 -0
  571. {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/media/drivers/pulse/lib_pulseaudio.py +0 -0
  572. {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/media/drivers/silent/__init__.py +0 -0
  573. {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/media/drivers/silent/adaptation.py +0 -0
  574. {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/media/drivers/xaudio2/__init__.py +0 -0
  575. {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/media/drivers/xaudio2/adaptation.py +0 -0
  576. {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/media/drivers/xaudio2/interface.py +0 -0
  577. {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/media/exceptions.py +0 -0
  578. {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/media/instrumentation.py +0 -0
  579. {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/media/mediathreads.py +0 -0
  580. {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/media/synthesis.py +0 -0
  581. {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/model/codecs/__init__.py +0 -0
  582. {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/model/codecs/gltf.py +0 -0
  583. {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/model/codecs/obj.py +0 -0
  584. {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/resource.py +0 -0
  585. {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/text/document.py +0 -0
  586. {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/text/formats/__init__.py +0 -0
  587. {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/text/formats/attributed.py +0 -0
  588. {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/text/formats/html.py +0 -0
  589. {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/text/formats/plaintext.py +0 -0
  590. {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/text/formats/structured.py +0 -0
  591. {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/text/runlist.py +0 -0
  592. {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/window/cocoa/pyglet_delegate.py +0 -0
  593. {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/window/cocoa/pyglet_textview.py +0 -0
  594. {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/window/cocoa/pyglet_view.py +0 -0
  595. {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/window/cocoa/pyglet_window.py +0 -0
  596. {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/window/cocoa/systemcursor.py +0 -0
  597. {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/window/event.py +0 -0
  598. {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/window/headless/__init__.py +0 -0
  599. {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/window/mouse.py +0 -0
  600. {pyglet-2.0.9 → pyglet-2.0.10}/pyglet.egg-info/dependency_links.txt +0 -0
  601. {pyglet-2.0.9 → pyglet-2.0.10}/pyglet.egg-info/top_level.txt +0 -0
  602. {pyglet-2.0.9 → pyglet-2.0.10}/pyglet.egg-info/zip-safe +0 -0
  603. {pyglet-2.0.9 → pyglet-2.0.10}/pyproject.toml +0 -0
  604. {pyglet-2.0.9 → pyglet-2.0.10}/pytest.ini +0 -0
  605. {pyglet-2.0.9 → pyglet-2.0.10}/setup.cfg +0 -0
  606. {pyglet-2.0.9 → pyglet-2.0.10}/setup.py +0 -0
  607. {pyglet-2.0.9 → pyglet-2.0.10}/tests/__init__.py +0 -0
  608. {pyglet-2.0.9 → pyglet-2.0.10}/tests/annotations.py +0 -0
  609. {pyglet-2.0.9 → pyglet-2.0.10}/tests/base/__init__.py +0 -0
  610. {pyglet-2.0.9 → pyglet-2.0.10}/tests/base/data.py +0 -0
  611. {pyglet-2.0.9 → pyglet-2.0.10}/tests/base/event_loop.py +0 -0
  612. {pyglet-2.0.9 → pyglet-2.0.10}/tests/base/interactive.py +0 -0
  613. {pyglet-2.0.9 → pyglet-2.0.10}/tests/base/performance.py +0 -0
  614. {pyglet-2.0.9 → pyglet-2.0.10}/tests/base/test_interactive_test_base.py +0 -0
  615. {pyglet-2.0.9 → pyglet-2.0.10}/tests/conftest.py +0 -0
  616. {pyglet-2.0.9 → pyglet-2.0.10}/tests/data/fonts/README +0 -0
  617. {pyglet-2.0.9 → pyglet-2.0.10}/tests/data/fonts/action_man.ttf +0 -0
  618. {pyglet-2.0.9 → pyglet-2.0.10}/tests/data/fonts/action_man_bold.ttf +0 -0
  619. {pyglet-2.0.9 → pyglet-2.0.10}/tests/data/fonts/action_man_bold_italic.ttf +0 -0
  620. {pyglet-2.0.9 → pyglet-2.0.10}/tests/data/fonts/action_man_italic.ttf +0 -0
  621. {pyglet-2.0.9 → pyglet-2.0.10}/tests/data/fonts/courR12-ISO8859-1.pcf +0 -0
  622. {pyglet-2.0.9 → pyglet-2.0.10}/tests/data/images/8bpp.gif +0 -0
  623. {pyglet-2.0.9 → pyglet-2.0.10}/tests/data/images/cursor.png +0 -0
  624. {pyglet-2.0.9 → pyglet-2.0.10}/tests/data/images/dinosaur.gif +0 -0
  625. {pyglet-2.0.9 → pyglet-2.0.10}/tests/data/images/gdk_close.png +0 -0
  626. {pyglet-2.0.9 → pyglet-2.0.10}/tests/data/images/grey_background.png +0 -0
  627. {pyglet-2.0.9 → pyglet-2.0.10}/tests/data/images/icon1.png +0 -0
  628. {pyglet-2.0.9 → pyglet-2.0.10}/tests/data/images/icon_size1.png +0 -0
  629. {pyglet-2.0.9 → pyglet-2.0.10}/tests/data/images/icon_size2.png +0 -0
  630. {pyglet-2.0.9 → pyglet-2.0.10}/tests/data/images/icon_size3.png +0 -0
  631. {pyglet-2.0.9 → pyglet-2.0.10}/tests/data/images/icon_size4.png +0 -0
  632. {pyglet-2.0.9 → pyglet-2.0.10}/tests/data/images/icon_size5.png +0 -0
  633. {pyglet-2.0.9 → pyglet-2.0.10}/tests/data/images/l.png +0 -0
  634. {pyglet-2.0.9 → pyglet-2.0.10}/tests/data/images/la.png +0 -0
  635. {pyglet-2.0.9 → pyglet-2.0.10}/tests/data/images/multitexture.png +0 -0
  636. {pyglet-2.0.9 → pyglet-2.0.10}/tests/data/images/rgb.png +0 -0
  637. {pyglet-2.0.9 → pyglet-2.0.10}/tests/data/images/rgb_16bpp.bmp +0 -0
  638. {pyglet-2.0.9 → pyglet-2.0.10}/tests/data/images/rgb_1bpp.bmp +0 -0
  639. {pyglet-2.0.9 → pyglet-2.0.10}/tests/data/images/rgb_24bpp.bmp +0 -0
  640. {pyglet-2.0.9 → pyglet-2.0.10}/tests/data/images/rgb_32bpp.bmp +0 -0
  641. {pyglet-2.0.9 → pyglet-2.0.10}/tests/data/images/rgb_4bpp.bmp +0 -0
  642. {pyglet-2.0.9 → pyglet-2.0.10}/tests/data/images/rgb_8bpp.bmp +0 -0
  643. {pyglet-2.0.9 → pyglet-2.0.10}/tests/data/images/rgb_8bpp.png +0 -0
  644. {pyglet-2.0.9 → pyglet-2.0.10}/tests/data/images/rgb_8bpp_trans.png +0 -0
  645. {pyglet-2.0.9 → pyglet-2.0.10}/tests/data/images/rgb_dxt1.dds +0 -0
  646. {pyglet-2.0.9 → pyglet-2.0.10}/tests/data/images/rgba.png +0 -0
  647. {pyglet-2.0.9 → pyglet-2.0.10}/tests/data/images/rgba_32bpp.bmp +0 -0
  648. {pyglet-2.0.9 → pyglet-2.0.10}/tests/data/images/rgba_dxt1.dds +0 -0
  649. {pyglet-2.0.9 → pyglet-2.0.10}/tests/data/images/rgba_dxt3.dds +0 -0
  650. {pyglet-2.0.9 → pyglet-2.0.10}/tests/data/images/rgba_dxt5.dds +0 -0
  651. {pyglet-2.0.9 → pyglet-2.0.10}/tests/data/images/tests.interactive.test_interactive_test_base._Test.test_1.001.png +0 -0
  652. {pyglet-2.0.9 → pyglet-2.0.10}/tests/data/media/README +0 -0
  653. {pyglet-2.0.9 → pyglet-2.0.10}/tests/data/media/alert.wav +0 -0
  654. {pyglet-2.0.9 → pyglet-2.0.10}/tests/data/media/login.wav +0 -0
  655. {pyglet-2.0.9 → pyglet-2.0.10}/tests/data/media/logout.wav +0 -0
  656. {pyglet-2.0.9 → pyglet-2.0.10}/tests/data/media/receive.wav +0 -0
  657. {pyglet-2.0.9 → pyglet-2.0.10}/tests/data/media/send.wav +0 -0
  658. {pyglet-2.0.9 → pyglet-2.0.10}/tests/data/media/synthesis_sawtooth_16_11025_1ch.wav +0 -0
  659. {pyglet-2.0.9 → pyglet-2.0.10}/tests/data/media/synthesis_sawtooth_16_44800_1ch.wav +0 -0
  660. {pyglet-2.0.9 → pyglet-2.0.10}/tests/data/media/synthesis_silence_16_11025_1ch.wav +0 -0
  661. {pyglet-2.0.9 → pyglet-2.0.10}/tests/data/media/synthesis_silence_16_44800_1ch.wav +0 -0
  662. {pyglet-2.0.9 → pyglet-2.0.10}/tests/data/media/synthesis_simplefm_16_11025_1ch.wav +0 -0
  663. {pyglet-2.0.9 → pyglet-2.0.10}/tests/data/media/synthesis_simplefm_16_44800_1ch.wav +0 -0
  664. {pyglet-2.0.9 → pyglet-2.0.10}/tests/data/media/synthesis_sine_16_11025_1ch.wav +0 -0
  665. {pyglet-2.0.9 → pyglet-2.0.10}/tests/data/media/synthesis_sine_16_44800_1ch.wav +0 -0
  666. {pyglet-2.0.9 → pyglet-2.0.10}/tests/data/media/synthesis_square_16_11025_1ch.wav +0 -0
  667. {pyglet-2.0.9 → pyglet-2.0.10}/tests/data/media/synthesis_square_16_44800_1ch.wav +0 -0
  668. {pyglet-2.0.9 → pyglet-2.0.10}/tests/data/media/synthesis_triangle_16_11025_1ch.wav +0 -0
  669. {pyglet-2.0.9 → pyglet-2.0.10}/tests/data/media/synthesis_triangle_16_44800_1ch.wav +0 -0
  670. {pyglet-2.0.9 → pyglet-2.0.10}/tests/data/models/logo3d.mtl +0 -0
  671. {pyglet-2.0.9 → pyglet-2.0.10}/tests/data/models/logo3d.obj +0 -0
  672. {pyglet-2.0.9 → pyglet-2.0.10}/tests/integration/__init__.py +0 -0
  673. {pyglet-2.0.9 → pyglet-2.0.10}/tests/integration/app/__init__.py +0 -0
  674. {pyglet-2.0.9 → pyglet-2.0.10}/tests/integration/font/test_fontconfig.py +0 -0
  675. {pyglet-2.0.9 → pyglet-2.0.10}/tests/integration/font/test_freetype_face.py +0 -0
  676. {pyglet-2.0.9 → pyglet-2.0.10}/tests/integration/graphics/__init__.py +0 -0
  677. {pyglet-2.0.9 → pyglet-2.0.10}/tests/integration/graphics/test_allocation.py +0 -0
  678. {pyglet-2.0.9 → pyglet-2.0.10}/tests/integration/image/__init__.py +0 -0
  679. {pyglet-2.0.9 → pyglet-2.0.10}/tests/integration/image/test_gdkpixbuf2.py +0 -0
  680. {pyglet-2.0.9 → pyglet-2.0.10}/tests/integration/media/__init__.py +0 -0
  681. {pyglet-2.0.9 → pyglet-2.0.10}/tests/integration/media/mock_player.py +0 -0
  682. {pyglet-2.0.9 → pyglet-2.0.10}/tests/integration/media/test_directsound.py +0 -0
  683. {pyglet-2.0.9 → pyglet-2.0.10}/tests/integration/media/test_openal.py +0 -0
  684. {pyglet-2.0.9 → pyglet-2.0.10}/tests/integration/media/test_player.py +0 -0
  685. {pyglet-2.0.9 → pyglet-2.0.10}/tests/integration/media/test_pulse.py +0 -0
  686. {pyglet-2.0.9 → pyglet-2.0.10}/tests/integration/model/__init__.py +0 -0
  687. {pyglet-2.0.9 → pyglet-2.0.10}/tests/integration/model/test_loading.py +0 -0
  688. {pyglet-2.0.9 → pyglet-2.0.10}/tests/integration/platform/__init__.py +0 -0
  689. {pyglet-2.0.9 → pyglet-2.0.10}/tests/integration/platform/test_linux_fontconfig.py +0 -0
  690. {pyglet-2.0.9 → pyglet-2.0.10}/tests/integration/platform/test_win_context_managers.py +0 -0
  691. {pyglet-2.0.9 → pyglet-2.0.10}/tests/integration/platform/test_win_multicore_clock.py +0 -0
  692. {pyglet-2.0.9 → pyglet-2.0.10}/tests/integration/resource/__init__.py +0 -0
  693. {pyglet-2.0.9 → pyglet-2.0.10}/tests/integration/resource/dir1/dir1/f3.txt +0 -0
  694. {pyglet-2.0.9 → pyglet-2.0.10}/tests/integration/resource/dir1/f2.txt +0 -0
  695. {pyglet-2.0.9 → pyglet-2.0.10}/tests/integration/resource/dir1/res.zip +0 -0
  696. {pyglet-2.0.9 → pyglet-2.0.10}/tests/integration/resource/dir2/f6.txt +0 -0
  697. {pyglet-2.0.9 → pyglet-2.0.10}/tests/integration/resource/f1.txt +0 -0
  698. {pyglet-2.0.9 → pyglet-2.0.10}/tests/integration/resource/rgbm.png +0 -0
  699. {pyglet-2.0.9 → pyglet-2.0.10}/tests/integration/resource/test_resource_image_loading.py +0 -0
  700. {pyglet-2.0.9 → pyglet-2.0.10}/tests/integration/resource/test_resource_loading.py +0 -0
  701. {pyglet-2.0.9 → pyglet-2.0.10}/tests/integration/text/__init__.py +0 -0
  702. {pyglet-2.0.9 → pyglet-2.0.10}/tests/integration/text/test_empty_document.py +0 -0
  703. {pyglet-2.0.9 → pyglet-2.0.10}/tests/integration/window/__init__.py +0 -0
  704. {pyglet-2.0.9 → pyglet-2.0.10}/tests/integration/window/test_context_share.py +0 -0
  705. {pyglet-2.0.9 → pyglet-2.0.10}/tests/integration/window/test_event_sequence.py +0 -0
  706. {pyglet-2.0.9 → pyglet-2.0.10}/tests/integration/window/test_window_caption.py +0 -0
  707. {pyglet-2.0.9 → pyglet-2.0.10}/tests/interactive/__init__.py +0 -0
  708. {pyglet-2.0.9 → pyglet-2.0.10}/tests/interactive/conftest.py +0 -0
  709. {pyglet-2.0.9 → pyglet-2.0.10}/tests/interactive/graphics/__init__.py +0 -0
  710. {pyglet-2.0.9 → pyglet-2.0.10}/tests/interactive/graphics/test_multitexture.py +0 -0
  711. {pyglet-2.0.9 → pyglet-2.0.10}/tests/interactive/image/__init__.py +0 -0
  712. {pyglet-2.0.9 → pyglet-2.0.10}/tests/interactive/image/test_image.py +0 -0
  713. {pyglet-2.0.9 → pyglet-2.0.10}/tests/interactive/media/__init__.py +0 -0
  714. {pyglet-2.0.9 → pyglet-2.0.10}/tests/interactive/media/test_player.py +0 -0
  715. {pyglet-2.0.9 → pyglet-2.0.10}/tests/interactive/screenshots/committed/README +0 -0
  716. /pyglet-2.0.9/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
  717. /pyglet-2.0.9/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
  718. {pyglet-2.0.9 → pyglet-2.0.10}/tests/interactive/screenshots/session/README +0 -0
  719. /pyglet-2.0.9/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
  720. {pyglet-2.0.9 → pyglet-2.0.10}/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_pil_loading[l.png].001.png +0 -0
  721. {pyglet-2.0.9 → pyglet-2.0.10}/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_pypng_loading[l.png].001.png +0 -0
  722. {pyglet-2.0.9 → pyglet-2.0.10}/tests/interactive/text/__init__.py +0 -0
  723. {pyglet-2.0.9 → pyglet-2.0.10}/tests/interactive/text/test_caret_color.py +0 -0
  724. {pyglet-2.0.9 → pyglet-2.0.10}/tests/interactive/text/test_content_valign.py +0 -0
  725. {pyglet-2.0.9 → pyglet-2.0.10}/tests/interactive/text/test_html.py +0 -0
  726. {pyglet-2.0.9 → pyglet-2.0.10}/tests/interactive/window/__init__.py +0 -0
  727. {pyglet-2.0.9 → pyglet-2.0.10}/tests/interactive/window/test_window_events.py +0 -0
  728. {pyglet-2.0.9 → pyglet-2.0.10}/tests/interactive/window/test_window_fullscreen.py +0 -0
  729. {pyglet-2.0.9 → pyglet-2.0.10}/tests/interactive/window/test_window_modes.py +0 -0
  730. {pyglet-2.0.9 → pyglet-2.0.10}/tests/interactive/window/test_window_multisample.py +0 -0
  731. {pyglet-2.0.9 → pyglet-2.0.10}/tests/interactive/window/test_window_open.py +0 -0
  732. {pyglet-2.0.9 → pyglet-2.0.10}/tests/interactive/window/test_window_settings.py +0 -0
  733. {pyglet-2.0.9 → pyglet-2.0.10}/tests/interactive/window/test_window_styles.py +0 -0
  734. {pyglet-2.0.9 → pyglet-2.0.10}/tests/interactive/window/window_util.py +0 -0
  735. {pyglet-2.0.9 → pyglet-2.0.10}/tests/interactive/windowed_test_base.py +0 -0
  736. {pyglet-2.0.9 → pyglet-2.0.10}/tests/requirements.txt +0 -0
  737. {pyglet-2.0.9 → pyglet-2.0.10}/tests/unit/__init__.py +0 -0
  738. {pyglet-2.0.9 → pyglet-2.0.10}/tests/unit/media/__init__.py +0 -0
  739. {pyglet-2.0.9 → pyglet-2.0.10}/tests/unit/media/test_listener.py +0 -0
  740. {pyglet-2.0.9 → pyglet-2.0.10}/tests/unit/media/test_player.py +0 -0
  741. {pyglet-2.0.9 → pyglet-2.0.10}/tests/unit/media/test_sources.py +0 -0
  742. {pyglet-2.0.9 → pyglet-2.0.10}/tests/unit/media/test_synthesis.py +0 -0
  743. {pyglet-2.0.9 → pyglet-2.0.10}/tests/unit/shapes/__init__.py +0 -0
  744. {pyglet-2.0.9 → pyglet-2.0.10}/tests/unit/shapes/conftest.py +0 -0
  745. {pyglet-2.0.9 → pyglet-2.0.10}/tests/unit/shapes/test_bordered_rectangle.py +0 -0
  746. {pyglet-2.0.9 → pyglet-2.0.10}/tests/unit/test_atlas.py +0 -0
  747. {pyglet-2.0.9 → pyglet-2.0.10}/tests/unit/test_clock.py +0 -0
  748. {pyglet-2.0.9 → pyglet-2.0.10}/tests/unit/test_clock_freq.py +0 -0
  749. {pyglet-2.0.9 → pyglet-2.0.10}/tests/unit/test_font.py +0 -0
  750. {pyglet-2.0.9 → pyglet-2.0.10}/tests/unit/test_input.py +0 -0
  751. {pyglet-2.0.9 → pyglet-2.0.10}/tests/unit/test_math.py +0 -0
  752. {pyglet-2.0.9 → pyglet-2.0.10}/tests/unit/test_resource_path.py +0 -0
  753. {pyglet-2.0.9 → pyglet-2.0.10}/tests/unit/test_sprite.py +0 -0
  754. {pyglet-2.0.9 → pyglet-2.0.10}/tests/unit/test_text.py +0 -0
  755. {pyglet-2.0.9 → pyglet-2.0.10}/tests/unit/text/__init__.py +0 -0
  756. {pyglet-2.0.9 → pyglet-2.0.10}/tests/unit/text/test_caret.py +0 -0
  757. {pyglet-2.0.9 → pyglet-2.0.10}/tests/unit/text/test_layout.py +0 -0
  758. {pyglet-2.0.9 → pyglet-2.0.10}/tools/al_info.py +0 -0
  759. {pyglet-2.0.9 → pyglet-2.0.10}/tools/ffmpeg/bokeh_timeline.py +0 -0
  760. {pyglet-2.0.9 → pyglet-2.0.10}/tools/ffmpeg/compare.py +0 -0
  761. {pyglet-2.0.9 → pyglet-2.0.10}/tools/ffmpeg/configure.py +0 -0
  762. {pyglet-2.0.9 → pyglet-2.0.10}/tools/ffmpeg/extractors.py +0 -0
  763. {pyglet-2.0.9 → pyglet-2.0.10}/tools/ffmpeg/fs.py +0 -0
  764. {pyglet-2.0.9 → pyglet-2.0.10}/tools/ffmpeg/mp.py +0 -0
  765. {pyglet-2.0.9 → pyglet-2.0.10}/tools/ffmpeg/mpexceptions.py +0 -0
  766. {pyglet-2.0.9 → pyglet-2.0.10}/tools/ffmpeg/playmany.py +0 -0
  767. {pyglet-2.0.9 → pyglet-2.0.10}/tools/ffmpeg/readme_ffmpeg_debbuging_branch.txt +0 -0
  768. {pyglet-2.0.9 → pyglet-2.0.10}/tools/ffmpeg/readme_run_tests.txt +0 -0
  769. {pyglet-2.0.9 → pyglet-2.0.10}/tools/ffmpeg/report.py +0 -0
  770. {pyglet-2.0.9 → pyglet-2.0.10}/tools/ffmpeg/reports.py +0 -0
  771. {pyglet-2.0.9 → pyglet-2.0.10}/tools/ffmpeg/retry_crashed.py +0 -0
  772. {pyglet-2.0.9 → pyglet-2.0.10}/tools/ffmpeg/run_test_suite.py +0 -0
  773. {pyglet-2.0.9 → pyglet-2.0.10}/tools/ffmpeg/summarize.py +0 -0
  774. {pyglet-2.0.9 → pyglet-2.0.10}/tools/ffmpeg/test_instrumentation.py +0 -0
  775. {pyglet-2.0.9 → pyglet-2.0.10}/tools/ffmpeg/timeline.py +0 -0
  776. {pyglet-2.0.9 → pyglet-2.0.10}/tools/gendist.sh +0 -0
  777. {pyglet-2.0.9 → pyglet-2.0.10}/tools/gengl.py +0 -0
  778. {pyglet-2.0.9 → pyglet-2.0.10}/tools/gengl_old.py +0 -0
  779. {pyglet-2.0.9 → pyglet-2.0.10}/tools/genwrappers.py +0 -0
  780. {pyglet-2.0.9 → pyglet-2.0.10}/tools/gl.template +0 -0
  781. {pyglet-2.0.9 → pyglet-2.0.10}/tools/gl.xml +0 -0
  782. {pyglet-2.0.9 → pyglet-2.0.10}/tools/gl_info.py +0 -0
  783. {pyglet-2.0.9 → pyglet-2.0.10}/tools/inspect_font.py +0 -0
  784. {pyglet-2.0.9 → pyglet-2.0.10}/tools/requirements.txt +0 -0
  785. {pyglet-2.0.9 → pyglet-2.0.10}/tools/wgl.h +0 -0
  786. {pyglet-2.0.9 → pyglet-2.0.10}/tools/wraptypes/__init__.py +0 -0
  787. {pyglet-2.0.9 → pyglet-2.0.10}/tools/wraptypes/cparser.py +0 -0
  788. {pyglet-2.0.9 → pyglet-2.0.10}/tools/wraptypes/ctypesparser.py +0 -0
  789. {pyglet-2.0.9 → pyglet-2.0.10}/tools/wraptypes/lex.py +0 -0
  790. {pyglet-2.0.9 → pyglet-2.0.10}/tools/wraptypes/preprocessor.py +0 -0
  791. {pyglet-2.0.9 → pyglet-2.0.10}/tools/wraptypes/wrap.py +0 -0
  792. {pyglet-2.0.9 → pyglet-2.0.10}/tools/wraptypes/yacc.py +0 -0
  793. {pyglet-2.0.9 → pyglet-2.0.10}/website/LICENSE.txt +0 -0
  794. {pyglet-2.0.9 → pyglet-2.0.10}/website/README.rst +0 -0
  795. {pyglet-2.0.9 → pyglet-2.0.10}/website/assets/favicon.ico +0 -0
  796. {pyglet-2.0.9 → pyglet-2.0.10}/website/assets/static/css/example-custom-styles.css +0 -0
  797. {pyglet-2.0.9 → pyglet-2.0.10}/website/assets/static/images/pyglet.png +0 -0
  798. {pyglet-2.0.9 → pyglet-2.0.10}/website/content/404.html/contents.lr +0 -0
  799. {pyglet-2.0.9 → pyglet-2.0.10}/website/content/404.html/ngc-5793.jpg +0 -0
  800. {pyglet-2.0.9 → pyglet-2.0.10}/website/content/authors/benjamin/contents.lr +0 -0
  801. {pyglet-2.0.9 → pyglet-2.0.10}/website/content/authors/benjamin/pyglet.png +0 -0
  802. {pyglet-2.0.9 → pyglet-2.0.10}/website/content/authors/contents.lr +0 -0
  803. {pyglet-2.0.9 → pyglet-2.0.10}/website/content/blog/contents.lr +0 -0
  804. {pyglet-2.0.9 → pyglet-2.0.10}/website/content/blog/welcome-blog/contents.lr +0 -0
  805. {pyglet-2.0.9 → pyglet-2.0.10}/website/content/contents.lr +0 -0
  806. {pyglet-2.0.9 → pyglet-2.0.10}/website/content/eclipse.jpg +0 -0
  807. {pyglet-2.0.9 → pyglet-2.0.10}/website/pyglet.lektorproject +0 -0
  808. {pyglet-2.0.9 → pyglet-2.0.10}/website/themes/lektor-icon/AUTHORS.txt +0 -0
  809. {pyglet-2.0.9 → pyglet-2.0.10}/website/themes/lektor-icon/CHANGELOG.md +0 -0
  810. {pyglet-2.0.9 → pyglet-2.0.10}/website/themes/lektor-icon/CONTRIBUTING.md +0 -0
  811. {pyglet-2.0.9 → pyglet-2.0.10}/website/themes/lektor-icon/LICENSE.txt +0 -0
  812. {pyglet-2.0.9 → pyglet-2.0.10}/website/themes/lektor-icon/NOTICE.txt +0 -0
  813. {pyglet-2.0.9 → pyglet-2.0.10}/website/themes/lektor-icon/README.md +0 -0
  814. {pyglet-2.0.9 → pyglet-2.0.10}/website/themes/lektor-icon/assets/static/css/bootstrap.css +0 -0
  815. {pyglet-2.0.9 → pyglet-2.0.10}/website/themes/lektor-icon/assets/static/css/icomoon.css +0 -0
  816. {pyglet-2.0.9 → pyglet-2.0.10}/website/themes/lektor-icon/assets/static/css/magnific-popup.css +0 -0
  817. {pyglet-2.0.9 → pyglet-2.0.10}/website/themes/lektor-icon/assets/static/css/style.css +0 -0
  818. {pyglet-2.0.9 → pyglet-2.0.10}/website/themes/lektor-icon/assets/static/fonts/bootstrap/glyphicons-halflings-regular.ttf +0 -0
  819. {pyglet-2.0.9 → pyglet-2.0.10}/website/themes/lektor-icon/assets/static/fonts/bootstrap/glyphicons-halflings-regular.woff +0 -0
  820. {pyglet-2.0.9 → pyglet-2.0.10}/website/themes/lektor-icon/assets/static/fonts/bootstrap/glyphicons-halflings-regular.woff2 +0 -0
  821. {pyglet-2.0.9 → pyglet-2.0.10}/website/themes/lektor-icon/assets/static/fonts/icomoon/icomoon.ttf +0 -0
  822. {pyglet-2.0.9 → pyglet-2.0.10}/website/themes/lektor-icon/assets/static/fonts/icomoon/icomoon.woff +0 -0
  823. {pyglet-2.0.9 → pyglet-2.0.10}/website/themes/lektor-icon/assets/static/images/Preloader_2.gif +0 -0
  824. {pyglet-2.0.9 → pyglet-2.0.10}/website/themes/lektor-icon/assets/static/images/placeholder_person.png +0 -0
  825. {pyglet-2.0.9 → pyglet-2.0.10}/website/themes/lektor-icon/assets/static/js/jquery-3.3.1.min.js +0 -0
  826. {pyglet-2.0.9 → pyglet-2.0.10}/website/themes/lektor-icon/assets/static/js/jquery.easing.min.js +0 -0
  827. {pyglet-2.0.9 → pyglet-2.0.10}/website/themes/lektor-icon/assets/static/js/jquery.magnific-popup.min.js +0 -0
  828. {pyglet-2.0.9 → pyglet-2.0.10}/website/themes/lektor-icon/assets/static/js/jquery.stellar.js +0 -0
  829. {pyglet-2.0.9 → pyglet-2.0.10}/website/themes/lektor-icon/assets/static/js/jquery.stellar.min.js +0 -0
  830. {pyglet-2.0.9 → pyglet-2.0.10}/website/themes/lektor-icon/assets/static/js/jquery.waypoints.min.js +0 -0
  831. {pyglet-2.0.9 → pyglet-2.0.10}/website/themes/lektor-icon/assets/static/js/magnific-popup-options.js +0 -0
  832. {pyglet-2.0.9 → pyglet-2.0.10}/website/themes/lektor-icon/assets/static/js/main-singlelayout.js +0 -0
  833. {pyglet-2.0.9 → pyglet-2.0.10}/website/themes/lektor-icon/assets/static/js/main.js +0 -0
  834. {pyglet-2.0.9 → pyglet-2.0.10}/website/themes/lektor-icon/flowblocks/content.ini +0 -0
  835. {pyglet-2.0.9 → pyglet-2.0.10}/website/themes/lektor-icon/flowblocks/gallery.ini +0 -0
  836. {pyglet-2.0.9 → pyglet-2.0.10}/website/themes/lektor-icon/flowblocks/gallery_item.ini +0 -0
  837. {pyglet-2.0.9 → pyglet-2.0.10}/website/themes/lektor-icon/flowblocks/member.ini +0 -0
  838. {pyglet-2.0.9 → pyglet-2.0.10}/website/themes/lektor-icon/flowblocks/mission.ini +0 -0
  839. {pyglet-2.0.9 → pyglet-2.0.10}/website/themes/lektor-icon/flowblocks/mission_tab.ini +0 -0
  840. {pyglet-2.0.9 → pyglet-2.0.10}/website/themes/lektor-icon/flowblocks/service.ini +0 -0
  841. {pyglet-2.0.9 → pyglet-2.0.10}/website/themes/lektor-icon/flowblocks/services.ini +0 -0
  842. {pyglet-2.0.9 → pyglet-2.0.10}/website/themes/lektor-icon/flowblocks/team.ini +0 -0
  843. {pyglet-2.0.9 → pyglet-2.0.10}/website/themes/lektor-icon/images/blog-index.png +0 -0
  844. {pyglet-2.0.9 → pyglet-2.0.10}/website/themes/lektor-icon/images/full-blog.png +0 -0
  845. {pyglet-2.0.9 → pyglet-2.0.10}/website/themes/lektor-icon/images/full-page.png +0 -0
  846. {pyglet-2.0.9 → pyglet-2.0.10}/website/themes/lektor-icon/images/gallery-404.png +0 -0
  847. {pyglet-2.0.9 → pyglet-2.0.10}/website/themes/lektor-icon/images/gallery-singlepage.png +0 -0
  848. {pyglet-2.0.9 → pyglet-2.0.10}/website/themes/lektor-icon/images/mainpage-screenshots.png +0 -0
  849. {pyglet-2.0.9 → pyglet-2.0.10}/website/themes/lektor-icon/images/responsive-layout.png +0 -0
  850. {pyglet-2.0.9 → pyglet-2.0.10}/website/themes/lektor-icon/models/404.ini +0 -0
  851. {pyglet-2.0.9 → pyglet-2.0.10}/website/themes/lektor-icon/models/author.ini +0 -0
  852. {pyglet-2.0.9 → pyglet-2.0.10}/website/themes/lektor-icon/models/authors.ini +0 -0
  853. {pyglet-2.0.9 → pyglet-2.0.10}/website/themes/lektor-icon/models/blog-post.ini +0 -0
  854. {pyglet-2.0.9 → pyglet-2.0.10}/website/themes/lektor-icon/models/blog.ini +0 -0
  855. {pyglet-2.0.9 → pyglet-2.0.10}/website/themes/lektor-icon/models/page.ini +0 -0
  856. {pyglet-2.0.9 → pyglet-2.0.10}/website/themes/lektor-icon/models/single-layout.ini +0 -0
  857. {pyglet-2.0.9 → pyglet-2.0.10}/website/themes/lektor-icon/templates/404.html +0 -0
  858. {pyglet-2.0.9 → pyglet-2.0.10}/website/themes/lektor-icon/templates/author.html +0 -0
  859. {pyglet-2.0.9 → pyglet-2.0.10}/website/themes/lektor-icon/templates/authors.html +0 -0
  860. {pyglet-2.0.9 → pyglet-2.0.10}/website/themes/lektor-icon/templates/blocks/content.html +0 -0
  861. {pyglet-2.0.9 → pyglet-2.0.10}/website/themes/lektor-icon/templates/blocks/gallery.html +0 -0
  862. {pyglet-2.0.9 → pyglet-2.0.10}/website/themes/lektor-icon/templates/blocks/mission.html +0 -0
  863. {pyglet-2.0.9 → pyglet-2.0.10}/website/themes/lektor-icon/templates/blocks/services.html +0 -0
  864. {pyglet-2.0.9 → pyglet-2.0.10}/website/themes/lektor-icon/templates/blocks/team.html +0 -0
  865. {pyglet-2.0.9 → pyglet-2.0.10}/website/themes/lektor-icon/templates/blog-layout.html +0 -0
  866. {pyglet-2.0.9 → pyglet-2.0.10}/website/themes/lektor-icon/templates/blog-post.html +0 -0
  867. {pyglet-2.0.9 → pyglet-2.0.10}/website/themes/lektor-icon/templates/blog.html +0 -0
  868. {pyglet-2.0.9 → pyglet-2.0.10}/website/themes/lektor-icon/templates/layout.html +0 -0
  869. {pyglet-2.0.9 → pyglet-2.0.10}/website/themes/lektor-icon/templates/macros/blog.html +0 -0
  870. {pyglet-2.0.9 → pyglet-2.0.10}/website/themes/lektor-icon/templates/macros/pagination.html +0 -0
  871. {pyglet-2.0.9 → pyglet-2.0.10}/website/themes/lektor-icon/templates/none.html +0 -0
  872. {pyglet-2.0.9 → pyglet-2.0.10}/website/themes/lektor-icon/templates/page.html +0 -0
  873. {pyglet-2.0.9 → pyglet-2.0.10}/website/themes/lektor-icon/templates/single-layout.html +0 -0
  874. {pyglet-2.0.9 → pyglet-2.0.10}/website/themes/lektor-icon/theme.ini +0 -0
@@ -0,0 +1,660 @@
1
+ #!/usr/bin/env python
2
+ # ----------------------------------------------------------------------------
3
+ # pyglet
4
+ # Copyright (c) 2006-2008 Alex Holkner
5
+ # All rights reserved.
6
+ #
7
+ # Redistribution and use in source and binary forms, with or without
8
+ # modification, are permitted provided that the following conditions
9
+ # are met:
10
+ #
11
+ # * Redistributions of source code must retain the above copyright
12
+ # notice, this list of conditions and the following disclaimer.
13
+ # * Redistributions in binary form must reproduce the above copyright
14
+ # notice, this list of conditions and the following disclaimer in
15
+ # the documentation and/or other materials provided with the
16
+ # distribution.
17
+ # * Neither the name of pyglet nor the names of its
18
+ # contributors may be used to endorse or promote products
19
+ # derived from this software without specific prior written
20
+ # permission.
21
+ #
22
+ # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
23
+ # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
24
+ # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
25
+ # FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
26
+ # COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
27
+ # INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
28
+ # BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
29
+ # LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
30
+ # CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
31
+ # LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
32
+ # ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
33
+ # POSSIBILITY OF SUCH DAMAGE.
34
+ # ----------------------------------------------------------------------------
35
+ # $Id$
36
+
37
+ import math
38
+
39
+ import pyglet
40
+
41
+ # # Default to OpenAL if available:
42
+ # pyglet.options['audio'] = 'openal', 'pulse', 'directsound', 'silent'
43
+
44
+ from pyglet.gl import *
45
+ from pyglet.graphics import Group
46
+ from pyglet.math import Mat4, Vec3
47
+
48
+ from . import reader
49
+
50
+
51
+ pyglet.resource.path.append('res')
52
+ pyglet.resource.reindex()
53
+
54
+
55
+ def orientation_angle(orientation):
56
+ return math.atan2(orientation[2], orientation[0])
57
+
58
+
59
+ # Shape hack functions
60
+ def _update_line(line, x, y, x2, y2):
61
+ line._x = x
62
+ line._y = y
63
+ line._x2 = x2
64
+ line._y2 = y2
65
+ line._update_translation()
66
+ line._update_vertices()
67
+
68
+ def _bordered_rect_alpha(rect, inner_alpha, border_alpha):
69
+ rect._rgba = rect._rgba[:3] + (inner_alpha,)
70
+ rect._border_rgba = rect._border_rgba[:3] + (border_alpha,)
71
+ rect._update_color()
72
+
73
+
74
+ class Handle:
75
+ tip = ''
76
+
77
+ def __init__(self, window, player):
78
+ self.win = window
79
+ self.player = player
80
+
81
+ def hit_test(self, x, y, z):
82
+ dx, dy, dz = [a - b for a, b in zip(self.pos(), (x, y, z))]
83
+ if dx * dx + dy * dy + dz * dz < self.radius * self.radius:
84
+ return -dx, -dy, -dz
85
+
86
+ def pos(self):
87
+ raise NotImplementedError()
88
+
89
+ def delete(self):
90
+ pass
91
+
92
+ def update_shapes(self):
93
+ pass
94
+
95
+ def begin_drag(self, offset):
96
+ self.offset = offset
97
+ return self
98
+
99
+ def on_mouse_press(self, x, y, button, modifiers):
100
+ self.win.remove_handlers(self)
101
+
102
+ def on_mouse_release(self, x, y, button, modifiers):
103
+ self.win.remove_handlers(self)
104
+
105
+
106
+ class LabelHandle(Handle):
107
+ def __init__(self, window, player):
108
+ super().__init__(window, player)
109
+ txt = getattr(player, 'label', '')
110
+ self.text = pyglet.text.Label(txt, font_size=10, color=(0, 0, 0, 255),
111
+ anchor_y='top', anchor_x='center', batch=window.text_batch)
112
+
113
+ def delete(self):
114
+ self.text.delete()
115
+
116
+ def update_shapes(self):
117
+ x, z = self.win.player_transform(self.player)
118
+ self.text.position = x, z - 5, 0
119
+
120
+ def hit_test(self, x, y, z):
121
+ return None
122
+
123
+
124
+ class PositionHandle(Handle):
125
+ tip = 'position'
126
+ radius = .3
127
+
128
+ def __init__(self, window, player):
129
+ super().__init__(window, player)
130
+ self._triangle = pyglet.shapes.Triangle(
131
+ 0, self.radius,
132
+ -self.radius * math.sqrt(3.0) / 2.0, -self.radius / 2.0,
133
+ self.radius * math.sqrt(3.0) / 2.0, -self.radius / 2.0,
134
+ (255, 0, 0, 255),
135
+ window.handle_batch,
136
+ window.hgrp_position)
137
+ self._triangle.anchor_position = 0.0, -self.radius * 0.75
138
+
139
+ def update_shapes(self):
140
+ self._triangle.position = self.player.position[0], self.player.position[2]
141
+
142
+ def delete(self):
143
+ self._triangle.delete()
144
+
145
+ def pos(self):
146
+ return self.player.position
147
+
148
+ def on_mouse_drag(self, x, y, dx, dy, buttons, modifiers):
149
+ pos = self.win.mouse_transform(x, y)
150
+ self.player.position = \
151
+ (pos[0] - self.offset[0],
152
+ pos[1] - self.offset[1],
153
+ pos[2] - self.offset[2])
154
+
155
+
156
+ class OrientationHandle(Handle):
157
+ radius = .1
158
+ length = 1.5
159
+
160
+ def __init__(self, window, player):
161
+ super().__init__(window, player)
162
+ self._line = pyglet.shapes.Line(0, 0, 0, 0,
163
+ color=(74, 74, 74),
164
+ batch=window.handle_batch,
165
+ group=Group(0, window.hgrp_orientation))
166
+ self._disc = pyglet.shapes.Circle(0, 0, self.radius,
167
+ color=(255, 255, 0, 255),
168
+ batch=window.handle_batch,
169
+ group=Group(1, window.hgrp_orientation))
170
+
171
+ def pos(self):
172
+ x, _, z = self.player.position
173
+ direction = self.get_orientation()
174
+ sz = math.sqrt(direction[0] ** 2 + direction[1] ** 2 + direction[2] ** 2) or 1
175
+ if sz != 0:
176
+ x += direction[0] / sz * self.length
177
+ z += direction[2] / sz * self.length
178
+ return x, 0, z
179
+
180
+ def get_orientation(self):
181
+ return NotImplementedError()
182
+
183
+ def update_shapes(self):
184
+ px, _, py = self.player.position
185
+ x, _, y = self.pos()
186
+
187
+ self._line._width = 1.0 / self.win.zoom
188
+ _update_line(self._line, x, y, px, py)
189
+
190
+ self._disc.position = x, y
191
+
192
+ def delete(self):
193
+ self._line.delete()
194
+ self._disc.delete()
195
+
196
+ def on_mouse_drag(self, x, y, dx, dy, buttons, modifiers):
197
+ px, py, pz = self.player.position
198
+ hx, hy, hz = self.win.mouse_transform(x, y)
199
+ self.set_orientation(
200
+ (hx - self.offset[0] - px,
201
+ hy - self.offset[1] - py,
202
+ hz - self.offset[2] - pz))
203
+
204
+
205
+ class ConeOrientationHandle(OrientationHandle):
206
+ tip = 'cone_orientation'
207
+
208
+ def get_orientation(self):
209
+ return self.player.cone_orientation
210
+
211
+ def set_orientation(self, orientation):
212
+ self.player.cone_orientation = orientation
213
+
214
+
215
+ class ForwardOrientationHandle(OrientationHandle):
216
+ tip = 'forward_orientation'
217
+
218
+ def get_orientation(self):
219
+ return self.player.forward_orientation
220
+
221
+ def set_orientation(self, orientation):
222
+ self.player.forward_orientation = orientation
223
+
224
+
225
+ class ConeAngleHandle(Handle):
226
+ length = .1
227
+ radius = .1
228
+
229
+ def __init__(self, window, player):
230
+ super().__init__(window, player)
231
+ self._sector = pyglet.shapes.Sector(0, 0, self.length, color=self.fill_color, batch=window.handle_batch)
232
+ self._handle = pyglet.shapes.Circle(0, 0, self.radius, color=self.color, batch=window.handle_batch)
233
+
234
+ def pos(self):
235
+ px, py, pz = self.player.position
236
+ angle = orientation_angle(self.player.cone_orientation)
237
+ angle += self.get_angle() * math.pi / 180. / 2
238
+ x = math.cos(angle) * self.length
239
+ z = math.sin(angle) * self.length
240
+ return px + x, py, pz + z
241
+
242
+ def get_angle(self):
243
+ raise NotImplementedError()
244
+
245
+ def update_shapes(self):
246
+ px, _, py = self.player.position
247
+ angle = orientation_angle(self.player.cone_orientation)
248
+ a = math.radians(self.get_angle())
249
+
250
+ self._sector.angle = a
251
+ self._sector.rotation = math.degrees((-angle / 2.0) + (a / 4.0))
252
+ self._sector.position = px, py
253
+
254
+ x, _, y = self.pos()
255
+ self._handle.radius = self.radius
256
+ self._handle.position = x, y
257
+
258
+ def delete(self):
259
+ self._sector.delete()
260
+ self._handle.delete()
261
+
262
+ def on_mouse_drag(self, x, y, dx, dy, buttons, modifiers):
263
+ px, py, pz = self.player.position
264
+ hx, hy, hz = self.win.mouse_transform(x, y)
265
+ angle = orientation_angle(self.player.cone_orientation)
266
+ hangle = orientation_angle((hx - px, hy - py, hz - pz))
267
+ if hangle < angle:
268
+ hangle += math.pi * 2
269
+ res = min(max((hangle - angle) * 2, 0), math.pi * 2)
270
+ self.set_angle(res * 180. / math.pi)
271
+
272
+
273
+ class ConeInnerAngleHandle(ConeAngleHandle):
274
+ tip = 'cone_inner_angle'
275
+ length = 1.
276
+ color = (51, 204, 51, 255)
277
+ fill_color = (0, 255, 0, 26)
278
+
279
+ def get_angle(self):
280
+ return self.player.cone_inner_angle
281
+
282
+ def set_angle(self, angle):
283
+ self.player.cone_inner_angle = angle
284
+
285
+
286
+ class ConeOuterAngleHandle(ConeAngleHandle):
287
+ tip = 'cone_outer_angle'
288
+ length = 1.2
289
+ color = (51, 51, 204, 255)
290
+ fill_color = (0, 0, 255, 26)
291
+
292
+ def get_angle(self):
293
+ return self.player.cone_outer_angle
294
+
295
+ def set_angle(self, angle):
296
+ self.player.cone_outer_angle = angle
297
+
298
+
299
+ class MoreHandle(Handle):
300
+ tip = 'More...'
301
+ radius = .2
302
+
303
+ open = False
304
+ open_width = 1.5
305
+ open_height = 1.5
306
+
307
+ def __init__(self, window, player):
308
+ super().__init__(window, player)
309
+ self._box = pyglet.shapes.BorderedRectangle(0, 0, self.open_width, self.open_height, 1,
310
+ (255, 255, 255), (0, 0, 0),
311
+ window.handle_batch,
312
+ Group(0, window.hgrp_label_more_collapsed))
313
+ # The BorderedRectangle vehemently defends itself from having differing alpha values,
314
+ # but hack them in cause we want them
315
+ _bordered_rect_alpha(self._box, 201, 255)
316
+
317
+ self._circ = pyglet.shapes.Circle(0, 0, self.radius,
318
+ batch=window.handle_batch,
319
+ group=Group(0, window.hgrp_label_more_collapsed))
320
+ self._outline = pyglet.shapes.Arc(0, 0, self.radius,
321
+ color=(0, 0, 0, 255),
322
+ batch=window.handle_batch,
323
+ group=Group(1, window.hgrp_label_more_collapsed))
324
+ self._line0 = pyglet.shapes.Line(0, 0, 0, 0,
325
+ color=(0, 0, 0, 255),
326
+ batch=window.handle_batch,
327
+ group=Group(2, window.hgrp_label_more_collapsed))
328
+ self._line1 = pyglet.shapes.Line(0, 0, 0, 0,
329
+ color=(0, 0, 0, 255),
330
+ batch=window.handle_batch,
331
+ group=Group(3, window.hgrp_label_more_collapsed))
332
+
333
+ def pos(self):
334
+ x, y, z = self.player.position
335
+ return x + 1, y, z + 1
336
+
337
+ def get_angle(self):
338
+ raise NotImplementedError()
339
+
340
+ def update_shapes(self):
341
+ self._box.visible = self.open
342
+ self._circ.visible = not self.open
343
+ self._outline.visible = not self.open
344
+ self._line0.visible = not self.open
345
+ self._line1.visible = not self.open
346
+
347
+ x, _, z = self.pos()
348
+ if self.open:
349
+ x -= 0.2
350
+ z += 0.2
351
+ self._box.border = 1.0 / self.win.zoom
352
+ self._box.position = x, z - self.open_height
353
+ else:
354
+ self._circ.position = x, z
355
+ self._outline.position = x, z
356
+ r = self.radius - 0.1
357
+ self._line0._width = 1.0 / self.win.zoom
358
+ _update_line(self._line0, x - r, z, x + r, z)
359
+ self._line1._width = 1.0 / self.win.zoom
360
+ _update_line(self._line1, x, z - r, x, z + r)
361
+
362
+ def delete(self):
363
+ self._box.delete()
364
+ self._circ.delete()
365
+ self._outline.delete()
366
+ self._line0.delete()
367
+ self._line1.delete()
368
+
369
+ def begin_drag(self, offset):
370
+ self.open = True
371
+ self.win.set_more_player_handles(self.player)
372
+ return self
373
+
374
+ def on_mouse_press(self, x, y, button, modifiers):
375
+ x, y, z = self.win.mouse_transform(x, y)
376
+ for handle in self.win.more_handles:
377
+ if handle.hit_test(x, y, z):
378
+ return
379
+ self.win.set_more_player_handles(None)
380
+ self.win.remove_handlers(self)
381
+ self.open = False
382
+
383
+ def on_mouse_release(self, x, y, button, modifiers):
384
+ pass
385
+
386
+
387
+ class SliderHandle(Handle):
388
+ length = 1.
389
+ width = .05
390
+ radius = .1
391
+
392
+ def __init__(self, window, player, x, z):
393
+ super().__init__(window, player)
394
+ self._groove = pyglet.shapes.Rectangle(0, 0, self.length, self.width,
395
+ color=(127, 127, 127, 255),
396
+ batch=window.handle_batch,
397
+ group=Group(0, window.hgrp_more_expanded))
398
+ self._thumb = pyglet.shapes.Circle(0, 0, self.radius,
399
+ color=(51, 51, 51, 255),
400
+ batch=window.handle_batch,
401
+ group=Group(1, window.hgrp_more_expanded))
402
+ self.x = x
403
+ self.z = z
404
+
405
+ def pos(self):
406
+ x, y, z = self.player.position
407
+ x += self.x + self.get_value() * self.length
408
+ z += self.z
409
+ return x, y, z
410
+
411
+ def update_shapes(self):
412
+ gx = self.x + self.player.position[0]
413
+ gz = self.z + self.player.position[2]
414
+ self._groove.position = gx, gz
415
+
416
+ x, _, z = self.pos()
417
+ self._thumb.position = x, z
418
+
419
+ def delete(self):
420
+ self._groove.delete()
421
+ self._thumb.delete()
422
+
423
+ def on_mouse_drag(self, x, y, dx, dy, buttons, modifiers):
424
+ px, py, pz = self.player.position
425
+ hx, hy, hz = self.win.mouse_transform(x, y)
426
+ value = float(hx - px - self.x) / self.length
427
+ value = min(max(value, 0), 1)
428
+ self.set_value(value)
429
+
430
+
431
+ class VolumeHandle(SliderHandle):
432
+ tip = 'volume'
433
+
434
+ def __init__(self, window, player):
435
+ super().__init__(window, player, 1, .9)
436
+
437
+ def get_value(self):
438
+ return self.player.volume
439
+
440
+ def set_value(self, value):
441
+ self.player.volume = value
442
+
443
+
444
+ class ListenerVolumeHandle(SliderHandle):
445
+ tip = 'volume'
446
+
447
+ def __init__(self, window, player):
448
+ super().__init__(window, player, -.5, -1)
449
+
450
+ def get_value(self):
451
+ return self.player.volume
452
+
453
+ def set_value(self, value):
454
+ self.player.volume = value
455
+
456
+
457
+ class MinDistanceHandle(SliderHandle):
458
+ tip = 'min_distance'
459
+
460
+ def __init__(self, window, player):
461
+ super().__init__(window, player, 1, .6)
462
+
463
+ def get_value(self):
464
+ return self.player.min_distance / 5.
465
+
466
+ def set_value(self, value):
467
+ self.player.min_distance = value * 5.
468
+
469
+
470
+ class MaxDistanceHandle(SliderHandle):
471
+ tip = 'max_distance'
472
+
473
+ def __init__(self, window, player):
474
+ super().__init__(window, player, 1, .3)
475
+
476
+ def get_value(self):
477
+ return min(self.player.max_distance / 5., 1.0)
478
+
479
+ def set_value(self, value):
480
+ self.player.max_distance = value * 5.
481
+
482
+
483
+ class ConeOuterGainHandle(SliderHandle):
484
+ tip = 'cone_outer_gain'
485
+
486
+ def __init__(self, window, player):
487
+ super().__init__(window, player, 1, 0)
488
+
489
+ def get_value(self):
490
+ return self.player.cone_outer_gain
491
+
492
+ def set_value(self, value):
493
+ self.player.cone_outer_gain = value
494
+
495
+
496
+ class SoundSpaceWindow(pyglet.window.Window):
497
+ def __init__(self, **kwargs):
498
+ kwargs.setdefault("caption", "Sound Space")
499
+ kwargs.setdefault("resizable", True)
500
+ super().__init__(**kwargs)
501
+
502
+ # pixels per unit
503
+ self.zoom = 40
504
+ self.tx = self.width/2
505
+ self.ty = self.height/2
506
+
507
+ # The handle batch is drawn with a greatly zoomed view matrix
508
+ self._grid_batch = pyglet.graphics.Batch()
509
+ self.handle_batch = pyglet.graphics.Batch()
510
+ self.text_batch = pyglet.graphics.Batch()
511
+
512
+ # Various handle groups for proper rendering order
513
+ self.hgrp_position = Group(0)
514
+ self.hgrp_orientation = Group(1)
515
+ self.hgrp_cone_inner = Group(2)
516
+ self.hgrp_cone_outer = Group(3)
517
+ self.hgrp_label_more_collapsed = Group(4)
518
+ self.hgrp_more_expanded = Group(5)
519
+
520
+ self._grid = []
521
+ self._refresh_grid()
522
+ self.players = []
523
+ self.handles = []
524
+ self.more_handles = []
525
+
526
+ listener = pyglet.media.get_audio_driver().get_listener()
527
+ self.handles.append(PositionHandle(self, listener))
528
+ self.handles.append(ForwardOrientationHandle(self, listener))
529
+ self.handles.append(ListenerVolumeHandle(self, listener))
530
+ self.handles.append(LabelHandle(self, listener))
531
+
532
+ self.tip = pyglet.text.Label('', font_size=10, color=(0, 0, 0, 255),
533
+ anchor_y='top', anchor_x='center')
534
+ self.tip_player = None
535
+
536
+ def add_player(self, player):
537
+ self.players.append(player)
538
+ self.handles.append(PositionHandle(self, player))
539
+ self.handles.append(ConeOrientationHandle(self, player))
540
+ self.handles.append(ConeInnerAngleHandle(self, player))
541
+ self.handles.append(ConeOuterAngleHandle(self, player))
542
+ self.handles.append(LabelHandle(self, player))
543
+ self.handles.append(MoreHandle(self, player))
544
+
545
+ def set_more_player_handles(self, player):
546
+ if player:
547
+ self.more_handles = [
548
+ VolumeHandle(self, player),
549
+ MinDistanceHandle(self, player),
550
+ MaxDistanceHandle(self, player),
551
+ ConeOuterGainHandle(self, player),
552
+ ]
553
+ else:
554
+ for h in self.more_handles:
555
+ h.delete()
556
+ self.more_handles = []
557
+
558
+ def _refresh_grid(self):
559
+ for line in self._grid:
560
+ line.delete()
561
+ self._grid.clear()
562
+
563
+ for x in range(0, self.width, self.zoom):
564
+ self._grid.append(pyglet.shapes.Line(x, 0, x, self.height, batch=self._grid_batch))
565
+ for y in range(0, self.height, self.zoom):
566
+ self._grid.append(pyglet.shapes.Line(0, y, self.width, y, batch=self._grid_batch))
567
+
568
+ def mouse_transform(self, x, y):
569
+ return (float(x - self.tx) / self.zoom,
570
+ 0,
571
+ float(y - self.ty) / self.zoom)
572
+
573
+ def player_transform(self, player):
574
+ return (player.position[0] * self.zoom + self.tx,
575
+ player.position[2] * self.zoom + self.ty)
576
+
577
+ def hit_test(self, mouse_x, mouse_y):
578
+ x, y, z = self.mouse_transform(mouse_x, mouse_y)
579
+ for handle in self.more_handles[::-1] + self.handles[::-1]:
580
+ offset = handle.hit_test(x, y, z)
581
+ if offset:
582
+ return handle, offset
583
+ return None, None
584
+
585
+ def on_draw(self):
586
+ glClearColor(.8, .8, .8, 1)
587
+ self.clear()
588
+
589
+ for handle in self.handles + self.more_handles:
590
+ handle.update_shapes()
591
+
592
+ self.view = Mat4()
593
+ self._grid_batch.draw()
594
+
595
+ self.view = Mat4().translate(Vec3(self.tx, self.ty, 0)).scale(Vec3(self.zoom, self.zoom, 0))
596
+ self.handle_batch.draw()
597
+
598
+ self.view = Mat4()
599
+ self.text_batch.draw()
600
+
601
+ if self.tip_player:
602
+ player_pos = self.player_transform(self.tip_player)
603
+ self.tip.x = player_pos[0]
604
+ self.tip.y = player_pos[1] - 15
605
+ self.tip.draw()
606
+
607
+ def on_mouse_scroll(self, x, y, dx, dy):
608
+ self.zoom += dy * 10
609
+ self.zoom = min(max(self.zoom, 10), 100)
610
+ self._refresh_grid()
611
+
612
+ def on_mouse_press(self, x, y, button, modifiers):
613
+ handle, offset = self.hit_test(x, y)
614
+ if handle:
615
+ self.push_handlers(handle.begin_drag(offset))
616
+ else:
617
+ self.push_handlers(
618
+ on_mouse_press=self._pan_on_mouse_press_or_release,
619
+ on_mouse_release=self._pan_on_mouse_press_or_release,
620
+ on_mouse_drag=self._pan_on_mouse_drag,
621
+ )
622
+
623
+ def _pan_on_mouse_press_or_release(self, _x, _y, _b, _m):
624
+ self.remove_handlers(
625
+ on_mouse_press=self._pan_on_mouse_press_or_release,
626
+ on_mouse_release=self._pan_on_mouse_press_or_release,
627
+ on_mouse_drag=self._pan_on_mouse_drag,
628
+ )
629
+
630
+ def _pan_on_mouse_drag(self, x, y, dx, dy, buttons, modifiers):
631
+ self.tx += dx
632
+ self.ty += dy
633
+
634
+ def on_mouse_motion(self, x, y, dx, dy):
635
+ handle, offset = self.hit_test(x, y)
636
+ if handle:
637
+ self.tip.text = handle.tip
638
+ pos = self.player_transform(handle.player)
639
+ self.tip_player = handle.player
640
+ else:
641
+ self.tip.text = ''
642
+
643
+
644
+ if __name__ == '__main__':
645
+ # We swap Y and Z, moving to left-handed system
646
+ listener = pyglet.media.get_audio_driver().get_listener()
647
+ listener.up_orientation = (0, -1, 0)
648
+
649
+ # Start facing up (er, forwards)
650
+ listener.forward_orientation = (0, 0, 1)
651
+
652
+ listener.label = 'Listener'
653
+
654
+ w = SoundSpaceWindow()
655
+ r = reader.SpaceReader(w)
656
+ r.read(pyglet.resource.file('space.txt', 'r'))
657
+ player_group = pyglet.media.PlayerGroup(w.players)
658
+ player_group.play()
659
+
660
+ pyglet.app.run()