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
@@ -1,4 +1,10 @@
1
+ import weakref
2
+
1
3
  from enum import Enum
4
+ import threading
5
+ from typing import Tuple
6
+
7
+ import pyglet
2
8
 
3
9
  from pyglet import gl
4
10
  from pyglet.gl import gl_info
@@ -162,7 +168,7 @@ class Config:
162
168
 
163
169
 
164
170
  class CanvasConfig(Config):
165
- """OpenGL configuration for a particular canvas.
171
+ """An OpenGL configuration for a particular canvas.
166
172
 
167
173
  Use `Config.match` to obtain an instance of this class.
168
174
 
@@ -204,16 +210,16 @@ class CanvasConfig(Config):
204
210
 
205
211
  class ObjectSpace:
206
212
  def __init__(self):
207
- # Textures and buffers scheduled for deletion
208
- # the next time this object space is active.
213
+ # Objects scheduled for deletion the next time this object space is active.
209
214
  self.doomed_textures = []
210
215
  self.doomed_buffers = []
211
- self.doomed_vaos = []
212
216
  self.doomed_shader_programs = []
217
+ self.doomed_shaders = []
218
+ self.doomed_renderbuffers = []
213
219
 
214
220
 
215
221
  class Context:
216
- """OpenGL context for drawing.
222
+ """An OpenGL context for drawing.
217
223
 
218
224
  Use `CanvasConfig.create_context` to create a context.
219
225
 
@@ -231,14 +237,25 @@ class Context:
231
237
  self.context_share = context_share
232
238
  self.canvas = None
233
239
 
240
+ self.doomed_vaos = []
241
+ self.doomed_framebuffers = []
242
+
234
243
  if context_share:
235
244
  self.object_space = context_share.object_space
236
245
  else:
237
246
  self.object_space = ObjectSpace()
238
247
 
248
+ self._cached_programs = weakref.WeakValueDictionary()
249
+
239
250
  def __repr__(self):
240
251
  return f"{self.__class__.__name__}(id={id(self)}, share={self.context_share})"
241
252
 
253
+ def __enter__(self):
254
+ self.set_current()
255
+
256
+ def __exit__(self, exc_type, exc_val, exc_tb):
257
+ return
258
+
242
259
  def attach(self, canvas):
243
260
  if self.canvas is not None:
244
261
  self.detach()
@@ -263,28 +280,49 @@ class Context:
263
280
  self._info = gl_info.GLInfo()
264
281
  self._info.set_active_context()
265
282
 
266
- # Release Textures, Buffers, and VAOs on this context scheduled for
267
- # deletion. Note that the garbage collector may introduce a race
268
- # condition, so operate on a copy, and clear the list afterwards.
269
283
  if self.object_space.doomed_textures:
270
- textures = self.object_space.doomed_textures[:]
271
- textures = (gl.GLuint * len(textures))(*textures)
272
- gl.glDeleteTextures(len(textures), textures)
273
- self.object_space.doomed_textures.clear()
284
+ self._delete_objects(self.object_space.doomed_textures, gl.glDeleteTextures)
274
285
  if self.object_space.doomed_buffers:
275
- buffers = self.object_space.doomed_buffers[:]
276
- buffers = (gl.GLuint * len(buffers))(*buffers)
277
- gl.glDeleteBuffers(len(buffers), buffers)
278
- self.object_space.doomed_buffers.clear()
279
- if self.object_space.doomed_vaos:
280
- vaos = self.object_space.doomed_vaos[:]
281
- vaos = (gl.GLuint * len(vaos))(*vaos)
282
- gl.glDeleteVertexArrays(len(vaos), vaos)
283
- self.object_space.doomed_vaos.clear()
286
+ self._delete_objects(self.object_space.doomed_buffers, gl.glDeleteBuffers)
284
287
  if self.object_space.doomed_shader_programs:
285
- for program_id in self.object_space.doomed_shader_programs:
286
- gl.glDeleteProgram(program_id)
287
- self.object_space.doomed_shader_programs.clear()
288
+ self._delete_objects_one_by_one(self.object_space.doomed_shader_programs,
289
+ gl.glDeleteProgram)
290
+ if self.object_space.doomed_shaders:
291
+ self._delete_objects_one_by_one(self.object_space.doomed_shaders, gl.glDeleteShader)
292
+ if self.object_space.doomed_renderbuffers:
293
+ self._delete_objects(self.object_space.doomed_renderbuffers, gl.glDeleteRenderbuffers)
294
+
295
+ if self.doomed_vaos:
296
+ self._delete_objects(self.doomed_vaos, gl.glDeleteVertexArrays)
297
+ if self.doomed_framebuffers:
298
+ self._delete_objects(self.doomed_framebuffers, gl.glDeleteFramebuffers)
299
+
300
+ # For the functions below:
301
+ # The garbage collector introduces a race condition.
302
+ # The provided list might be appended to (and only appended to) while this
303
+ # method runs, as it's a `doomed_*` list either on the context or its
304
+ # object space. If `count` wasn't stored in a local, this method might
305
+ # leak objects.
306
+ def _delete_objects(self, list_, deletion_func):
307
+ """Release all OpenGL objects in the given list using the supplied
308
+ deletion function with the signature ``(GLuint count, GLuint *names)``.
309
+ """
310
+ count = len(list_)
311
+ to_delete = list_[:count]
312
+ del list_[:count]
313
+
314
+ deletion_func(count, (gl.GLuint * count)(*to_delete))
315
+
316
+ def _delete_objects_one_by_one(self, list_, deletion_func):
317
+ """Similar to ``_delete_objects``, but assumes the deletion functions's
318
+ signature to be ``(GLuint name)``, calling it once for each object.
319
+ """
320
+ count = len(list_)
321
+ to_delete = list_[:count]
322
+ del list_[:count]
323
+
324
+ for name in to_delete:
325
+ deletion_func(gl.GLuint(name))
288
326
 
289
327
  def destroy(self):
290
328
  """Release the context.
@@ -304,26 +342,80 @@ class Context:
304
342
  if gl._shadow_window is not None:
305
343
  gl._shadow_window.switch_to()
306
344
 
345
+ def _safe_to_operate_on_object_space(self):
346
+ """Return whether it is safe to interact with this context's object
347
+ space.
348
+
349
+ This is considered to be the case if the currently active context's
350
+ object space is the same as this context's object space and this
351
+ method is called from the main thread.
352
+ """
353
+ return (
354
+ self.object_space is gl.current_context.object_space and
355
+ threading.current_thread() is threading.main_thread()
356
+ )
357
+
358
+ def _safe_to_operate_on(self):
359
+ """Return whether it is safe to interact with this context.
360
+
361
+ This is considered to be the case if it's the current context and this
362
+ method is called from the main thread.
363
+ """
364
+ return gl.current_context is self and threading.current_thread() is threading.main_thread()
365
+
366
+ def create_program(self, *sources: Tuple[str, str], program_class=None):
367
+ """Create a ShaderProgram from OpenGL GLSL source.
368
+
369
+ This is a convenience method that takes one or more tuples of
370
+ (source_string, shader_type), and returns a
371
+ :py:class:`~pyglet.graphics.shader.ShaderProgram` instance.
372
+
373
+ `source_string` is OpenGL GLSL source code as a str, and `shader_type`
374
+ is the OpenGL shader type, such as "vertex" or "fragment". See
375
+ :py:class:`~pyglet.graphics.shader.Shader` for more information.
376
+
377
+ .. note:: This method is cached. Given the same shader sources, the
378
+ same ShaderProgram instance will be returned. For more
379
+ control over the ShaderProgram lifecycle, it is recommended
380
+ to manually create Shaders and link ShaderPrograms.
381
+
382
+ .. versionadded:: 2.0.10
383
+ """
384
+ if program := self._cached_programs.get(str(sources)):
385
+ return program
386
+
387
+ program_class = program_class or pyglet.graphics.shader.ShaderProgram
388
+ shaders = (pyglet.graphics.shader.Shader(src, srctype) for (src, srctype) in sources)
389
+ program = program_class(*shaders)
390
+ self._cached_programs[str(sources)] = program
391
+
392
+ return program
393
+
307
394
  def delete_texture(self, texture_id):
308
- """Safely delete a Texture belonging to this context.
395
+ """Safely delete a Texture belonging to this context's object space.
309
396
 
310
- Usually, the Texture is released immediately using
311
- ``glDeleteTextures``, however if another context that does not share
312
- this context's object space is currently active, the deletion will
313
- be deferred until an appropriate context is activated.
397
+ This method will delete the texture immediately via
398
+ ``glDeleteTextures`` if the current context's object space is the same
399
+ as this context's object space and it is called from the main thread.
400
+
401
+ Otherwise, the texture will only be marked for deletion, postponing
402
+ it until any context with the same object space becomes active again.
403
+
404
+ This makes it safe to call from anywhere, including other threads.
314
405
 
315
406
  :Parameters:
316
407
  `texture_id` : int
317
408
  The OpenGL name of the Texture to delete.
318
409
 
319
410
  """
