pyglet 3.0.dev5__tar.gz → 3.0.dev6__tar.gz

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 (994) hide show
  1. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/PKG-INFO +1 -1
  2. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/doc/index.rst +1 -0
  3. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/doc/programming_guide/camera.rst +3 -2
  4. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/doc/requirements.txt +2 -2
  5. pyglet-3.0.dev6/examples/graphics/uniform_buffer_object.py +152 -0
  6. pyglet-3.0.dev6/examples/model/model.py +44 -0
  7. pyglet-3.0.dev6/examples/window/file_drag_drops.py +114 -0
  8. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/__init__.py +1 -1
  9. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/event.py +3 -23
  10. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/graphics/__init__.py +2 -0
  11. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/graphics/api/gl/state.py +22 -5
  12. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/graphics/api/gl2/state.py +2 -2
  13. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/graphics/api/webgl/state.py +24 -5
  14. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/graphics/buffer.py +83 -0
  15. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/graphics/draw.py +19 -5
  16. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/graphics/shader.py +29 -8
  17. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/graphics/state.py +3 -1
  18. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/libs/win32/__init__.py +10 -0
  19. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/libs/win32/constants.py +13 -0
  20. pyglet-3.0.dev6/pyglet/libs/win32/context_managers.py +139 -0
  21. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/libs/win32/types.py +71 -0
  22. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/window/__init__.py +47 -0
  23. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/window/camera/base.py +15 -31
  24. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/window/cocoa/pyglet_view.py +69 -20
  25. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/window/win32/__init__.py +172 -12
  26. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/window/xlib/__init__.py +58 -0
  27. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/tests/integration/graphics/test_cameras.py +1 -1
  28. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/tests/integration/graphics/test_groups.py +15 -0
  29. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/tests/interactive/graphics/group_ordering.py +0 -1
  30. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/tests/unit/test_events.py +79 -0
  31. pyglet-3.0.dev5/examples/model/model.py +0 -56
  32. pyglet-3.0.dev5/pyglet/libs/win32/context_managers.py +0 -74
  33. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/.coveragerc +0 -0
  34. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
  35. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
  36. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/.github/ISSUE_TEMPLATE/questions--or-other.md +0 -0
  37. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/.github/workflows/codeql.yml +0 -0
  38. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/.github/workflows/unittests.yml +0 -0
  39. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/.gitignore +0 -0
  40. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/.readthedocs.yml +0 -0
  41. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/API_CHANGES.rst +0 -0
  42. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/LICENSE +0 -0
  43. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/MANIFEST.in +0 -0
  44. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/README.md +0 -0
  45. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/RELEASE_NOTES +0 -0
  46. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/TODO.txt +0 -0
  47. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/contrib/README.md +0 -0
  48. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/contrib/aseprite_codec/README +0 -0
  49. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/contrib/aseprite_codec/asedemo.py +0 -0
  50. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/contrib/aseprite_codec/aseprite.py +0 -0
  51. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/contrib/aseprite_codec/running.ase +0 -0
  52. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/contrib/dist_field/README +0 -0
  53. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/contrib/dist_field/genfield.py +0 -0
  54. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/contrib/dist_field/py.df.png +0 -0
  55. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/contrib/dist_field/py.png +0 -0
  56. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/contrib/dist_field/renderfield.py +0 -0
  57. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/contrib/qt_sprite_preview.py +0 -0
  58. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/contrib/scenemanager.py +0 -0
  59. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/contrib/spritebenchmark.py +0 -0
  60. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/contrib/svg/hello_world.svg +0 -0
  61. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/contrib/svg/svg_test.py +0 -0
  62. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/contrib/toys/follow_mouse.py +0 -0
  63. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/doc/Makefile +0 -0
  64. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/doc/_static/css/custom.css +0 -0
  65. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/doc/_static/favicon.ico +0 -0
  66. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/doc/_static/logo.png +0 -0
  67. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/doc/_static/logo5.svg +0 -0
  68. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/doc/_static/relatedlogo.png +0 -0
  69. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/doc/conf.py +0 -0
  70. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/doc/external_resources.rst +0 -0
  71. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/doc/internal/contributing.rst +0 -0
  72. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/doc/internal/dist.rst +0 -0
  73. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/doc/internal/doc.rst +0 -0
  74. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/doc/internal/generated.rst +0 -0
  75. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/doc/internal/gl.rst +0 -0
  76. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/doc/internal/media_logging_manual.rst +0 -0
  77. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/doc/internal/media_manual.rst +0 -0
  78. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/doc/internal/testing.rst +0 -0
  79. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/doc/internal/virtualenv.rst +0 -0
  80. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/doc/internal/wraptypes-class.svg +0 -0
  81. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/doc/internal/wraptypes.rst +0 -0
  82. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/doc/make.bat +0 -0
  83. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/doc/modules/app.rst +0 -0
  84. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/doc/modules/clock.rst +0 -0
  85. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/doc/modules/config/base.rst +0 -0
  86. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/doc/modules/config/gl.rst +0 -0
  87. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/doc/modules/config/index.rst +0 -0
  88. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/doc/modules/customtypes.rst +0 -0
  89. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/doc/modules/dialog.rst +0 -0
  90. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/doc/modules/display.rst +0 -0
  91. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/doc/modules/enums.rst +0 -0
  92. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/doc/modules/event.rst +0 -0
  93. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/doc/modules/font/group.rst +0 -0
  94. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/doc/modules/font/index.rst +0 -0
  95. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/doc/modules/font/user.rst +0 -0
  96. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/doc/modules/graphics/allocation.rst +0 -0
  97. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/doc/modules/graphics/atlas.rst +0 -0
  98. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/doc/modules/graphics/draw.rst +0 -0
  99. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/doc/modules/graphics/framebuffer.rst +0 -0
  100. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/doc/modules/graphics/index.rst +0 -0
  101. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/doc/modules/graphics/shader.rst +0 -0
  102. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/doc/modules/graphics/texture.rst +0 -0
  103. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/doc/modules/graphics/vertexbuffer.rst +0 -0
  104. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/doc/modules/graphics/vertexdomain.rst +0 -0
  105. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/doc/modules/gui.rst +0 -0
  106. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/doc/modules/image/animation.rst +0 -0
  107. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/doc/modules/image/index.rst +0 -0
  108. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/doc/modules/info.rst +0 -0
  109. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/doc/modules/input.rst +0 -0
  110. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/doc/modules/math.rst +0 -0
  111. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/doc/modules/media.rst +0 -0
  112. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/doc/modules/media_synthesis.rst +0 -0
  113. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/doc/modules/models.rst +0 -0
  114. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/doc/modules/pyglet.rst +0 -0
  115. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/doc/modules/resource.rst +0 -0
  116. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/doc/modules/shapes.rst +0 -0
  117. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/doc/modules/sprite.rst +0 -0
  118. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/doc/modules/text/caret.rst +0 -0
  119. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/doc/modules/text/document.rst +0 -0
  120. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/doc/modules/text/index.rst +0 -0
  121. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/doc/modules/text/layout.rst +0 -0
  122. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/doc/modules/window.rst +0 -0
  123. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/doc/modules/window_key.rst +0 -0
  124. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/doc/modules/window_mouse.rst +0 -0
  125. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/doc/programming_guide/context.rst +0 -0
  126. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/doc/programming_guide/debug.rst +0 -0
  127. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/doc/programming_guide/eventloop.rst +0 -0
  128. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/doc/programming_guide/events.rst +0 -0
  129. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/doc/programming_guide/examplegame.rst +0 -0
  130. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/doc/programming_guide/gl.rst +0 -0
  131. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/doc/programming_guide/gui.rst +0 -0
  132. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/doc/programming_guide/image.rst +0 -0
  133. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/doc/programming_guide/img/abstract_image.png +0 -0
  134. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/doc/programming_guide/img/abstract_image.svg +0 -0
  135. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/doc/programming_guide/img/buffer_image.png +0 -0
  136. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/doc/programming_guide/img/buffer_image.svg +0 -0
  137. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/doc/programming_guide/img/context_flow.png +0 -0
  138. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/doc/programming_guide/img/context_flow.svg +0 -0
  139. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/doc/programming_guide/img/cursor_mac_crosshair.png +0 -0
  140. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/doc/programming_guide/img/cursor_mac_default.png +0 -0
  141. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/doc/programming_guide/img/cursor_mac_hand.png +0 -0
  142. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/doc/programming_guide/img/cursor_mac_no.png +0 -0
  143. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/doc/programming_guide/img/cursor_mac_size_down.png +0 -0
  144. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/doc/programming_guide/img/cursor_mac_size_left.png +0 -0
  145. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/doc/programming_guide/img/cursor_mac_size_left_right.png +0 -0
  146. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/doc/programming_guide/img/cursor_mac_size_right.png +0 -0
  147. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/doc/programming_guide/img/cursor_mac_size_up.png +0 -0
  148. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/doc/programming_guide/img/cursor_mac_size_up_down.png +0 -0
  149. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/doc/programming_guide/img/cursor_mac_text.png +0 -0
  150. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/doc/programming_guide/img/cursor_mac_wait.png +0 -0
  151. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/doc/programming_guide/img/cursor_win_crosshair.png +0 -0
  152. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/doc/programming_guide/img/cursor_win_default.png +0 -0
  153. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/doc/programming_guide/img/cursor_win_hand.png +0 -0
  154. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/doc/programming_guide/img/cursor_win_help.png +0 -0
  155. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/doc/programming_guide/img/cursor_win_no.png +0 -0
  156. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/doc/programming_guide/img/cursor_win_size.png +0 -0
  157. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/doc/programming_guide/img/cursor_win_size_left_right.png +0 -0
  158. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/doc/programming_guide/img/cursor_win_size_nesw.png +0 -0
  159. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/doc/programming_guide/img/cursor_win_size_nwse.png +0 -0
  160. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/doc/programming_guide/img/cursor_win_size_up_down.png +0 -0
  161. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/doc/programming_guide/img/cursor_win_text.png +0 -0
  162. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/doc/programming_guide/img/cursor_win_wait.png +0 -0
  163. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/doc/programming_guide/img/cursor_win_wait_arrow.png +0 -0
  164. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/doc/programming_guide/img/explosion.png +0 -0
  165. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/doc/programming_guide/img/font_metrics.png +0 -0
  166. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/doc/programming_guide/img/font_metrics.svg +0 -0
  167. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/doc/programming_guide/img/image_classes.png +0 -0
  168. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/doc/programming_guide/img/image_classes.svg +0 -0
  169. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/doc/programming_guide/img/image_grid.png +0 -0
  170. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/doc/programming_guide/img/image_grid.svg +0 -0
  171. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/doc/programming_guide/img/image_sequence.png +0 -0
  172. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/doc/programming_guide/img/image_sequence.svg +0 -0
  173. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/doc/programming_guide/img/mouse_coordinates.png +0 -0
  174. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/doc/programming_guide/img/mouse_coordinates.svg +0 -0
  175. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/doc/programming_guide/img/screens.png +0 -0
  176. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/doc/programming_guide/img/screens.svg +0 -0
  177. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/doc/programming_guide/img/text_classes.png +0 -0
  178. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/doc/programming_guide/img/text_classes.svg +0 -0
  179. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/doc/programming_guide/img/window_location.png +0 -0
  180. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/doc/programming_guide/img/window_location.svg +0 -0
  181. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/doc/programming_guide/img/window_osx_borderless.png +0 -0
  182. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/doc/programming_guide/img/window_osx_default.png +0 -0
  183. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/doc/programming_guide/img/window_osx_dialog.png +0 -0
  184. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/doc/programming_guide/img/window_osx_tool.png +0 -0
  185. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/doc/programming_guide/img/window_xp_default.png +0 -0
  186. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/doc/programming_guide/img/window_xp_dialog.png +0 -0
  187. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/doc/programming_guide/img/window_xp_overlay.png +0 -0
  188. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/doc/programming_guide/img/window_xp_tool.png +0 -0
  189. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/doc/programming_guide/img/window_xp_transparent.png +0 -0
  190. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/doc/programming_guide/input.rst +0 -0
  191. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/doc/programming_guide/installation.rst +0 -0
  192. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/doc/programming_guide/keyboard.rst +0 -0
  193. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/doc/programming_guide/math.rst +0 -0
  194. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/doc/programming_guide/media.rst +0 -0
  195. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/doc/programming_guide/migration.rst +0 -0
  196. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/doc/programming_guide/migration2.rst +0 -0
  197. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/doc/programming_guide/models.rst +0 -0
  198. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/doc/programming_guide/mouse.rst +0 -0
  199. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/doc/programming_guide/opengles.rst +0 -0
  200. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/doc/programming_guide/options.rst +0 -0
  201. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/doc/programming_guide/pyodide.rst +0 -0
  202. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/doc/programming_guide/quickstart.rst +0 -0
  203. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/doc/programming_guide/rendering.rst +0 -0
  204. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/doc/programming_guide/resources.rst +0 -0
  205. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/doc/programming_guide/shapes.rst +0 -0
  206. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/doc/programming_guide/text.rst +0 -0
  207. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/doc/programming_guide/texture.rst +0 -0
  208. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/doc/programming_guide/time.rst +0 -0
  209. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/doc/programming_guide/windowing.rst +0 -0
  210. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/examples/dpi_scaled_window.py +0 -0
  211. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/examples/events/events_key_state_handler.py +0 -0
  212. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/examples/events/register_event_type.py +0 -0
  213. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/examples/events/window_events.py +0 -0
  214. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/examples/events/window_platform_event.py +0 -0
  215. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/examples/game/resources/asteroid.png +0 -0
  216. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/examples/game/resources/bullet.png +0 -0
  217. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/examples/game/resources/bullet.wav +0 -0
  218. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/examples/game/resources/engine_flame.png +0 -0
  219. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/examples/game/resources/player.png +0 -0
  220. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/examples/game/version1/asteroid.py +0 -0
  221. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/examples/game/version1/game/__init__.py +0 -0
  222. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/examples/game/version1/game/load.py +0 -0
  223. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/examples/game/version1/game/util.py +0 -0
  224. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/examples/game/version2/asteroid.py +0 -0
  225. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/examples/game/version2/game/__init__.py +0 -0
  226. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/examples/game/version2/game/load.py +0 -0
  227. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/examples/game/version2/game/physicalobject.py +0 -0
  228. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/examples/game/version2/game/player.py +0 -0
  229. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/examples/game/version2/game/util.py +0 -0
  230. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/examples/game/version3/asteroid.py +0 -0
  231. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/examples/game/version3/game/__init__.py +0 -0
  232. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/examples/game/version3/game/load.py +0 -0
  233. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/examples/game/version3/game/physicalobject.py +0 -0
  234. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/examples/game/version3/game/player.py +0 -0
  235. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/examples/game/version3/game/util.py +0 -0
  236. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/examples/game/version4/asteroid.py +0 -0
  237. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/examples/game/version4/game/__init__.py +0 -0
  238. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/examples/game/version4/game/asteroid.py +0 -0
  239. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/examples/game/version4/game/bullet.py +0 -0
  240. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/examples/game/version4/game/load.py +0 -0
  241. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/examples/game/version4/game/physicalobject.py +0 -0
  242. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/examples/game/version4/game/player.py +0 -0
  243. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/examples/game/version4/game/util.py +0 -0
  244. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/examples/game/version5/asteroid.py +0 -0
  245. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/examples/game/version5/game/__init__.py +0 -0
  246. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/examples/game/version5/game/asteroid.py +0 -0
  247. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/examples/game/version5/game/bullet.py +0 -0
  248. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/examples/game/version5/game/load.py +0 -0
  249. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/examples/game/version5/game/physicalobject.py +0 -0
  250. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/examples/game/version5/game/player.py +0 -0
  251. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/examples/game/version5/game/util.py +0 -0
  252. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/examples/graphics/instancing.py +0 -0
  253. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/examples/graphics/instancing_order.py +0 -0
  254. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/examples/gui/bar.png +0 -0
  255. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/examples/gui/button_hover.png +0 -0
  256. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/examples/gui/button_pressed.png +0 -0
  257. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/examples/gui/button_unpressed.png +0 -0
  258. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/examples/gui/knob.png +0 -0
  259. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/examples/gui/widgets.py +0 -0
  260. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/examples/hello_world.py +0 -0
  261. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/examples/image/image_convert.py +0 -0
  262. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/examples/image/image_display.py +0 -0
  263. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/examples/input/apple_remote.py +0 -0
  264. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/examples/input/controller.py +0 -0
  265. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/examples/input/input.py +0 -0
  266. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/examples/input/joystick.py +0 -0
  267. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/examples/input/tablet.py +0 -0
  268. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/examples/media/media_info.py +0 -0
  269. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/examples/media/media_player.py +0 -0
  270. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/examples/media/noisy/README +0 -0
  271. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/examples/media/noisy/ball.png +0 -0
  272. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/examples/media/noisy/ball.wav +0 -0
  273. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/examples/media/noisy/noisy.py +0 -0
  274. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/examples/media/soundspace/README +0 -0
  275. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/examples/media/soundspace/reader.py +0 -0
  276. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/examples/media/soundspace/res/bass.wav +0 -0
  277. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/examples/media/soundspace/res/drums.wav +0 -0
  278. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/examples/media/soundspace/res/guitar.wav +0 -0
  279. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/examples/media/soundspace/res/piano.wav +0 -0
  280. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/examples/media/soundspace/res/space.txt +0 -0
  281. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/examples/media/soundspace/soundspace.py +0 -0
  282. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/examples/media/synthesizer.py +0 -0
  283. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/examples/media/video.py +0 -0
  284. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/examples/model/box.mtl +0 -0
  285. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/examples/model/box.obj +0 -0
  286. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/examples/model/fpscamera.py +0 -0
  287. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/examples/model/logo3d.mtl +0 -0
  288. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/examples/model/logo3d.obj +0 -0
  289. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/examples/model/pyglet.png +0 -0
  290. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/examples/opengl/compute_shader.py +0 -0
  291. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/examples/opengl/egl_context.py +0 -0
  292. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/examples/opengl/minimal_shader.py +0 -0
  293. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/examples/opengl/opengl_context.py +0 -0
  294. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/examples/opengl/opengl_core.py +0 -0
  295. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/examples/opengl/opengl_scissor.py +0 -0
  296. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/examples/opengl/pyglet.png +0 -0
  297. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/examples/opengl/torus.py +0 -0
  298. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/examples/opengl/transform_shader.py +0 -0
  299. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/examples/programming_guide/animation.py +0 -0
  300. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/examples/programming_guide/dinosaur.gif +0 -0
  301. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/examples/programming_guide/events.py +0 -0
  302. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/examples/programming_guide/hello_world.py +0 -0
  303. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/examples/programming_guide/image_viewer.py +0 -0
  304. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/examples/programming_guide/kitten.jpg +0 -0
  305. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/examples/programming_guide/window_subclass.py +0 -0
  306. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/examples/resources/Brick1Blue.png +0 -0
  307. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/examples/resources/Brick1Crack3.png +0 -0
  308. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/examples/resources/Brick1Gray.png +0 -0
  309. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/examples/resources/kitten.jpg +0 -0
  310. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/examples/resources/pyglet.png +0 -0
  311. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/examples/shapes.py +0 -0
  312. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/examples/sprite/depth_sprite.py +0 -0
  313. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/examples/sprite/display_sprite.py +0 -0
  314. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/examples/sprite/multi_texture_sprite.py +0 -0
  315. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/examples/sprite/multi_texture_sprite_animation.py +0 -0
  316. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/examples/sprite/multi_texture_sprite_texture_array_animation.py +0 -0
  317. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/examples/sprite/sprite_batching.py +0 -0
  318. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/examples/sprite/toggle_sprite_shader.py +0 -0
  319. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/examples/text/advanced_font.py +0 -0
  320. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/examples/text/font_groups.py +0 -0
  321. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/examples/text/html_label.py +0 -0
  322. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/examples/text/pyglet.png +0 -0
  323. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/examples/text/text_input.py +0 -0
  324. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/examples/text/user_bitmap_font.py +0 -0
  325. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/examples/timer.py +0 -0
  326. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/examples/window/camera/camera_group.py +0 -0
  327. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/examples/window/camera/camera_scissor.py +0 -0
  328. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/examples/window/camera/camera_views.py +0 -0
  329. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/examples/window/clipboard.py +0 -0
  330. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/examples/window/file_dialogs.py +0 -0
  331. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/examples/window/fixed_resolution.py +0 -0
  332. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/examples/window/fps_change.py +0 -0
  333. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/examples/window/multiple_windows.py +0 -0
  334. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/examples/window/no_backend.py +0 -0
  335. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/examples/window/overlay_window.py +0 -0
  336. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/examples/window/transparent_window.py +0 -0
  337. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/make.py +0 -0
  338. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/__init__.pyi +0 -0
  339. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/app/__init__.py +0 -0
  340. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/app/async_app.py +0 -0
  341. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/app/base.py +0 -0
  342. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/app/cocoa.py +0 -0
  343. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/app/linux.py +0 -0
  344. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/app/win32.py +0 -0
  345. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/clock.py +0 -0
  346. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/config/__init__.py +0 -0
  347. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/config/base.py +0 -0
  348. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/config/gl/__init__.py +0 -0
  349. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/config/gl/egl.py +0 -0
  350. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/config/gl/macos.py +0 -0
  351. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/config/gl/webgl.py +0 -0
  352. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/config/gl/windows.py +0 -0
  353. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/config/gl/x11.py +0 -0
  354. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/customtypes.py +0 -0
  355. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/display/__init__.py +0 -0
  356. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/display/__init__.pyi +0 -0
  357. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/display/base.py +0 -0
  358. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/display/cocoa.py +0 -0
  359. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/display/emscripten.py +0 -0
  360. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/display/headless.py +0 -0
  361. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/display/wayland.py +0 -0
  362. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/display/win32.py +0 -0
  363. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/display/xlib.py +0 -0
  364. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/display/xlib_vidmoderestore.py +0 -0
  365. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/enums.py +0 -0
  366. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/experimental/README.md +0 -0
  367. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/experimental/flaccodec.py +0 -0
  368. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/experimental/geoshader_sprite.py +0 -0
  369. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/experimental/hidraw.py +0 -0
  370. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/experimental/jobs.py +0 -0
  371. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/experimental/net.py +0 -0
  372. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/experimental/particles.py +0 -0
  373. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/experimental/win32priority.py +0 -0
  374. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/extlibs/__init__.py +0 -0
  375. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/extlibs/earcut.py +0 -0
  376. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/extlibs/png.py +0 -0
  377. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/font/__init__.py +0 -0
  378. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/font/base.py +0 -0
  379. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/font/dwrite/__init__.py +0 -0
  380. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/font/dwrite/d2d1_lib.py +0 -0
  381. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/font/dwrite/d2d1_types_lib.py +0 -0
  382. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/font/dwrite/dwrite_lib.py +0 -0
  383. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/font/fontconfig.py +0 -0
  384. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/font/freetype.py +0 -0
  385. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/font/freetype_lib.py +0 -0
  386. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/font/group.py +0 -0
  387. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/font/harfbuzz.py +0 -0
  388. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/font/pyodide_js.py +0 -0
  389. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/font/quartz.py +0 -0
  390. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/font/ttf.py +0 -0
  391. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/font/user.py +0 -0
  392. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/font/win32.py +0 -0
  393. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/graphics/allocation.py +0 -0
  394. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/graphics/api/__init__.py +0 -0
  395. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/graphics/api/base.py +0 -0
  396. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/graphics/api/gl/__init__.py +0 -0
  397. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/graphics/api/gl/base.py +0 -0
  398. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/graphics/api/gl/buffer.py +0 -0
  399. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/graphics/api/gl/cocoa/__init__.py +0 -0
  400. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/graphics/api/gl/cocoa/context.py +0 -0
  401. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/graphics/api/gl/context.py +0 -0
  402. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/graphics/api/gl/default_shaders.py +0 -0
  403. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/graphics/api/gl/draw.py +0 -0
  404. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/graphics/api/gl/egl/__init__.py +0 -0
  405. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/graphics/api/gl/egl/context.py +0 -0
  406. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/graphics/api/gl/enums.py +0 -0
  407. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/graphics/api/gl/framebuffer.py +0 -0
  408. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/graphics/api/gl/gl.py +0 -0
  409. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/graphics/api/gl/gl_info.py +0 -0
  410. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/graphics/api/gl/global_opengl.py +0 -0
  411. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/graphics/api/gl/lib.py +0 -0
  412. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/graphics/api/gl/renderer.py +0 -0
  413. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/graphics/api/gl/shader.py +0 -0
  414. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/graphics/api/gl/shapes.py +0 -0
  415. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/graphics/api/gl/sprite.py +0 -0
  416. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/graphics/api/gl/text.py +0 -0
  417. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/graphics/api/gl/texture.py +0 -0
  418. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/graphics/api/gl/vertexarray.py +0 -0
  419. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/graphics/api/gl/vertexdomain.py +0 -0
  420. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/graphics/api/gl/win32/__init__.py +0 -0
  421. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/graphics/api/gl/win32/context.py +0 -0
  422. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/graphics/api/gl/win32/wgl_info.py +0 -0
  423. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/graphics/api/gl/xlib/__init__.py +0 -0
  424. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/graphics/api/gl/xlib/context.py +0 -0
  425. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/graphics/api/gl/xlib/glx_info.py +0 -0
  426. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/graphics/api/gl1/__init__.py +0 -0
  427. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/graphics/api/gl1/gl_compat.py +0 -0
  428. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/graphics/api/gl2/__init__.py +0 -0
  429. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/graphics/api/gl2/buffer.py +0 -0
  430. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/graphics/api/gl2/draw.py +0 -0
  431. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/graphics/api/gl2/global_opengl.py +0 -0
  432. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/graphics/api/gl2/shader.py +0 -0
  433. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/graphics/api/gl2/shapes.py +0 -0
  434. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/graphics/api/gl2/sprite.py +0 -0
  435. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/graphics/api/gl2/text.py +0 -0
  436. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/graphics/api/gl2/vertexdomain.py +0 -0
  437. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/graphics/api/webgl/__init__.py +0 -0
  438. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/graphics/api/webgl/buffer.py +0 -0
  439. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/graphics/api/webgl/context.py +0 -0
  440. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/graphics/api/webgl/draw.py +0 -0
  441. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/graphics/api/webgl/enums.py +0 -0
  442. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/graphics/api/webgl/framebuffer.py +0 -0
  443. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/graphics/api/webgl/gl.py +0 -0
  444. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/graphics/api/webgl/gl_info.py +0 -0
  445. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/graphics/api/webgl/renderer.py +0 -0
  446. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/graphics/api/webgl/shader.py +0 -0
  447. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/graphics/api/webgl/shapes.py +0 -0
  448. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/graphics/api/webgl/sprite.py +0 -0
  449. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/graphics/api/webgl/text.py +0 -0
  450. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/graphics/api/webgl/texture.py +0 -0
  451. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/graphics/api/webgl/vertexarray.py +0 -0
  452. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/graphics/api/webgl/vertexdomain.py +0 -0
  453. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/graphics/api/webgl/webgl_js.pyi +0 -0
  454. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/graphics/atlas.py +0 -0
  455. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/graphics/framebuffer.py +0 -0
  456. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/graphics/instance.py +0 -0
  457. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/graphics/texture.py +0 -0
  458. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/graphics/vertexdomain.py +0 -0
  459. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/gui/__init__.py +0 -0
  460. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/gui/frame.py +0 -0
  461. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/gui/ninepatch.py +0 -0
  462. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/gui/widgets.py +0 -0
  463. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/image/__init__.py +0 -0
  464. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/image/animation.py +0 -0
  465. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/image/base.py +0 -0
  466. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/image/codecs/__init__.py +0 -0
  467. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/image/codecs/bmp.py +0 -0
  468. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/image/codecs/dds.py +0 -0
  469. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/image/codecs/gdiplus.py +0 -0
  470. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/image/codecs/gdkpixbuf2.py +0 -0
  471. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/image/codecs/gif.py +0 -0
  472. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/image/codecs/js_image.py +0 -0
  473. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/image/codecs/ktx2.py +0 -0
  474. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/image/codecs/pil.py +0 -0
  475. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/image/codecs/png.py +0 -0
  476. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/image/codecs/quartz.py +0 -0
  477. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/image/codecs/wic.py +0 -0
  478. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/info.py +0 -0
  479. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/input/__init__.py +0 -0
  480. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/input/base.py +0 -0
  481. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/input/controller.py +0 -0
  482. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/input/controller_db.py +0 -0
  483. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/input/emscripten/__init__.py +0 -0
  484. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/input/emscripten/gamepad_js.py +0 -0
  485. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/input/linux/__init__.py +0 -0
  486. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/input/linux/evdev.py +0 -0
  487. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/input/linux/evdev_constants.py +0 -0
  488. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/input/linux/x11_xinput.py +0 -0
  489. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/input/linux/x11_xinput_tablet.py +0 -0
  490. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/input/macos/__init__.py +0 -0
  491. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/input/macos/darwin_gc.py +0 -0
  492. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/input/macos/darwin_hid.py +0 -0
  493. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/input/win32/__init__.py +0 -0
  494. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/input/win32/directinput.py +0 -0
  495. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/input/win32/wintab.py +0 -0
  496. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/input/win32/xinput.py +0 -0
  497. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/lib.py +0 -0
  498. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/libs/__init__.py +0 -0
  499. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/libs/darwin/__init__.py +0 -0
  500. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/libs/darwin/agl.py +0 -0
  501. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/libs/darwin/cocoapy/__init__.py +0 -0
  502. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/libs/darwin/cocoapy/cocoahelpers.py +0 -0
  503. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/libs/darwin/cocoapy/cocoalibs.py +0 -0
  504. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/libs/darwin/cocoapy/cocoatypes.py +0 -0
  505. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/libs/darwin/cocoapy/runtime.py +0 -0
  506. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/libs/darwin/coreaudio.py +0 -0
  507. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/libs/darwin/lib_agl.py +0 -0
  508. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/libs/darwin/quartzkey.py +0 -0
  509. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/libs/egl/__init__.py +0 -0
  510. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/libs/egl/egl_lib.py +0 -0
  511. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/libs/egl/eglext.py +0 -0
  512. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/libs/linux/__init__.py +0 -0
  513. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/libs/linux/egl/__init__.py +0 -0
  514. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/libs/linux/egl/egl.py +0 -0
  515. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/libs/linux/egl/eglext.py +0 -0
  516. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/libs/linux/egl/lib.py +0 -0
  517. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/libs/linux/glx/__init__.py +0 -0
  518. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/libs/linux/glx/glx.py +0 -0
  519. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/libs/linux/glx/glxext_arb.py +0 -0
  520. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/libs/linux/glx/glxext_mesa.py +0 -0
  521. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/libs/linux/glx/glxext_nv.py +0 -0
  522. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/libs/linux/glx/lib_glx.py +0 -0
  523. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/libs/linux/ioctl.py +0 -0
  524. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/libs/linux/wayland/__init__.py +0 -0
  525. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/libs/linux/wayland/client.py +0 -0
  526. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/libs/linux/wayland/gbm.py +0 -0
  527. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/libs/linux/wayland/lib_wayland.py +0 -0
  528. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/libs/linux/wayland/wayland_egl.py +0 -0
  529. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/libs/linux/wayland/xkbcommon.py +0 -0
  530. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/libs/linux/x11/__init__.py +0 -0
  531. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/libs/linux/x11/cursorfont.py +0 -0
  532. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/libs/linux/x11/xf86vmode.py +0 -0
  533. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/libs/linux/x11/xinerama.py +0 -0
  534. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/libs/linux/x11/xinput.py +0 -0
  535. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/libs/linux/x11/xlib.py +0 -0
  536. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/libs/linux/x11/xrandr.py +0 -0
  537. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/libs/linux/x11/xrender.py +0 -0
  538. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/libs/linux/x11/xsync.py +0 -0
  539. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/libs/shared/__init__.py +0 -0
  540. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/libs/shared/lib_harfbuzz.py +0 -0
  541. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/libs/shared/spirv/__init__.py +0 -0
  542. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/libs/shared/spirv/lib_shaderc.py +0 -0
  543. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/libs/shared/spirv/lib_spirv_cross.py +0 -0
  544. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/libs/shared/vulkan_lib/__init__.py +0 -0
  545. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/libs/shared/vulkan_lib/exceptions.py +0 -0
  546. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/libs/shared/vulkan_lib/func.py +0 -0
  547. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/libs/shared/vulkan_lib/func_helpers.py +0 -0
  548. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/libs/shared/vulkan_lib/vk_video.py +0 -0
  549. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/libs/shared/vulkan_lib/vk_video.pyi +0 -0
  550. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/libs/shared/vulkan_lib/vulkan_core.py +0 -0
  551. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/libs/shared/vulkan_lib/vulkan_core.pyi +0 -0
  552. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/libs/shared/vulkan_lib/vulkan_ios.py +0 -0
  553. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/libs/shared/vulkan_lib/vulkan_ios.pyi +0 -0
  554. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/libs/shared/vulkan_lib/vulkan_macos.py +0 -0
  555. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/libs/shared/vulkan_lib/vulkan_macos.pyi +0 -0
  556. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/libs/shared/vulkan_lib/vulkan_metal.py +0 -0
  557. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/libs/shared/vulkan_lib/vulkan_metal.pyi +0 -0
  558. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/libs/shared/vulkan_lib/vulkan_wayland.py +0 -0
  559. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/libs/shared/vulkan_lib/vulkan_wayland.pyi +0 -0
  560. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/libs/shared/vulkan_lib/vulkan_win32.py +0 -0
  561. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/libs/shared/vulkan_lib/vulkan_win32.pyi +0 -0
  562. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/libs/shared/vulkan_lib/vulkan_xcb.py +0 -0
  563. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/libs/shared/vulkan_lib/vulkan_xcb.pyi +0 -0
  564. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/libs/shared/vulkan_lib/vulkan_xlib.py +0 -0
  565. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/libs/shared/vulkan_lib/vulkan_xlib.pyi +0 -0
  566. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/libs/shared/vulkan_lib/vulkan_xlib_xrandr.py +0 -0
  567. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/libs/shared/vulkan_lib/vulkan_xlib_xrandr.pyi +0 -0
  568. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/libs/win32/com.py +0 -0
  569. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/libs/win32/dinput.py +0 -0
  570. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/libs/win32/lib_wgl.py +0 -0
  571. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/libs/win32/libwintab.py +0 -0
  572. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/libs/win32/wgl.py +0 -0
  573. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/libs/win32/wglext_arb.py +0 -0
  574. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/libs/win32/wincodec.py +0 -0
  575. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/libs/win32/winkey.py +0 -0
  576. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/math.py +0 -0
  577. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/media/__init__.py +0 -0
  578. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/media/buffered_logger.py +0 -0
  579. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/media/codecs/__init__.py +0 -0
  580. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/media/codecs/base.py +0 -0
  581. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/media/codecs/coreaudio.py +0 -0
  582. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/media/codecs/ffmpeg.py +0 -0
  583. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/media/codecs/ffmpeg_lib/__init__.py +0 -0
  584. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/media/codecs/ffmpeg_lib/compat.py +0 -0
  585. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/media/codecs/ffmpeg_lib/libavcodec.py +0 -0
  586. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/media/codecs/ffmpeg_lib/libavformat.py +0 -0
  587. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/media/codecs/ffmpeg_lib/libavutil.py +0 -0
  588. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/media/codecs/ffmpeg_lib/libswresample.py +0 -0
  589. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/media/codecs/ffmpeg_lib/libswscale.py +0 -0
  590. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/media/codecs/gstreamer.py +0 -0
  591. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/media/codecs/pyogg.py +0 -0
  592. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/media/codecs/wave.py +0 -0
  593. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/media/codecs/webaudio_pyodide.py +0 -0
  594. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/media/codecs/wmf.py +0 -0
  595. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/media/devices/__init__.py +0 -0
  596. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/media/devices/base.py +0 -0
  597. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/media/devices/win32.py +0 -0
  598. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/media/drivers/__init__.py +0 -0
  599. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/media/drivers/base.py +0 -0
  600. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/media/drivers/directsound/__init__.py +0 -0
  601. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/media/drivers/directsound/adaptation.py +0 -0
  602. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/media/drivers/directsound/exceptions.py +0 -0
  603. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/media/drivers/directsound/interface.py +0 -0
  604. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/media/drivers/directsound/lib_dsound.py +0 -0
  605. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/media/drivers/listener.py +0 -0
  606. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/media/drivers/openal/__init__.py +0 -0
  607. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/media/drivers/openal/adaptation.py +0 -0
  608. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/media/drivers/openal/interface.py +0 -0
  609. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/media/drivers/openal/lib_alc.py +0 -0
  610. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/media/drivers/openal/lib_openal.py +0 -0
  611. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/media/drivers/pulse/__init__.py +0 -0
  612. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/media/drivers/pulse/adaptation.py +0 -0
  613. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/media/drivers/pulse/interface.py +0 -0
  614. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/media/drivers/pulse/lib_pulseaudio.py +0 -0
  615. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/media/drivers/pyodide_js/__init__.py +0 -0
  616. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/media/drivers/pyodide_js/adaptation.py +0 -0
  617. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/media/drivers/silent/__init__.py +0 -0
  618. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/media/drivers/silent/adaptation.py +0 -0
  619. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/media/drivers/xaudio2/__init__.py +0 -0
  620. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/media/drivers/xaudio2/adaptation.py +0 -0
  621. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/media/drivers/xaudio2/interface.py +0 -0
  622. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/media/drivers/xaudio2/lib_xaudio2.py +0 -0
  623. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/media/exceptions.py +0 -0
  624. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/media/instrumentation.py +0 -0
  625. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/media/player.py +0 -0
  626. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/media/player_worker_thread.py +0 -0
  627. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/media/synthesis.py +0 -0
  628. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/model/__init__.py +0 -0
  629. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/model/codecs/__init__.py +0 -0
  630. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/model/codecs/base.py +0 -0
  631. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/model/codecs/gltf.py +0 -0
  632. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/model/codecs/obj.py +0 -0
  633. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/py.typed +0 -0
  634. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/resource.py +0 -0
  635. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/shapes.py +0 -0
  636. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/sprite.py +0 -0
  637. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/text/__init__.py +0 -0
  638. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/text/caret.py +0 -0
  639. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/text/document.py +0 -0
  640. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/text/formats/__init__.py +0 -0
  641. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/text/formats/attributed.py +0 -0
  642. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/text/formats/html.py +0 -0
  643. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/text/formats/plaintext.py +0 -0
  644. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/text/formats/structured.py +0 -0
  645. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/text/layout/__init__.py +0 -0
  646. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/text/layout/base.py +0 -0
  647. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/text/layout/incremental.py +0 -0
  648. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/text/layout/scrolling.py +0 -0
  649. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/text/runlist.py +0 -0
  650. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/util.py +0 -0
  651. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/window/camera/__init__.py +0 -0
  652. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/window/camera/camera2d.py +0 -0
  653. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/window/camera/camera3d.py +0 -0
  654. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/window/cocoa/__init__.py +0 -0
  655. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/window/cocoa/pyglet_delegate.py +0 -0
  656. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/window/cocoa/pyglet_textview.py +0 -0
  657. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/window/cocoa/pyglet_window.py +0 -0
  658. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/window/cocoa/systemcursor.py +0 -0
  659. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/window/dialog/__init__.py +0 -0
  660. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/window/dialog/base.py +0 -0
  661. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/window/dialog/darwin.py +0 -0
  662. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/window/dialog/linux.py +0 -0
  663. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/window/dialog/windows.py +0 -0
  664. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/window/emscripten/__init__.py +0 -0
  665. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/window/event.py +0 -0
  666. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/window/headless/__init__.py +0 -0
  667. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/window/key.py +0 -0
  668. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/window/mouse.py +0 -0
  669. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyglet/window/wayland/__init__.py +0 -0
  670. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pyproject.toml +0 -0
  671. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/pytest.ini +0 -0
  672. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/setup.py +0 -0
  673. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/tests/__init__.py +0 -0
  674. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/tests/annotations.py +0 -0
  675. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/tests/base/__init__.py +0 -0
  676. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/tests/base/data.py +0 -0
  677. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/tests/base/event_loop.py +0 -0
  678. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/tests/base/interactive.py +0 -0
  679. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/tests/base/performance.py +0 -0
  680. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/tests/conftest.py +0 -0
  681. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/tests/data/fonts/README +0 -0
  682. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/tests/data/fonts/action_man.ttf +0 -0
  683. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/tests/data/fonts/action_man_atlas.png +0 -0
  684. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/tests/data/fonts/action_man_bold.ttf +0 -0
  685. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/tests/data/fonts/action_man_bold_italic.ttf +0 -0
  686. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/tests/data/fonts/action_man_italic.ttf +0 -0
  687. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/tests/data/fonts/courR12-ISO8859-1.pcf +0 -0
  688. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/tests/data/images/8bpp.gif +0 -0
  689. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/tests/data/images/cursor.png +0 -0
  690. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/tests/data/images/dinosaur.gif +0 -0
  691. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/tests/data/images/gdk_close.png +0 -0
  692. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/tests/data/images/grey_background.png +0 -0
  693. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/tests/data/images/icon1.png +0 -0
  694. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/tests/data/images/icon_size1.png +0 -0
  695. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/tests/data/images/icon_size2.png +0 -0
  696. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/tests/data/images/icon_size3.png +0 -0
  697. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/tests/data/images/icon_size4.png +0 -0
  698. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/tests/data/images/icon_size5.png +0 -0
  699. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/tests/data/images/l.png +0 -0
  700. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/tests/data/images/la.png +0 -0
  701. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/tests/data/images/multitexture.png +0 -0
  702. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/tests/data/images/rgb.png +0 -0
  703. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/tests/data/images/rgb_16bpp.bmp +0 -0
  704. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/tests/data/images/rgb_1bpp.bmp +0 -0
  705. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/tests/data/images/rgb_24bpp.bmp +0 -0
  706. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/tests/data/images/rgb_32bpp.bmp +0 -0
  707. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/tests/data/images/rgb_4bpp.bmp +0 -0
  708. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/tests/data/images/rgb_8bpp.bmp +0 -0
  709. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/tests/data/images/rgb_8bpp.png +0 -0
  710. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/tests/data/images/rgb_8bpp_trans.png +0 -0
  711. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/tests/data/images/rgb_bc6s.dds +0 -0
  712. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/tests/data/images/rgb_dxt1.dds +0 -0
  713. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/tests/data/images/rgba.png +0 -0
  714. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/tests/data/images/rgba_32bpp.bmp +0 -0
  715. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/tests/data/images/rgba_bc7.dds +0 -0
  716. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/tests/data/images/rgba_bc7.ktx2 +0 -0
  717. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/tests/data/images/rgba_dxt1.dds +0 -0
  718. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/tests/data/images/rgba_dxt3.dds +0 -0
  719. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/tests/data/images/rgba_dxt5.dds +0 -0
  720. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/tests/data/images/tests.interactive.test_interactive_test_base._Test.test_1.001.png +0 -0
  721. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/tests/data/media/README +0 -0
  722. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/tests/data/media/alert.wav +0 -0
  723. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/tests/data/media/login.wav +0 -0
  724. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/tests/data/media/logout.wav +0 -0
  725. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/tests/data/media/receive.wav +0 -0
  726. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/tests/data/media/send.wav +0 -0
  727. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/tests/data/media/synthesis_sawtooth_16_11025_1ch.wav +0 -0
  728. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/tests/data/media/synthesis_sawtooth_16_44800_1ch.wav +0 -0
  729. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/tests/data/media/synthesis_silence_16_11025_1ch.wav +0 -0
  730. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/tests/data/media/synthesis_silence_16_44800_1ch.wav +0 -0
  731. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/tests/data/media/synthesis_simplefm_16_11025_1ch.wav +0 -0
  732. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/tests/data/media/synthesis_simplefm_16_44800_1ch.wav +0 -0
  733. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/tests/data/media/synthesis_sine_16_11025_1ch.wav +0 -0
  734. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/tests/data/media/synthesis_sine_16_44800_1ch.wav +0 -0
  735. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/tests/data/media/synthesis_square_16_11025_1ch.wav +0 -0
  736. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/tests/data/media/synthesis_square_16_44800_1ch.wav +0 -0
  737. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/tests/data/media/synthesis_triangle_16_11025_1ch.wav +0 -0
  738. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/tests/data/media/synthesis_triangle_16_44800_1ch.wav +0 -0
  739. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/tests/data/models/logo3d.mtl +0 -0
  740. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/tests/data/models/logo3d.obj +0 -0
  741. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/tests/integration/__init__.py +0 -0
  742. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/tests/integration/app/__init__.py +0 -0
  743. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/tests/integration/app/test_eventloop.py +0 -0
  744. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/tests/integration/conftest.py +0 -0
  745. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/tests/integration/font/__init__.py +0 -0
  746. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/tests/integration/font/test_font.py +0 -0
  747. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/tests/integration/font/test_freetype_face.py +0 -0
  748. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/tests/integration/graphics/__init__.py +0 -0
  749. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/tests/integration/graphics/gl2/test_gl2_buffers.py +0 -0
  750. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/tests/integration/graphics/opengl_core/__init__.py +0 -0
  751. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/tests/integration/graphics/opengl_core/test_buffers.py +0 -0
  752. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/tests/integration/graphics/opengl_core/test_opengl_instancing.py +0 -0
  753. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/tests/integration/graphics/test_allocation.py +0 -0
  754. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/tests/integration/graphics/test_atlas_bins.py +0 -0
  755. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/tests/integration/graphics/test_batch_migration.py +0 -0
  756. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/tests/integration/graphics/test_compute_shader.py +0 -0
  757. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/tests/integration/graphics/test_framebuffer.py +0 -0
  758. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/tests/integration/graphics/test_objects.py +0 -0
  759. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/tests/integration/graphics/test_resource_texture_transforms.py +0 -0
  760. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/tests/integration/graphics/test_shaders.py +0 -0
  761. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/tests/integration/graphics/test_texture2d.py +0 -0
  762. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/tests/integration/graphics/test_texture3d.py +0 -0
  763. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/tests/integration/graphics/test_texture_mipmaps.py +0 -0
  764. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/tests/integration/graphics/test_texturearray.py +0 -0
  765. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/tests/integration/graphics/test_texturegrid.py +0 -0
  766. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/tests/integration/graphics/test_vertex_list.py +0 -0
  767. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/tests/integration/graphics/test_window_backend_config.py +0 -0
  768. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/tests/integration/image/__init__.py +0 -0
  769. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/tests/integration/image/test_gdkpixbuf2.py +0 -0
  770. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/tests/integration/image/test_imagegrid.py +0 -0
  771. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/tests/integration/libs/__init__.py +0 -0
  772. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/tests/integration/libs/darwin/__init__.py +0 -0
  773. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/tests/integration/libs/darwin/cocoapy/__init__.py +0 -0
  774. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/tests/integration/libs/darwin/cocoapy/test_cocoalibs.py +0 -0
  775. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/tests/integration/media/__init__.py +0 -0
  776. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/tests/integration/media/mock_player.py +0 -0
  777. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/tests/integration/media/test_directsound.py +0 -0
  778. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/tests/integration/media/test_driver.py +0 -0
  779. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/tests/integration/media/test_ffmpeg.py +0 -0
  780. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/tests/integration/media/test_listener.py +0 -0
  781. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/tests/integration/media/test_loading.py +0 -0
  782. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/tests/integration/media/test_openal.py +0 -0
  783. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/tests/integration/media/test_player.py +0 -0
  784. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/tests/integration/media/test_pulse.py +0 -0
  785. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/tests/integration/model/__init__.py +0 -0
  786. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/tests/integration/model/test_loading.py +0 -0
  787. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/tests/integration/platform/__init__.py +0 -0
  788. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/tests/integration/platform/test_win_context_managers.py +0 -0
  789. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/tests/integration/platform/test_win_multicore_clock.py +0 -0
  790. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/tests/integration/resource/__init__.py +0 -0
  791. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/tests/integration/resource/dir1/dir1/f3.txt +0 -0
  792. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/tests/integration/resource/dir1/f2.txt +0 -0
  793. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/tests/integration/resource/dir1/res.zip +0 -0
  794. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/tests/integration/resource/dir2/f6.txt +0 -0
  795. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/tests/integration/resource/f1.txt +0 -0
  796. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/tests/integration/resource/rgbm.png +0 -0
  797. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/tests/integration/resource/test_resource_loading.py +0 -0
  798. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/tests/integration/test_integrations.py +0 -0
  799. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/tests/integration/text/__init__.py +0 -0
  800. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/tests/integration/text/test_empty_document.py +0 -0
  801. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/tests/integration/text/test_label_creation.py +0 -0
  802. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/tests/integration/text/test_layout.py +0 -0
  803. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/tests/integration/window/__init__.py +0 -0
  804. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/tests/integration/window/test_context_share.py +0 -0
  805. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/tests/integration/window/test_event_sequence.py +0 -0
  806. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/tests/integration/window/test_window_caption.py +0 -0
  807. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/tests/interactive/__init__.py +0 -0
  808. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/tests/interactive/conftest.py +0 -0
  809. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/tests/interactive/image/__init__.py +0 -0
  810. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/tests/interactive/image/test_image.py +0 -0
  811. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/tests/interactive/media/__init__.py +0 -0
  812. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/tests/interactive/media/test_player.py +0 -0
  813. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/tests/interactive/screenshots/committed/README +0 -0
  814. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/tests/interactive/screenshots/session/README +0 -0
  815. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/tests/interactive/shapes/test_shapes.py +0 -0
  816. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/tests/interactive/test_interactive_test_base.py +0 -0
  817. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/tests/interactive/text/__init__.py +0 -0
  818. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/tests/interactive/text/test_caret_color.py +0 -0
  819. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/tests/interactive/text/test_content_valign.py +0 -0
  820. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/tests/interactive/text/test_html.py +0 -0
  821. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/tests/interactive/text/test_inline_elements.py +0 -0
  822. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/tests/interactive/text/test_inline_elements_style_change.py +0 -0
  823. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/tests/interactive/text/test_layout_anchoring.py +0 -0
  824. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/tests/interactive/text/test_multiline_wrap.py +0 -0
  825. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/tests/interactive/text/test_plain.py +0 -0
  826. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/tests/interactive/text/test_style.py +0 -0
  827. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/tests/interactive/window/__init__.py +0 -0
  828. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/tests/interactive/window/test_window_events.py +0 -0
  829. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/tests/interactive/window/test_window_fullscreen.py +0 -0
  830. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/tests/interactive/window/test_window_modes.py +0 -0
  831. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/tests/interactive/window/test_window_multisample.py +0 -0
  832. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/tests/interactive/window/test_window_open.py +0 -0
  833. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/tests/interactive/window/test_window_settings.py +0 -0
  834. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/tests/interactive/window/test_window_styles.py +0 -0
  835. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/tests/interactive/windowed_test_base.py +0 -0
  836. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/tests/requirements.txt +0 -0
  837. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/tests/unit/__init__.py +0 -0
  838. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/tests/unit/conftest.py +0 -0
  839. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/tests/unit/libs/__init__.py +0 -0
  840. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/tests/unit/libs/darwin/__init__.py +0 -0
  841. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/tests/unit/libs/darwin/cocoapy/__init__.py +0 -0
  842. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/tests/unit/libs/darwin/cocoapy/test_cocoalibs.py +0 -0
  843. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/tests/unit/math/__init__.py +0 -0
  844. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/tests/unit/math/test_mat.py +0 -0
  845. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/tests/unit/math/test_quat.py +0 -0
  846. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/tests/unit/math/test_vec2.py +0 -0
  847. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/tests/unit/math/test_vec3.py +0 -0
  848. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/tests/unit/math/test_vec4.py +0 -0
  849. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/tests/unit/media/__init__.py +0 -0
  850. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/tests/unit/media/test_player.py +0 -0
  851. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/tests/unit/media/test_sources.py +0 -0
  852. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/tests/unit/media/test_synthesis.py +0 -0
  853. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/tests/unit/platform/__init__.py +0 -0
  854. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/tests/unit/platform/test_mac_objc.py +0 -0
  855. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/tests/unit/shader/__init__.py +0 -0
  856. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/tests/unit/shader/conftest.py +0 -0
  857. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/tests/unit/shader/test_shader.py-SUSPENDED +0 -0
  858. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/tests/unit/shapes/__init__.py +0 -0
  859. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/tests/unit/shapes/conftest.py +0 -0
  860. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/tests/unit/shapes/test_bordered_rectangle.py +0 -0
  861. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/tests/unit/shapes/test_shapes.py +0 -0
  862. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/tests/unit/test_atlas.py +0 -0
  863. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/tests/unit/test_clock.py +0 -0
  864. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/tests/unit/test_clock_freq.py +0 -0
  865. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/tests/unit/test_image_data.py +0 -0
  866. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/tests/unit/test_input.py +0 -0
  867. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/tests/unit/test_resource_path.py +0 -0
  868. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/tests/unit/test_sprite.py +0 -0
  869. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/tests/unit/text/__init__.py +0 -0
  870. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/tests/unit/text/test_caret.py +0 -0
  871. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/tests/unit/text/test_text.py +0 -0
  872. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/tools/al_info.py +0 -0
  873. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/tools/ffmpeg/bokeh_timeline.py +0 -0
  874. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/tools/ffmpeg/compare.py +0 -0
  875. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/tools/ffmpeg/configure.py +0 -0
  876. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/tools/ffmpeg/extractors.py +0 -0
  877. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/tools/ffmpeg/fs.py +0 -0
  878. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/tools/ffmpeg/mp.py +0 -0
  879. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/tools/ffmpeg/mpexceptions.py +0 -0
  880. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/tools/ffmpeg/playmany.py +0 -0
  881. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/tools/ffmpeg/readme_ffmpeg_debbuging_branch.txt +0 -0
  882. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/tools/ffmpeg/readme_run_tests.txt +0 -0
  883. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/tools/ffmpeg/report.py +0 -0
  884. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/tools/ffmpeg/reports.py +0 -0
  885. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/tools/ffmpeg/retry_crashed.py +0 -0
  886. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/tools/ffmpeg/run_test_suite.py +0 -0
  887. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/tools/ffmpeg/summarize.py +0 -0
  888. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/tools/ffmpeg/test_instrumentation.py +0 -0
  889. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/tools/ffmpeg/timeline.py +0 -0
  890. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/tools/gencontrollerdb.py +0 -0
  891. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/tools/gengl.py +0 -0
  892. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/tools/genwrappers.py +0 -0
  893. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/tools/gl.template +0 -0
  894. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/tools/gl.xml +0 -0
  895. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/tools/gl_info.py +0 -0
  896. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/tools/gl_stub.template +0 -0
  897. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/tools/inspect_font.py +0 -0
  898. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/tools/pyodide/dev_style.css +0 -0
  899. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/tools/pyodide/example.py +0 -0
  900. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/tools/pyodide/gen_pyodide_project.py +0 -0
  901. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/tools/pyodide/index.html +0 -0
  902. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/tools/pyodide/run_webgl_smoke.py +0 -0
  903. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/tools/pyodide/script.js +0 -0
  904. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/tools/requirements.txt +0 -0
  905. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/tools/wgl.h +0 -0
  906. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/tools/wraptypes/__init__.py +0 -0
  907. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/tools/wraptypes/cparser.py +0 -0
  908. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/tools/wraptypes/ctypesparser.py +0 -0
  909. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/tools/wraptypes/lex.py +0 -0
  910. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/tools/wraptypes/preprocessor.py +0 -0
  911. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/tools/wraptypes/wrap.py +0 -0
  912. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/tools/wraptypes/yacc.py +0 -0
  913. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/website/LICENSE.txt +0 -0
  914. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/website/README.rst +0 -0
  915. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/website/assets/favicon.ico +0 -0
  916. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/website/assets/static/css/example-custom-styles.css +0 -0
  917. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/website/assets/static/images/pyglet.png +0 -0
  918. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/website/content/404.html/contents.lr +0 -0
  919. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/website/content/404.html/ngc-5793.jpg +0 -0
  920. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/website/content/authors/benjamin/contents.lr +0 -0
  921. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/website/content/authors/benjamin/pyglet.png +0 -0
  922. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/website/content/authors/contents.lr +0 -0
  923. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/website/content/blog/contents.lr +0 -0
  924. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/website/content/blog/welcome-blog/contents.lr +0 -0
  925. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/website/content/contents.lr +0 -0
  926. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/website/content/eclipse.jpg +0 -0
  927. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/website/pyglet.lektorproject +0 -0
  928. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/website/themes/lektor-icon/AUTHORS.txt +0 -0
  929. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/website/themes/lektor-icon/CHANGELOG.md +0 -0
  930. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/website/themes/lektor-icon/CONTRIBUTING.md +0 -0
  931. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/website/themes/lektor-icon/LICENSE.txt +0 -0
  932. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/website/themes/lektor-icon/NOTICE.txt +0 -0
  933. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/website/themes/lektor-icon/README.md +0 -0
  934. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/website/themes/lektor-icon/assets/static/css/bootstrap.css +0 -0
  935. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/website/themes/lektor-icon/assets/static/css/icomoon.css +0 -0
  936. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/website/themes/lektor-icon/assets/static/css/magnific-popup.css +0 -0
  937. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/website/themes/lektor-icon/assets/static/css/style.css +0 -0
  938. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/website/themes/lektor-icon/assets/static/fonts/bootstrap/glyphicons-halflings-regular.ttf +0 -0
  939. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/website/themes/lektor-icon/assets/static/fonts/bootstrap/glyphicons-halflings-regular.woff +0 -0
  940. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/website/themes/lektor-icon/assets/static/fonts/bootstrap/glyphicons-halflings-regular.woff2 +0 -0
  941. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/website/themes/lektor-icon/assets/static/fonts/icomoon/icomoon.ttf +0 -0
  942. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/website/themes/lektor-icon/assets/static/fonts/icomoon/icomoon.woff +0 -0
  943. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/website/themes/lektor-icon/assets/static/images/Preloader_2.gif +0 -0
  944. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/website/themes/lektor-icon/assets/static/images/placeholder_person.png +0 -0
  945. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/website/themes/lektor-icon/assets/static/js/jquery-3.3.1.min.js +0 -0
  946. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/website/themes/lektor-icon/assets/static/js/jquery.easing.min.js +0 -0
  947. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/website/themes/lektor-icon/assets/static/js/jquery.magnific-popup.min.js +0 -0
  948. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/website/themes/lektor-icon/assets/static/js/jquery.stellar.js +0 -0
  949. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/website/themes/lektor-icon/assets/static/js/jquery.stellar.min.js +0 -0
  950. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/website/themes/lektor-icon/assets/static/js/jquery.waypoints.min.js +0 -0
  951. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/website/themes/lektor-icon/assets/static/js/magnific-popup-options.js +0 -0
  952. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/website/themes/lektor-icon/assets/static/js/main-singlelayout.js +0 -0
  953. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/website/themes/lektor-icon/assets/static/js/main.js +0 -0
  954. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/website/themes/lektor-icon/flowblocks/content.ini +0 -0
  955. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/website/themes/lektor-icon/flowblocks/gallery.ini +0 -0
  956. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/website/themes/lektor-icon/flowblocks/gallery_item.ini +0 -0
  957. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/website/themes/lektor-icon/flowblocks/member.ini +0 -0
  958. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/website/themes/lektor-icon/flowblocks/mission.ini +0 -0
  959. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/website/themes/lektor-icon/flowblocks/mission_tab.ini +0 -0
  960. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/website/themes/lektor-icon/flowblocks/service.ini +0 -0
  961. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/website/themes/lektor-icon/flowblocks/services.ini +0 -0
  962. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/website/themes/lektor-icon/flowblocks/team.ini +0 -0
  963. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/website/themes/lektor-icon/images/blog-index.png +0 -0
  964. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/website/themes/lektor-icon/images/full-blog.png +0 -0
  965. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/website/themes/lektor-icon/images/full-page.png +0 -0
  966. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/website/themes/lektor-icon/images/gallery-404.png +0 -0
  967. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/website/themes/lektor-icon/images/gallery-singlepage.png +0 -0
  968. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/website/themes/lektor-icon/images/mainpage-screenshots.png +0 -0
  969. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/website/themes/lektor-icon/images/responsive-layout.png +0 -0
  970. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/website/themes/lektor-icon/models/404.ini +0 -0
  971. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/website/themes/lektor-icon/models/author.ini +0 -0
  972. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/website/themes/lektor-icon/models/authors.ini +0 -0
  973. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/website/themes/lektor-icon/models/blog-post.ini +0 -0
  974. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/website/themes/lektor-icon/models/blog.ini +0 -0
  975. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/website/themes/lektor-icon/models/page.ini +0 -0
  976. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/website/themes/lektor-icon/models/single-layout.ini +0 -0
  977. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/website/themes/lektor-icon/templates/404.html +0 -0
  978. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/website/themes/lektor-icon/templates/author.html +0 -0
  979. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/website/themes/lektor-icon/templates/authors.html +0 -0
  980. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/website/themes/lektor-icon/templates/blocks/content.html +0 -0
  981. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/website/themes/lektor-icon/templates/blocks/gallery.html +0 -0
  982. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/website/themes/lektor-icon/templates/blocks/mission.html +0 -0
  983. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/website/themes/lektor-icon/templates/blocks/services.html +0 -0
  984. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/website/themes/lektor-icon/templates/blocks/team.html +0 -0
  985. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/website/themes/lektor-icon/templates/blog-layout.html +0 -0
  986. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/website/themes/lektor-icon/templates/blog-post.html +0 -0
  987. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/website/themes/lektor-icon/templates/blog.html +0 -0
  988. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/website/themes/lektor-icon/templates/layout.html +0 -0
  989. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/website/themes/lektor-icon/templates/macros/blog.html +0 -0
  990. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/website/themes/lektor-icon/templates/macros/pagination.html +0 -0
  991. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/website/themes/lektor-icon/templates/none.html +0 -0
  992. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/website/themes/lektor-icon/templates/page.html +0 -0
  993. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/website/themes/lektor-icon/templates/single-layout.html +0 -0
  994. {pyglet-3.0.dev5 → pyglet-3.0.dev6}/website/themes/lektor-icon/theme.ini +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: pyglet
3
- Version: 3.0.dev5
3
+ Version: 3.0.dev6
4
4
  Summary: pyglet is a cross-platform games and multimedia package.
5
5
  Author-email: Alex Holkner & contributors <Alex.Holkner@gmail.com>
6
6
  Requires-Python: >=3.10
@@ -42,6 +42,7 @@ If you are migrating from an older version of pyglet, please read through
42
42
  programming_guide/installation
43
43
  programming_guide/quickstart
44
44
  programming_guide/windowing
45
+ programming_guide/camera
45
46
  programming_guide/keyboard
46
47
  programming_guide/mouse
47
48
  programming_guide/input
@@ -93,8 +93,9 @@ Attach camera scopes to groups with ``Group.set_camera``::
93
93
  pyglet.sprite.Sprite(world_image, batch=batch, group=world_group)
94
94
  pyglet.text.Label("HUD", batch=batch, group=ui_group)
95
95
 
96
- ``Group.set_camera`` applies camera state at draw entry by calling ``begin()``.
97
- It does not call ``end()`` during group unsetting.
96
+
97
+ .. note:: ``Group.set_camera`` applies camera state at draw entry by calling ``begin()``.
98
+ It does not call ``end()`` during group unsetting.
98
99
 
99
100
  Viewport
100
101
  --------