320
- if self.object_space is gl.current_context.object_space:
411
+ if self._safe_to_operate_on_object_space():
321
412
  gl.glDeleteTextures(1, gl.GLuint(texture_id))
322
413
  else:
323
414
  self.object_space.doomed_textures.append(texture_id)
324
415
 
325
416
  def delete_buffer(self, buffer_id):
326
- """Safely delete a Buffer object belonging to this context.
417
+ """Safely delete a Buffer object belonging to this context's object
418
+ space.
327
419
 
328
420
  This method behaves similarly to `delete_texture`, though for
329
421
  ``glDeleteBuffers`` instead of ``glDeleteTextures``.
@@ -334,16 +426,73 @@ class Context:
334
426
 
335
427
  .. versionadded:: 1.1
336
428
  """
337
- if self.object_space is gl.current_context.object_space and False:
429
+ if self._safe_to_operate_on_object_space():
338
430
  gl.glDeleteBuffers(1, gl.GLuint(buffer_id))
339
431
  else:
340
432
  self.object_space.doomed_buffers.append(buffer_id)
341
433
 
434
+ def delete_shader_program(self, program_id):
435
+ """Safely delete a Shader Program belonging to this context's
436
+ object space.
437
+
438
+ This method behaves similarly to `delete_texture`, though for
439
+ ``glDeleteProgram`` instead of ``glDeleteTextures``.
440
+
441
+ :Parameters:
442
+ `program_id` : int
443
+ The OpenGL name of the Shader Program to delete.
444
+
445
+ .. versionadded:: 2.0
446
+ """
447
+ if self._safe_to_operate_on_object_space():
448
+ gl.glDeleteProgram(gl.GLuint(program_id))
449
+ else:
450
+ self.object_space.doomed_shader_programs.append(program_id)
451
+
452
+ def delete_shader(self, shader_id):
453
+ """Safely delete a Shader belonging to this context's object space.
454
+
455
+ This method behaves similarly to `delete_texture`, though for
456
+ ``glDeleteShader`` instead of ``glDeleteTextures``.
457
+
458
+ :Parameters:
459
+ `shader_id` : int
460
+ The OpenGL name of the Shader to delete.
461
+
462
+ .. versionadded:: 2.0.10
463
+ """
464
+ if self._safe_to_operate_on_object_space():
465
+ gl.glDeleteShader(gl.GLuint(shader_id))
466
+ else:
467
+ self.object_space.doomed_shaders.append(shader_id)
468
+
469
+ def delete_renderbuffer(self, rbo_id):
470
+ """Safely delete a Renderbuffer Object belonging to this context's
471
+ object space.
472
+
473
+ This method behaves similarly to `delete_texture`, though for
474
+ ``glDeleteRenderbuffers`` instead of ``glDeleteTextures``.
475
+
476
+ :Parameters:
477
+ `rbo_id` : int
478
+ The OpenGL name of the Shader Program to delete.
479
+
480
+ .. versionadded:: 2.0.10
481
+ """
482
+ if self._safe_to_operate_on_object_space():
483
+ gl.glDeleteRenderbuffers(1, gl.GLuint(rbo_id))
484
+ else:
485
+ self.object_space.doomed_renderbuffers.append(rbo_id)
486
+
342
487
  def delete_vao(self, vao_id):
343
488
  """Safely delete a Vertex Array Object belonging to this context.