@@ -1,5 +1,5 @@
1
- sphinx==9.1.0
1
+ sphinx==9.0.4
2
2
  sphinx_rtd_theme==3.1.0
3
3
  readthedocs-sphinx-search==0.3.2
4
- sphinx-autodoc-typehints==3.10.2
4
+ sphinx-autodoc-typehints==3.6.1
5
5
  pytest
@@ -0,0 +1,152 @@
1
+ """Uniform Buffer Object region example.
2
+
3
+ This example uses one shader program with three material UBO regions. Each
4
+ group binds a different region before its shape is drawn.
5
+ """
6
+
7
+ from __future__ import annotations
8
+
9
+ import math
10
+
11
+ import pyglet
12
+ from pyglet.enums import GeometryMode, GraphicsAPI
13
+
14
+
15
+ if pyglet.options.backend != GraphicsAPI.OPENGL:
16
+ raise RuntimeError("This example uses OpenGL 3.3 shader syntax. Run it with the OpenGL backend.")
17
+
18
+
19
+ window = pyglet.window.Window(width=720, height=480, caption="Uniform Buffer Object", resizable=True)
20
+ batch = pyglet.graphics.Batch()
21
+
22
+
23
+ vertex_source = """#version 330 core
24
+ in vec2 position;
25
+
26
+ uniform WindowBlock
27
+ {
28
+ mat4 projection;
29
+ mat4 view;
30
+ } window;
31
+
32
+ layout(std140) uniform MaterialBlock
33
+ {
34
+ vec4 color;
35
+ vec4 offset_scale;
36
+ } material;
37
+
38
+ out vec4 vertex_color;
39
+
40
+ void main()
41
+ {
42
+ vec2 scaled_position = position * material.offset_scale.zw;
43
+ vec2 world_position = scaled_position + material.offset_scale.xy;
44
+ gl_Position = window.projection * window.view * vec4(world_position, 0.0, 1.0);
45
+ vertex_color = material.color;
46
+ }
47
+ """
48
+
49
+ fragment_source = """#version 330 core
50
+ in vec4 vertex_color;
51
+ out vec4 final_color;
52
+
53
+ void main()
54
+ {
55
+ final_color = vertex_color;
56
+ }
57
+ """
58
+
59
+ program = pyglet.graphics.ShaderProgram(
60
+ pyglet.graphics.Shader(vertex_source, "vertex"),
61
+ pyglet.graphics.Shader(fragment_source, "fragment"),
62
+ )
63
+
64
+ material_block = program.uniform_blocks["MaterialBlock"]
65
+
66
+
67
+ def create_material(color: tuple[float, float, float, float],
68
+ offset_scale: tuple[float, float, float, float]):
69
+ region = material_block.create_ubo_region()
70
+ # When creating the material, ensure it has some initial data.
71
+ with region as material_region:
72
+ material_region.color[:] = color
73
+ material_region.offset_scale[:] = offset_scale
74
+ return region
75
+
76
+
77
+ triangle_vertices = (
78
+ -0.6, -0.5,
79
+ 0.6, -0.5,
80
+ 0.0, 0.6,
81
+ )
82
+
83
+ quad_vertices = (
84
+ -0.5, -0.5,
85
+ 0.5, -0.5,
86
+ 0.5, 0.5,
87
+ -0.5, 0.5,
88
+ )
89
+
90
+ materials = [
91
+ create_material((0.95, 0.30, 0.22, 1.0), (160.0, 240.0, 100.0, 100.0)),
92
+ create_material((0.18, 0.64, 0.96, 1.0), (360.0, 240.0, 120.0, 120.0)),
93
+ create_material((0.90, 0.82, 0.28, 1.0), (560.0, 240.0, 90.0, 90.0)),
94
+ ]
95
+ elapsed_time = 0.0
96
+
97
+ groups = []
98
+ # Give each separate material its own group, so the dirty regions can be committed during draw.
99
+ for material in materials:
100
+ group = pyglet.graphics.ShaderGroup(program)
101
+ group.set_uniform_buffer(material)
102
+ groups.append(group)
103
+
104
+ triangle_1 = program.vertex_list(
105
+ 3,
106
+ GeometryMode.TRIANGLES,
107
+ batch=batch,
108
+ group=groups[0],
109
+ position=("f", triangle_vertices),
110
+ )
111
+ triangle_2 = program.vertex_list_indexed(
112
+ 4,
113
+ GeometryMode.TRIANGLES,
114
+ indices=(0, 1, 2, 0, 2, 3),
115
+ batch=batch,
116
+ group=groups[1],
117
+ position=("f", quad_vertices),
118
+ )
119
+ triangle_3 = program.vertex_list(
120
+ 3,
121
+ GeometryMode.TRIANGLES,
122
+ batch=batch,
123
+ group=groups[2],
124
+ position=("f", triangle_vertices),
125
+ )
126
+
127
+
128
+ def update_materials(dt: float) -> None:
129
+ global elapsed_time
130
+ elapsed_time += dt
131
+
132
+ for index, region in enumerate(materials):
133
+ angle = elapsed_time * 1.6 + index * 2.1
134
+ center_x = 360.0 + math.cos(angle) * (120.0 + index * 18.0)
135
+ center_y = 240.0 + math.sin(angle * 0.8) * (70.0 + index * 12.0)
136
+
137
+ with region as material_region:
138
+ material_region.offset_scale[0] = center_x
139
+ material_region.offset_scale[1] = center_y
140
+
141
+
142
+ @window.event
143
+ def on_draw() -> None:
144
+ window.clear()
145
+ batch.draw()
146
+
147
+
148
+ pyglet.clock.schedule_interval(update_materials, 1 / 60)
149
+
150
+
151
+ if __name__ == "__main__":
152
+ pyglet.app.run()
@@ -0,0 +1,44 @@
1
+ import pyglet
2
+
3
+ from pyglet.math import Mat4, Vec3, Quaternion
4
+
5
+ window = pyglet.window.Window(resizable=True)
6
+ batch = pyglet.graphics.Batch()
7
+ camera = pyglet.window.camera.FPSCamera(window, position=Vec3(0.0, 0.0, 5.0), target=Vec3(0.0, 0.0, 0.0))
8
+
9
+
10
+ @window.event
11
+ def on_draw():
12
+ window.clear()
13
+ # Set the camera explicity while drawing the Batch:
14
+ with batch.draw_with_options() as options:
15
+ options.camera = camera
16
+
17
+
18
+ def animate(dt):
19
+ animate.elapsed += dt
20
+
21
+ rot_x = Quaternion.from_rotation(animate.elapsed/1, Vec3(1, 0, 0))
22
+ rot_y = Quaternion.from_rotation(animate.elapsed/2, Vec3(0, 1, 0))
23
+ rot_z = Quaternion.from_rotation(animate.elapsed/3, Vec3(0, 0, 1))
24
+ model_logo_instance.rotation = rot_x @ rot_y @ rot_z
25
+
26
+ rot_x = Quaternion.from_rotation(animate.elapsed/1, Vec3(1, 0, 0))
27
+ rot_y = Quaternion.from_rotation(animate.elapsed/2, Vec3(0, 1, 0))
28
+ rot_z = Quaternion.from_rotation(animate.elapsed/3, Vec3(0, 0, 1))
29
+ model_box_instance.rotation = rot_x @ rot_y @ rot_z
30
+
31
+
32
+ if __name__ == "__main__":
33
+ logo_scene = pyglet.resource.scene('logo3d.obj')
34
+ box_scene = pyglet.resource.scene('box.obj')
35
+
36
+ model_logo = logo_scene.create_models(batch=batch)[0] # only one model in this scene
37
+ model_logo_instance = model_logo.create_instance(translation=Vec3(1.25, 0.0, 1.0))
38
+
39
+ model_box = box_scene.create_models(batch=batch)[0] # only one model in this scene
40
+ model_box_instance = model_box.create_instance(translation=Vec3(-1.25, 0.0, 0.0))
41
+
42
+ animate.elapsed = 0.0
43
+ pyglet.clock.schedule_interval(animate, 1 / 60)
44
+ pyglet.app.run()
@@ -0,0 +1,114 @@
1
+ """Highlight a drop zone while dragging files over a Window.
2
+
3
+ This example is intended for platforms that support file drag events.
4
+ """
5
+
6
+ from __future__ import annotations
7
+
8
+ from pathlib import Path
9
+
10
+ import pyglet
11
+ from pyglet import shapes
12
+
13
+
14
+ class FileDragDropApp:
15
+ zone_width = 460
16
+ zone_height = 220
17
+
18
+ zone_normal = (70, 70, 80, 255)
19
+ zone_hover = (80, 170, 110, 255)
20
+ zone_border_normal = (130, 130, 140, 255)
21
+ zone_border_hover = (210, 240, 210, 255)
22
+
23
+ def __init__(self) -> None:
24
+ self.window = pyglet.window.Window(900, 600, caption="File Drag Drop Zone", file_drops=True)
25
+ self.batch = pyglet.graphics.Batch()
26
+ self.drag_paths: list[str] = []
27
+ self.zone_hovered = False
28
+
29
+ self.zone_x = (self.window.width - self.zone_width) // 2
30
+ self.zone_y = (self.window.height - self.zone_height) // 2
31
+
32
+ self.drop_zone = shapes.Rectangle(self.zone_x, self.zone_y,
33
+ self.zone_width, self.zone_height,
34
+ color=self.zone_normal, batch=self.batch)
35
+
36
+ self.drop_zone_border = shapes.BorderedRectangle(self.zone_x, self.zone_y,
37
+ self.zone_width, self.zone_height,
38
+ border=4,
39
+ color=self.zone_normal,
40
+ border_color=self.zone_border_normal,
41
+ batch=self.batch)
42
+
43
+ self.status_label = pyglet.text.Label("Drag one or more files into the window.",
44
+ x=self.window.width // 2, y=self.window.height - 40,
45
+ anchor_x='center', anchor_y='center',
46
+ font_size=14, batch=self.batch)
47
+
48
+ self.zone_label = pyglet.text.Label("Drop Inside This Area",
49
+ x=self.window.width // 2, y=self.window.height // 2,
50
+ anchor_x='center', anchor_y='center',
51
+ font_size=18, weight="bold", batch=self.batch)
52
+
53
+ self.result_label = pyglet.text.Label("",
54
+ x=self.window.width // 2, y=70,
55
+ width=self.window.width - 60,
56
+ multiline=True,
57
+ anchor_x='center', anchor_y='center',
58
+ align='center',
59
+ font_size=12, batch=self.batch)
60
+
61
+ self.window.push_handlers(self)
62
+
63
+ def _drop_hit_test(self, x: int, y: int) -> bool:
64
+ """Returns True if the mouse coordinates intersect the drop zone area."""
65
+ return (self.zone_x <= x <= self.zone_x + self.zone_width
66
+ and self.zone_y <= y <= self.zone_y + self.zone_height)
67
+
68
+ def _set_zone_hover(self, hovered: bool) -> None:
69
+ self.zone_hovered = hovered
70
+
71
+ if hovered:
72
+ self.drop_zone.color = self.zone_hover
73
+ self.drop_zone_border.border_color = self.zone_border_hover
74
+ else:
75
+ self.drop_zone.color = self.zone_normal
76
+ self.drop_zone_border.border_color = self.zone_border_normal
77
+
78
+ def on_draw(self) -> None:
79
+ self.window.clear()
80
+ self.batch.draw()
81
+
82
+ def on_file_drag_enter(self, x: int, y: int, paths: list[str]) -> None:
83
+ self.drag_paths = paths
84
+ self._set_zone_hover(self._drop_hit_test(x, y))
85
+ self.status_label.text = f"Dragging {len(paths)} file(s)..."
86
+
87
+ def on_file_drag(self, x: int, y: int, paths: list[str]) -> None:
88
+ self.drag_paths = paths
89
+ self._set_zone_hover(self._drop_hit_test(x, y))
90
+
91
+ def on_file_drag_exit(self) -> None:
92
+ """Drag was lost or exited the window."""
93
+ self.drag_paths = []
94
+ self._set_zone_hover(False)
95
+ self.status_label.text = "Drag one or more files into the window."
96
+
97
+ def on_file_drop(self, x: int, y: int, paths: list[str]) -> None:
98
+ self.drag_paths = []
99
+ self._set_zone_hover(False)
100
+
101
+ if self._drop_hit_test(x, y):
102
+ basenames = ", ".join(Path(path).name for path in paths[:3])
103
+ if len(paths) > 3:
104
+ basenames += ", ..."
105
+ self.status_label.text = "Drop accepted."
106
+ self.result_label.text = f"Dropped {len(paths)} file(s): {basenames}"
107
+ else:
108
+ self.status_label.text = "Drop missed zone."
109
+ self.result_label.text = "Drop happened outside the target area."
110
+
111
+
112
+ if __name__ == '__main__':
113
+ file_drop = FileDragDropApp()
114
+ pyglet.app.run()
@@ -18,7 +18,7 @@ if TYPE_CHECKING:
18
18
  from typing import Any, Callable, ItemsView, Sized