344
489
 
345
- This method behaves similarly to `delete_texture`, though for
346
- ``glDeleteVertexArrays`` instead of ``glDeleteTextures``.
490
+ If this context is not the current context or this method is not
491
+ called from the main thread, its deletion will be postponed until
492
+ this context is next made active again.
493
+
494
+ Otherwise, this method will immediately delete the VAO via
495
+ ``glDeleteVertexArrays``.
347
496
 
348
497
  :Parameters:
349
498
  `vao_id` : int
@@ -351,27 +500,27 @@ class Context:
351
500
 
352
501
  .. versionadded:: 2.0
353
502
  """
354
- if gl.current_context and self.object_space is gl.current_context.object_space and False:
503
+ if self._safe_to_operate_on():
355
504
  gl.glDeleteVertexArrays(1, gl.GLuint(vao_id))
356
505
  else:
357
- self.object_space.doomed_vaos.append(vao_id)
506
+ self.doomed_vaos.append(vao_id)
358
507
 
359
- def delete_shader_program(self, program_id):
360
- """Safely delete a Shader Program belonging to this context.
508
+ def delete_framebuffer(self, fbo_id):
509
+ """Safely delete a Framebuffer Object belonging to this context.
361
510
 
362
- This method behaves similarly to `delete_texture`, though for
363
- ``glDeleteProgram`` instead of ``glDeleteTextures``.
511
+ This method behaves similarly to `delete_vao`, though for
512
+ ``glDeleteFramebuffers`` instead of ``glDeleteVertexArrays``.
364
513
 
365
514
  :Parameters:
366
- `program_id` : int
367
- The OpenGL name of the Shader Program to delete.
515
+ `fbo_id` : int
516
+ The OpenGL name of the Framebuffer Object to delete.
368
517
 
369
- .. versionadded:: 2.0
518
+ .. versionadded:: 2.0.10
370
519
  """
371
- if gl.current_context is self:
372
- gl.glDeleteProgram(program_id)
520
+ if self._safe_to_operate_on():
521
+ gl.glDeleteFramebuffers(1, gl.GLuint(fbo_id))
373
522
  else:
374
- self.object_space.doomed_shader_programs.append(program_id)
523
+ self.doomed_framebuffers.append(fbo_id)
375
524
 
376
525
  def get_info(self):
377
526
  """Get the OpenGL information for this context.
@@ -63,10 +63,12 @@ class GLInfo:
63
63
 
64
64
  This method is called automatically for the default context.
65
65
  """
66
- from pyglet.gl.gl import glGetString, glGetStringi, GL_NUM_EXTENSIONS
67
-
68
66
  self._have_context = True
67
+
69
68
  if not self._have_info:
69
+
70
+ from pyglet.gl.gl import glGetString, glGetStringi, GL_NUM_EXTENSIONS
71
+
70
72
  self.vendor = asstr(cast(glGetString(GL_VENDOR), c_char_p).value)
71
73
  self.renderer = asstr(cast(glGetString(GL_RENDERER), c_char_p).value)
72
74
  self.version = asstr(cast(glGetString(GL_VERSION), c_char_p).value)
@@ -62,8 +62,7 @@ def errcheck(result, func, arguments):
62
62
  print(name)
63
63
 
64
64
  from pyglet import gl
65
- context = gl.current_context
66
- if not context:
65
+ if not gl.current_context:
67
66
  raise GLException('No GL context; create a Window first')
68
67
  error = gl.glGetError()
69
68
  if error:
@@ -68,12 +68,12 @@ class Win32Config(Config):
68
68
  if pf:
69
69
  return [Win32CanvasConfig(canvas, pf, self)]
70
70
  else:
71
- return []
71
+ return []
72
72
 
73
73
  def _get_arb_pixel_format_matching_configs(self, canvas):
74
74
  """Get configs using the WGL_ARB_pixel_format extension.
75
75
  This method assumes a (dummy) GL context is already created."""
76
-
76
+
77
77
  # Check for required extensions
78
78
  if self.sample_buffers or self.samples:
79
79
  if not gl_info.have_extension('GL_ARB_multisample'):
@@ -85,7 +85,7 @@ class Win32Config(Config):
85
85
  attr = Win32CanvasConfigARB.attribute_ids.get(name, None)
86
86
  if attr and value is not None:
87
87
  attrs.extend([attr, int(value)])
88
- attrs.append(0)
88
+ attrs.append(0)
89
89
  attrs = (c_int * len(attrs))(*attrs)
90
90
 
91
91
  pformats = (c_int * 16)()
@@ -98,7 +98,7 @@ class Win32Config(Config):
98
98
 
99
99
  class Win32CanvasConfig(CanvasConfig):
100
100
  def __init__(self, canvas, pf, config):
101
- super(Win32CanvasConfig, self).__init__(canvas, config)
101
+ super().__init__(canvas, config)
102
102
  self._pf = pf
103
103
  self._pfd = PIXELFORMATDESCRIPTOR()
104
104
 
@@ -153,14 +153,14 @@ class Win32CanvasConfigARB(CanvasConfig):
153
153
  }
154
154
 
155
155
  def __init__(self, canvas, pf, config):
156
- super(Win32CanvasConfigARB, self).__init__(canvas, config)
156
+ super().__init__(canvas, config)
157
157
  self._pf = pf
158
-
158
+
159
159
  names = list(self.attribute_ids.keys())
160
160
  attrs = list(self.attribute_ids.values())
161
161
  attrs = (c_int * len(attrs))(*attrs)
162
162
  values = (c_int * len(attrs))()
163
-
163
+
164
164
  wglext_arb.wglGetPixelFormatAttribivARB(canvas.hdc, pf, 0, len(attrs), attrs, values)
165
165
 
166
166
  for name, value in zip(names, values):
@@ -182,35 +182,21 @@ class Win32CanvasConfigARB(CanvasConfig):
182
182
  _gdi32.SetPixelFormat(canvas.hdc, self._pf, None)
183
183
 
184
184
 
185
- class Win32Context(Context):
185
+ class _BaseWin32Context(Context):
186
186
  def __init__(self, config, share):
187
- super(Win32Context, self).__init__(config, share)
187
+ super().__init__(config, share)
188
188
  self._context = None
189
189
 
190
- def attach(self, canvas):
191
- super(Win32Context, self).attach(canvas)
192
-
193
- if not self._context:
194
- self.config._set_pixel_format(canvas)
195
- self._context = wgl.wglCreateContext(canvas.hdc)
196
-
197
- share = self.context_share
198
- if share:
199
- if not share.canvas:
200
- raise RuntimeError('Share context has no canvas.')
201
- if not wgl.wglShareLists(share._context, self._context):
202
- raise gl.ContextException('Unable to share contexts.')
203
-
204
190
  def set_current(self):
205
191
  if self._context is not None and self != gl.current_context:
206
192
  wgl.wglMakeCurrent(self.canvas.hdc, self._context)
207
- super(Win32Context, self).set_current()
193
+ super().set_current()
208
194
 
209
195
  def detach(self):
210
196
  if self.canvas:
211
197
  wgl.wglDeleteContext(self._context)
212
198
  self._context = None
213
- super(Win32Context, self).detach()
199
+ super().detach()
214
200
 
215
201
  def flip(self):
216
202
  _gdi32.SwapBuffers(self.canvas.hdc)
@@ -224,9 +210,23 @@ class Win32Context(Context):
224
210
  wglext_arb.wglSwapIntervalEXT(int(vsync))
225
211
 
226
212
 
227
- class Win32ARBContext(Win32Context):
228
- def __init__(self, config, share):
229
- super(Win32ARBContext, self).__init__(config, share)
213
+ class Win32Context(_BaseWin32Context):
214
+ def attach(self, canvas):
215
+ super().attach(canvas)
216
+
217
+ if not self._context:
218
+ self.config._set_pixel_format(canvas)
219
+ self._context = wgl.wglCreateContext(canvas.hdc)
220
+
221
+ share = self.context_share
222
+ if share:
223
+ if not share.canvas:
224
+ raise RuntimeError('Share context has no canvas.')
225
+ if not wgl.wglShareLists(share._context, self._context):
226
+ raise gl.ContextException('Unable to share contexts.')
227
+
228
+
229
+ class Win32ARBContext(_BaseWin32Context):
230
230
 