19
19
 
20
20
  #: The release version
21
- version = '3.0.dev5'
21
+ version = '3.0.dev6'
22
22
  __version__ = version
23
23
 
24
24
  MIN_PYTHON_VERSION = 3, 8
@@ -121,7 +121,6 @@ from __future__ import annotations
121
121
  import inspect
122
122
  import os.path
123
123
 
124
- from functools import partial
125
124
  from typing import TYPE_CHECKING, Literal, Union
126
125
  from weakref import WeakMethod
127
126
 
@@ -193,7 +192,7 @@ class EventDispatcher:
193
192
  msg = f'Unknown event "{name}"'
194
193
  raise EventException(msg)
195
194
  if inspect.ismethod(obj):
196
- yield name, WeakMethod(obj, partial(self._remove_handler, name))
195
+ yield name, WeakMethod(obj)
197
196
  else:
198
197
  yield name, obj
199
198
  else:
@@ -201,7 +200,7 @@ class EventDispatcher:
201
200
  for name in dir(obj):
202
201
  if name in self.event_types:
203
202
  meth = getattr(obj, name)
204
- yield name, WeakMethod(meth, partial(self._remove_handler, name))
203
+ yield name, WeakMethod(meth)
205
204
 
206
205
  for name, handler in kwargs.items():