231
231
  def attach(self, canvas):
232
232
  share = self.context_share
@@ -244,7 +244,7 @@ class Win32ARBContext(Win32Context):
244
244
  if self.config.forward_compatible:
245
245
  flags |= wglext_arb.WGL_CONTEXT_FORWARD_COMPATIBLE_BIT_ARB
246
246
  if self.config.debug:
247
- flags |= wglext_arb.WGL_DEBUG_BIT_ARB
247
+ flags |= wglext_arb.WGL_CONTEXT_DEBUG_BIT_ARB
248
248
  if flags:
249
249
  attribs.extend([wglext_arb.WGL_CONTEXT_FLAGS_ARB, flags])
250
250
  attribs.append(0)
@@ -252,4 +252,4 @@ class Win32ARBContext(Win32Context):
252
252
 
253
253
  self.config._set_pixel_format(canvas)
254
254
  self._context = wglext_arb.wglCreateContextAttribsARB(canvas.hdc, share, attribs)
255
- super(Win32ARBContext, self).attach(canvas)
255
+ super().attach(canvas)
@@ -55,10 +55,11 @@ def draw(size, mode, **data):
55
55
  assert size == len(array) // attribute.count, 'Data for %s is incorrect length' % fmt
56
56
 
57
57
  buffer = BufferObject(size * attribute.stride)
58
- attribute.set_region(buffer, 0, size, array)
58
+ data = (attribute.c_type * len(array))(*array)
59
+ buffer.set_data(data)
60
+
59
61
  attribute.enable()
60
62
  attribute.set_pointer(buffer.ptr)
61
-
62
63
  buffers.append(buffer) # Don't garbage collect it.
63
64
 
64
65
  glDrawArrays(mode, 0, size)
@@ -108,10 +109,12 @@ def draw_indexed(size, mode, indices, **data):
108
109
  assert size == len(array) // attribute.count, 'Data for %s is incorrect length' % fmt
109
110
 
110
111
  buffer = BufferObject(size * attribute.stride)
111
- attribute.set_region(buffer, 0, size, array)
112
+ data = (attribute.c_type * len(array))(*array)
113
+ buffer.set_data(data)
114
+
112
115
  attribute.enable()
113
116
  attribute.set_pointer(buffer.ptr)
114
- buffers.append(buffer)
117
+ buffers.append(buffer) # Don't garbage collect it.
115
118
 
116
119
  if size <= 0xff:
117
120
  index_type = GL_UNSIGNED_BYTE
@@ -188,24 +191,9 @@ def get_default_batch():
188
191
  return pyglet.gl.current_context.pyglet_graphics_default_batch
189
192
 
190
193
 
191
- def get_default_group():
192
- try:
193
- return pyglet.gl.current_context.pyglet_graphics_default_group
194
- except AttributeError:
195
- pyglet.gl.current_context.pyglet_graphics_default_group = ShaderGroup(get_default_shader())
196
- return pyglet.gl.current_context.pyglet_graphics_default_group
197
-
198
-
199
194
  def get_default_shader():
200
- try:
201
- return pyglet.gl.current_context.pyglet_graphics_default_shader
202
- except AttributeError:
203
- _default_vert_shader = pyglet.graphics.shader.Shader(_vertex_source, 'vertex')
204
- _default_frag_shader = pyglet.graphics.shader.Shader(_fragment_source, 'fragment')
205
- default_shader_program = pyglet.graphics.shader.ShaderProgram(_default_vert_shader, _default_frag_shader)
206
- pyglet.gl.current_context.pyglet_graphics_default_shader = default_shader_program
207
- return pyglet.gl.current_context.pyglet_graphics_default_shader
208
-
195
+ return pyglet.gl.current_context.create_program((_vertex_source, 'vertex'),
196
+ (_fragment_source, 'fragment'))
209
197
 
210
198
  class Batch:
211
199
  """Manage a collection of drawables for batched rendering.