207
206
  # Function for handling given event (no magic)
@@ -209,7 +208,7 @@ class EventDispatcher:
209
208
  msg = f'Unknown event "{name}"'
210
209
  raise EventException(msg)
211
210
  if inspect.ismethod(handler):
212
- yield name, WeakMethod(handler, partial(self._remove_handler, name))
211
+ yield name, WeakMethod(handler)
213
212
  else:
214
213
  yield name, handler
215
214
 
@@ -303,25 +302,6 @@ class EventDispatcher:
303
302
  except KeyError:
304
303
  pass
305
304
 
306
- def _remove_handler(self, name: str, handler: Callable) -> None:
307
- """Used internally to remove all handler instances for the given event name.
308
-
309
- This is normally called from a dead ``WeakMethod`` to remove itself from the
310
- event stack.
311
- """
312
- # Iterate over a copy as we might mutate the list
313
- for frame in list(self._event_stack):
314
-
315
- if name in frame:
316
- try:
317
- if frame[name] == handler:
318
- del frame[name]
319
- if not frame:
320
- self._event_stack.remove(frame)
321
- except TypeError:
322
- # weakref is already dead
323
- pass
324
-
325
305
  def dispatch_event(self, event_type: str, *args: Any) -> bool | None:
326
306
  """Dispatch an event to the attached event handlers.
327
307
 
@@ -37,6 +37,7 @@ if TYPE_CHECKING:
37
37
  from pyglet.graphics.shader import Shader, ShaderProgram, ComputeShaderProgram, TransformFeedbackShaderProgram # noqa: F401
38
38
  from pyglet.graphics.state import State # noqa: F401
39
39
  from pyglet.graphics.shader import get_default_shader # noqa: F401
40
+ from pyglet.graphics.buffer import UniformBufferRegion # noqa: F401
40
41
  from pyglet.graphics.draw import get_default_batch # noqa: F401
41
42
  from pyglet.graphics.texture import Texture, TextureGrid, Texture3D, TextureArray # noqa: F401
42
43
  from pyglet.graphics.atlas import TextureBin, TextureArrayBin, TextureAtlas # noqa: F401
@@ -53,6 +54,7 @@ else:
53
54
  )
54
55
  from pyglet.graphics.state import State # noqa: F401
55
56
  from pyglet.graphics.api import core # noqa: F401
57
+ from pyglet.graphics.buffer import UniformBufferRegion # noqa: F401
56
58
  from pyglet.graphics.texture import Texture, TextureGrid, Texture3D, TextureArray # noqa: F401
57
59
  from pyglet.graphics.atlas import TextureBin, TextureArrayBin, TextureAtlas # noqa: F401
58
60
  from pyglet.graphics.framebuffer import Framebuffer, Renderbuffer # noqa: F401
@@ -16,6 +16,7 @@ if TYPE_CHECKING:
16
16
  from pyglet.customtypes import ScissorProtocol
17
17
  from pyglet.graphics.draw import DrawContext
18
18
  from pyglet.graphics.api.gl.shader import ShaderProgram
19
+ from pyglet.graphics.buffer import UniformBufferRegion
19
20
  from pyglet.graphics.texture import Texture
20
21
 
21
22
 
@@ -50,8 +51,9 @@ class TextureState(State): # noqa: D101
50
51
 
51
52
  @dataclass(frozen=True)
52
53
  class MultiTextureSamplerState(State):
53
- """Static per-program sampler bindings for multi-texture draws."""
54
+ """Texture bindings and sampler uniforms for multi-texture draws."""
54
55
  program: ShaderProgram
56
+ textures: tuple[tuple[tuple[int, int], int, int], ...]
55
57
  uniforms: tuple[tuple[str, int], ...]
56
58
 
57
59
  sets_state: bool = True
@@ -61,10 +63,20 @@ class MultiTextureSamplerState(State):
61
63
  cls,
62
64
  program: ShaderProgram,
63
65
  textures: dict[str, Texture],
64
- first_texture_unit: int = 0) -> MultiTextureSamplerState:
65
- return cls(program, tuple((name, idx) for idx, name in enumerate(textures, first_texture_unit)))
66
+ first_texture_unit: int = 0,
67
+ set_id: int = 0) -> MultiTextureSamplerState:
68
+ texture_states = tuple(
69
+ ((texture.target, texture.id), texture_unit, set_id)
70
+ for texture_unit, texture in enumerate(textures.values(), first_texture_unit)
71
+ )
72
+ uniforms = tuple((name, idx) for idx, name in enumerate(textures, first_texture_unit))
73
+ return cls(program, texture_states, uniforms)
66
74
 
67
75
  def set_state(self, ctx: DrawContext) -> None:
76
+ for texture, texture_unit, _set_id in self.textures:
77
+ ctx.surface_ctx.glActiveTexture(GL_TEXTURE0 + texture_unit)
78
+ ctx.surface_ctx.glBindTexture(*texture)
79
+
68
80
  for uniform_name, texture_unit in self.uniforms:
69
81
  self.program[uniform_name] = texture_unit
70
82
 
@@ -216,8 +228,13 @@ class ViewportState(_BaseViewportState):
216
228
 
217
229
  @dataclass(frozen=True)
218
230
  class UniformBufferState(State):
219
- name: str
220
- binding: int
231
+ region: UniformBufferRegion
232
+ binding_index: int | None = None
233
+
234
+ sets_state: bool = True
235
+
236
+ def set_state(self, ctx: DrawContext) -> None:
237
+ self.region.bind(binding_index=self.binding_index)
221
238
 
222
239
 
223
240
  @dataclass(frozen=True)
@@ -5,7 +5,7 @@ from dataclasses import dataclass
5
5
  from pyglet.graphics.state import State
6
6
  from typing import TYPE_CHECKING
7
7
  from pyglet.graphics.api.gl.state import (TextureState, MultiTextureSamplerState, BlendState, ShaderUniformState, # noqa: F401
8
- DepthBufferComparison, ScissorState, ViewportState)
8
+ DepthBufferComparison, ScissorState, UniformBufferState, ViewportState)
9
9
 
10
10
 
11
11
  if TYPE_CHECKING:
@@ -24,6 +24,6 @@ class ShaderProgramState(State):
24
24
  ctx.active_shader_program = self.program
25
25
 
26
26
  if ctx.active_camera and ctx.active_camera.view.storage:
27
- ctx.active_camera.view.storage.bind(ctx)
27
+ ctx.active_camera.view.storage.bind_camera(ctx)
28
28
 
29
29
 
@@ -10,6 +10,7 @@ from pyglet.graphics.state import State, _BaseScissorState, _BaseViewportState
10
10
 
11
11
  if TYPE_CHECKING:
12
12
  from pyglet.customtypes import ScissorProtocol
13
+ from pyglet.graphics.buffer import UniformBufferRegion
13
14
  from pyglet.graphics.api.webgl.shader import ShaderProgram
14
15
  from pyglet.graphics.draw import DrawContext
15
16
  from pyglet.graphics.texture import Texture
@@ -53,9 +54,11 @@ class TextureState(State): # noqa: D101
53
54
 
54
55
  @dataclass(frozen=True)
55
56
  class MultiTextureSamplerState(State):
56
- """Static per-program sampler bindings for multi-texture draws."""
57
+ """Texture bindings and sampler uniforms for multi-texture draws."""
57
58
  program: ShaderProgram
59
+ textures: tuple[tuple[tuple[int, int], int, int], ...]
58
60
  uniforms: tuple[tuple[str, int], ...]
61
+ webgl_textures: tuple[Any, ...] = field(hash=False, compare=False)
59
62
 
60
63
  sets_state: bool = True
61
64
 
@@ -64,10 +67,21 @@ class MultiTextureSamplerState(State):
64
67
  cls,
65
68
  program: ShaderProgram,
66
69
  textures: dict[str, Texture],
67
- first_texture_unit: int = 0) -> MultiTextureSamplerState:
68
- return cls(program, tuple((name, idx) for idx, name in enumerate(textures, first_texture_unit)))
70
+ first_texture_unit: int = 0,
71
+ set_id: int = 0) -> MultiTextureSamplerState:
72
+ texture_states = tuple(
73
+ ((texture.target, id(texture.id)), texture_unit, set_id)
74
+ for texture_unit, texture in enumerate(textures.values(), first_texture_unit)
75
+ )
76
+ uniforms = tuple((name, idx) for idx, name in enumerate(textures, first_texture_unit))
77
+ webgl_textures = tuple(texture.id for texture in textures.values())
78
+ return cls(program, texture_states, uniforms, webgl_textures)
69
79
 
70
80
  def set_state(self, ctx: DrawContext) -> None:
81
+ for (texture, texture_unit, _set_id), webgl_texture in zip(self.textures, self.webgl_textures):
82
+ ctx.surface_ctx.gl.activeTexture(GL_TEXTURE0 + texture_unit)
83
+ ctx.surface_ctx.gl.bindTexture(texture[0], webgl_texture)
84
+
71
85
  for uniform_name, texture_unit in self.uniforms:
72
86
  self.program[uniform_name] = texture_unit
73
87
 
@@ -203,8 +217,13 @@ class ViewportState(_BaseViewportState):
203
217
 
204
218
  @dataclass(frozen=True)
205
219
  class UniformBufferState(State):
206
- name: str
207
- binding: int
220
+ region: UniformBufferRegion
221
+ binding_index: int | None = None
222
+
223
+ sets_state: bool = True
224
+
225
+ def set_state(self, ctx: DrawContext) -> None:
226
+ self.region.bind(binding_index=self.binding_index)
208
227
 
209
228
 
210
229
  @dataclass(frozen=True)
@@ -464,6 +464,89 @@ class UniformBufferObject(RingBuffer):
464
464
  )
465
465
 
466
466
 
467
+ class UniformBufferRegion:
468
+ """UBO region that uploads through a ring-buffered ``UniformBufferObject``.
469
+
470
+ The region owns one CPU-side data structure and a set of GPU ranges.
471
+
472
+ General practice is to update the data structure, mark it dirty, and then commit when you are done updating
473
+ for that frame.
474
+
475
+ .. warning:: Do not make the CPU-side data dirty after binding/committing during the same frame (for example,
476
+ during the ``on_draw`` call), or GPU stalls may occur.
477
+
478
+ .. versionadded:: 3.0
479
+ """
480
+
481
+ __slots__ = (
482
+ "_current_binding",
483
+ "_current_range",
484
+ "_dirty",
485
+ "_next_range_index",
486
+ "_ranges",
487
+ "_ubo",
488
+ "data",
489
+ )
490
+
491
+ def __init__(
492
+ self,
493
+ ubo: UniformBufferObject,
494
+ *,
495
+ copies_per_resource: int | None = None,
496
+ ) -> None:
497
+ self._ubo = ubo
498
+ self.data = ubo.get_data_structure()
499
+ self._current_binding: BufferBindingSlice | None = None
500
+ self._current_range: BufferRange | None = None
501
+ self._ranges = ubo.reserve_resource_range(copies_per_resource=copies_per_resource)
502
+ self._next_range_index = 0
503
+ self._dirty = True
504
+
505
+ @property
506
+ def ubo(self) -> UniformBufferObject:
507
+ """The underlying ``UniformBufferObject``."""
508
+ return self._ubo
509
+
510
+ @property
511
+ def dirty(self) -> bool:
512
+ """Whether the CPU-side data needs to be uploaded before drawing."""
513
+ return self._dirty
514
+
515
+ def __enter__(self) -> ctypes.Structure:
516
+ return self.data
517
+
518
+ def __exit__(self, _exc_type: Any, _exc_val: Any, _exc_tb: Any) -> None:
519
+ self.mark_dirty()
520
+
521
+ def mark_dirty(self) -> None:
522
+ """Mark the CPU-side data for upload on the next ``bind`` call."""
523
+ self._dirty = True
524
+
525
+ def commit(self) -> None:
526
+ """Upload dirty CPU-side data to the next writable GPU range."""
527
+ if not self._dirty:
528
+ return
529
+
530
+ self._current_binding, self._current_range, self._next_range_index = (
531
+ self._ubo.upload_to_available_binding_from_ranges(
532
+ self.data,
533
+ self._ranges,
534
+ self._next_range_index,
535
+ )
536
+ )
537
+ self._dirty = False
538
+
539
+ def bind(self, *, binding_index: int | None = None) -> None:
540
+ """Upload dirty data if needed, then bind the current GPU range."""
541
+ self.commit()
542
+
543
+ if self._current_binding is None or self._current_range is None:
544
+ return
545
+
546
+ self._ubo.use_range(self._current_range)
547
+ self._ubo.bind_slice(self._current_binding, binding_index=binding_index)
548
+
549
+
467
550
  class MappedBufferObject(AbstractBuffer):
468
551
  """A GPU buffer that supports map/unmap and range mapping."""
469
552