pyglet 2.1.dev7__tar.gz → 2.1rc1__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 (809) hide show
  1. {pyglet-2.1.dev7 → pyglet-2.1rc1}/PKG-INFO +1 -1
  2. {pyglet-2.1.dev7 → pyglet-2.1rc1}/doc/index.rst +3 -2
  3. pyglet-2.1rc1/doc/modules/models.rst +6 -0
  4. {pyglet-2.1.dev7 → pyglet-2.1rc1}/doc/programming_guide/migration.rst +22 -8
  5. pyglet-2.1rc1/doc/programming_guide/models.rst +10 -0
  6. {pyglet-2.1.dev7 → pyglet-2.1rc1}/examples/dpi_scaled_window.py +15 -0
  7. {pyglet-2.1.dev7 → pyglet-2.1rc1}/examples/model/fpscamera.py +5 -6
  8. {pyglet-2.1.dev7 → pyglet-2.1rc1}/examples/model/model.py +4 -2
  9. {pyglet-2.1.dev7 → pyglet-2.1rc1}/pyglet/__init__.py +9 -2
  10. {pyglet-2.1.dev7 → pyglet-2.1rc1}/pyglet/__init__.pyi +0 -1
  11. {pyglet-2.1.dev7 → pyglet-2.1rc1}/pyglet/experimental/jobs.py +11 -9
  12. {pyglet-2.1.dev7 → pyglet-2.1rc1}/pyglet/gl/base.py +8 -8
  13. {pyglet-2.1.dev7 → pyglet-2.1rc1}/pyglet/gl/headless.py +4 -2
  14. {pyglet-2.1.dev7 → pyglet-2.1rc1}/pyglet/graphics/shader.py +1 -2
  15. {pyglet-2.1.dev7 → pyglet-2.1rc1}/pyglet/graphics/vertexdomain.py +6 -2
  16. {pyglet-2.1.dev7 → pyglet-2.1rc1}/pyglet/model/__init__.py +60 -103
  17. pyglet-2.1rc1/pyglet/model/codecs/__init__.py +58 -0
  18. pyglet-2.1rc1/pyglet/model/codecs/base.py +140 -0
  19. {pyglet-2.1.dev7 → pyglet-2.1rc1}/pyglet/model/codecs/gltf.py +115 -70
  20. {pyglet-2.1.dev7 → pyglet-2.1rc1}/pyglet/model/codecs/obj.py +52 -43
  21. {pyglet-2.1.dev7 → pyglet-2.1rc1}/pyglet/resource.py +5 -12
  22. {pyglet-2.1.dev7 → pyglet-2.1rc1}/pyglet/window/__init__.py +4 -4
  23. {pyglet-2.1.dev7 → pyglet-2.1rc1}/pyglet/window/cocoa/__init__.py +5 -5
  24. {pyglet-2.1.dev7 → pyglet-2.1rc1}/pyglet/window/win32/__init__.py +3 -3
  25. {pyglet-2.1.dev7 → pyglet-2.1rc1}/pyglet/window/xlib/__init__.py +5 -6
  26. {pyglet-2.1.dev7 → pyglet-2.1rc1}/tests/integration/model/test_loading.py +9 -9
  27. pyglet-2.1.dev7/pyglet/model/codecs/__init__.py +0 -63
  28. pyglet-2.1.dev7/pyglet/model/codecs/base.py +0 -104
  29. {pyglet-2.1.dev7 → pyglet-2.1rc1}/.coveragerc +0 -0
  30. {pyglet-2.1.dev7 → pyglet-2.1rc1}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
  31. {pyglet-2.1.dev7 → pyglet-2.1rc1}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
  32. {pyglet-2.1.dev7 → pyglet-2.1rc1}/.github/ISSUE_TEMPLATE/questions--or-other.md +0 -0
  33. {pyglet-2.1.dev7 → pyglet-2.1rc1}/.github/workflows/codeql.yml +0 -0
  34. {pyglet-2.1.dev7 → pyglet-2.1rc1}/.github/workflows/unittests.yml +0 -0
  35. {pyglet-2.1.dev7 → pyglet-2.1rc1}/.gitignore +0 -0
  36. {pyglet-2.1.dev7 → pyglet-2.1rc1}/.readthedocs.yml +0 -0
  37. {pyglet-2.1.dev7 → pyglet-2.1rc1}/LICENSE +0 -0
  38. {pyglet-2.1.dev7 → pyglet-2.1rc1}/MANIFEST.in +0 -0
  39. {pyglet-2.1.dev7 → pyglet-2.1rc1}/README.md +0 -0
  40. {pyglet-2.1.dev7 → pyglet-2.1rc1}/RELEASE_NOTES +0 -0
  41. {pyglet-2.1.dev7 → pyglet-2.1rc1}/contrib/aseprite_codec/README +0 -0
  42. {pyglet-2.1.dev7 → pyglet-2.1rc1}/contrib/aseprite_codec/asedemo.py +0 -0
  43. {pyglet-2.1.dev7 → pyglet-2.1rc1}/contrib/aseprite_codec/aseprite.py +0 -0
  44. {pyglet-2.1.dev7 → pyglet-2.1rc1}/contrib/aseprite_codec/running.ase +0 -0
  45. {pyglet-2.1.dev7 → pyglet-2.1rc1}/contrib/logo3d/logo3d.jpg +0 -0
  46. {pyglet-2.1.dev7 → pyglet-2.1rc1}/contrib/logo3d/logo3d.obj.zip +0 -0
  47. {pyglet-2.1.dev7 → pyglet-2.1rc1}/contrib/logo3d/logo3d.wings +0 -0
  48. {pyglet-2.1.dev7 → pyglet-2.1rc1}/contrib/qt_sprite_preview.py +0 -0
  49. {pyglet-2.1.dev7 → pyglet-2.1rc1}/contrib/scenemanager.py +0 -0
  50. {pyglet-2.1.dev7 → pyglet-2.1rc1}/contrib/toys/follow_mouse.py +0 -0
  51. {pyglet-2.1.dev7 → pyglet-2.1rc1}/doc/Makefile +0 -0
  52. {pyglet-2.1.dev7 → pyglet-2.1rc1}/doc/_static/css/custom.css +0 -0
  53. {pyglet-2.1.dev7 → pyglet-2.1rc1}/doc/_static/favicon.ico +0 -0
  54. {pyglet-2.1.dev7 → pyglet-2.1rc1}/doc/_static/logo.png +0 -0
  55. {pyglet-2.1.dev7 → pyglet-2.1rc1}/doc/_static/logo5.svg +0 -0
  56. {pyglet-2.1.dev7 → pyglet-2.1rc1}/doc/_static/relatedlogo.png +0 -0
  57. {pyglet-2.1.dev7 → pyglet-2.1rc1}/doc/conf.py +0 -0
  58. {pyglet-2.1.dev7 → pyglet-2.1rc1}/doc/external_resources.rst +0 -0
  59. {pyglet-2.1.dev7 → pyglet-2.1rc1}/doc/internal/contributing.rst +0 -0
  60. {pyglet-2.1.dev7 → pyglet-2.1rc1}/doc/internal/dist.rst +0 -0
  61. {pyglet-2.1.dev7 → pyglet-2.1rc1}/doc/internal/doc.rst +0 -0
  62. {pyglet-2.1.dev7 → pyglet-2.1rc1}/doc/internal/generated.rst +0 -0
  63. {pyglet-2.1.dev7 → pyglet-2.1rc1}/doc/internal/gl.rst +0 -0
  64. {pyglet-2.1.dev7 → pyglet-2.1rc1}/doc/internal/media_logging_manual.rst +0 -0
  65. {pyglet-2.1.dev7 → pyglet-2.1rc1}/doc/internal/media_manual.rst +0 -0
  66. {pyglet-2.1.dev7 → pyglet-2.1rc1}/doc/internal/testing.rst +0 -0
  67. {pyglet-2.1.dev7 → pyglet-2.1rc1}/doc/internal/virtualenv.rst +0 -0
  68. {pyglet-2.1.dev7 → pyglet-2.1rc1}/doc/internal/wraptypes-class.svg +0 -0
  69. {pyglet-2.1.dev7 → pyglet-2.1rc1}/doc/internal/wraptypes.rst +0 -0
  70. {pyglet-2.1.dev7 → pyglet-2.1rc1}/doc/make.bat +0 -0
  71. {pyglet-2.1.dev7 → pyglet-2.1rc1}/doc/modules/app.rst +0 -0
  72. {pyglet-2.1.dev7 → pyglet-2.1rc1}/doc/modules/clock.rst +0 -0
  73. {pyglet-2.1.dev7 → pyglet-2.1rc1}/doc/modules/customtypes.rst +0 -0
  74. {pyglet-2.1.dev7 → pyglet-2.1rc1}/doc/modules/display.rst +0 -0
  75. {pyglet-2.1.dev7 → pyglet-2.1rc1}/doc/modules/event.rst +0 -0
  76. {pyglet-2.1.dev7 → pyglet-2.1rc1}/doc/modules/font.rst +0 -0
  77. {pyglet-2.1.dev7 → pyglet-2.1rc1}/doc/modules/gl.rst +0 -0
  78. {pyglet-2.1.dev7 → pyglet-2.1rc1}/doc/modules/graphics/allocation.rst +0 -0
  79. {pyglet-2.1.dev7 → pyglet-2.1rc1}/doc/modules/graphics/index.rst +0 -0
  80. {pyglet-2.1.dev7 → pyglet-2.1rc1}/doc/modules/graphics/shader.rst +0 -0
  81. {pyglet-2.1.dev7 → pyglet-2.1rc1}/doc/modules/graphics/vertexbuffer.rst +0 -0
  82. {pyglet-2.1.dev7 → pyglet-2.1rc1}/doc/modules/graphics/vertexdomain.rst +0 -0
  83. {pyglet-2.1.dev7 → pyglet-2.1rc1}/doc/modules/gui.rst +0 -0
  84. {pyglet-2.1.dev7 → pyglet-2.1rc1}/doc/modules/image/animation.rst +0 -0
  85. {pyglet-2.1.dev7 → pyglet-2.1rc1}/doc/modules/image/atlas.rst +0 -0
  86. {pyglet-2.1.dev7 → pyglet-2.1rc1}/doc/modules/image/buffer.rst +0 -0
  87. {pyglet-2.1.dev7 → pyglet-2.1rc1}/doc/modules/image/index.rst +0 -0
  88. {pyglet-2.1.dev7 → pyglet-2.1rc1}/doc/modules/info.rst +0 -0
  89. {pyglet-2.1.dev7 → pyglet-2.1rc1}/doc/modules/input.rst +0 -0
  90. {pyglet-2.1.dev7 → pyglet-2.1rc1}/doc/modules/math.rst +0 -0
  91. {pyglet-2.1.dev7 → pyglet-2.1rc1}/doc/modules/media.rst +0 -0
  92. {pyglet-2.1.dev7 → pyglet-2.1rc1}/doc/modules/media_synthesis.rst +0 -0
  93. {pyglet-2.1.dev7 → pyglet-2.1rc1}/doc/modules/pyglet.rst +0 -0
  94. {pyglet-2.1.dev7 → pyglet-2.1rc1}/doc/modules/resource.rst +0 -0
  95. {pyglet-2.1.dev7 → pyglet-2.1rc1}/doc/modules/shapes.rst +0 -0
  96. {pyglet-2.1.dev7 → pyglet-2.1rc1}/doc/modules/sprite.rst +0 -0
  97. {pyglet-2.1.dev7 → pyglet-2.1rc1}/doc/modules/text/caret.rst +0 -0
  98. {pyglet-2.1.dev7 → pyglet-2.1rc1}/doc/modules/text/document.rst +0 -0
  99. {pyglet-2.1.dev7 → pyglet-2.1rc1}/doc/modules/text/index.rst +0 -0
  100. {pyglet-2.1.dev7 → pyglet-2.1rc1}/doc/modules/text/layout.rst +0 -0
  101. {pyglet-2.1.dev7 → pyglet-2.1rc1}/doc/modules/window.rst +0 -0
  102. {pyglet-2.1.dev7 → pyglet-2.1rc1}/doc/modules/window_key.rst +0 -0
  103. {pyglet-2.1.dev7 → pyglet-2.1rc1}/doc/modules/window_mouse.rst +0 -0
  104. {pyglet-2.1.dev7 → pyglet-2.1rc1}/doc/programming_guide/context.rst +0 -0
  105. {pyglet-2.1.dev7 → pyglet-2.1rc1}/doc/programming_guide/debug.rst +0 -0
  106. {pyglet-2.1.dev7 → pyglet-2.1rc1}/doc/programming_guide/eventloop.rst +0 -0
  107. {pyglet-2.1.dev7 → pyglet-2.1rc1}/doc/programming_guide/events.rst +0 -0
  108. {pyglet-2.1.dev7 → pyglet-2.1rc1}/doc/programming_guide/examplegame.rst +0 -0
  109. {pyglet-2.1.dev7 → pyglet-2.1rc1}/doc/programming_guide/gl.rst +0 -0
  110. {pyglet-2.1.dev7 → pyglet-2.1rc1}/doc/programming_guide/gui.rst +0 -0
  111. {pyglet-2.1.dev7 → pyglet-2.1rc1}/doc/programming_guide/image.rst +0 -0
  112. {pyglet-2.1.dev7 → pyglet-2.1rc1}/doc/programming_guide/img/abstract_image.png +0 -0
  113. {pyglet-2.1.dev7 → pyglet-2.1rc1}/doc/programming_guide/img/abstract_image.svg +0 -0
  114. {pyglet-2.1.dev7 → pyglet-2.1rc1}/doc/programming_guide/img/buffer_image.png +0 -0
  115. {pyglet-2.1.dev7 → pyglet-2.1rc1}/doc/programming_guide/img/buffer_image.svg +0 -0
  116. {pyglet-2.1.dev7 → pyglet-2.1rc1}/doc/programming_guide/img/context_flow.png +0 -0
  117. {pyglet-2.1.dev7 → pyglet-2.1rc1}/doc/programming_guide/img/context_flow.svg +0 -0
  118. {pyglet-2.1.dev7 → pyglet-2.1rc1}/doc/programming_guide/img/cursor_mac_crosshair.png +0 -0
  119. {pyglet-2.1.dev7 → pyglet-2.1rc1}/doc/programming_guide/img/cursor_mac_default.png +0 -0
  120. {pyglet-2.1.dev7 → pyglet-2.1rc1}/doc/programming_guide/img/cursor_mac_hand.png +0 -0
  121. {pyglet-2.1.dev7 → pyglet-2.1rc1}/doc/programming_guide/img/cursor_mac_no.png +0 -0
  122. {pyglet-2.1.dev7 → pyglet-2.1rc1}/doc/programming_guide/img/cursor_mac_size_down.png +0 -0
  123. {pyglet-2.1.dev7 → pyglet-2.1rc1}/doc/programming_guide/img/cursor_mac_size_left.png +0 -0
  124. {pyglet-2.1.dev7 → pyglet-2.1rc1}/doc/programming_guide/img/cursor_mac_size_left_right.png +0 -0
  125. {pyglet-2.1.dev7 → pyglet-2.1rc1}/doc/programming_guide/img/cursor_mac_size_right.png +0 -0
  126. {pyglet-2.1.dev7 → pyglet-2.1rc1}/doc/programming_guide/img/cursor_mac_size_up.png +0 -0
  127. {pyglet-2.1.dev7 → pyglet-2.1rc1}/doc/programming_guide/img/cursor_mac_size_up_down.png +0 -0
  128. {pyglet-2.1.dev7 → pyglet-2.1rc1}/doc/programming_guide/img/cursor_mac_text.png +0 -0
  129. {pyglet-2.1.dev7 → pyglet-2.1rc1}/doc/programming_guide/img/cursor_mac_wait.png +0 -0
  130. {pyglet-2.1.dev7 → pyglet-2.1rc1}/doc/programming_guide/img/cursor_win_crosshair.png +0 -0
  131. {pyglet-2.1.dev7 → pyglet-2.1rc1}/doc/programming_guide/img/cursor_win_default.png +0 -0
  132. {pyglet-2.1.dev7 → pyglet-2.1rc1}/doc/programming_guide/img/cursor_win_hand.png +0 -0
  133. {pyglet-2.1.dev7 → pyglet-2.1rc1}/doc/programming_guide/img/cursor_win_help.png +0 -0
  134. {pyglet-2.1.dev7 → pyglet-2.1rc1}/doc/programming_guide/img/cursor_win_no.png +0 -0
  135. {pyglet-2.1.dev7 → pyglet-2.1rc1}/doc/programming_guide/img/cursor_win_size.png +0 -0
  136. {pyglet-2.1.dev7 → pyglet-2.1rc1}/doc/programming_guide/img/cursor_win_size_left_right.png +0 -0
  137. {pyglet-2.1.dev7 → pyglet-2.1rc1}/doc/programming_guide/img/cursor_win_size_nesw.png +0 -0
  138. {pyglet-2.1.dev7 → pyglet-2.1rc1}/doc/programming_guide/img/cursor_win_size_nwse.png +0 -0
  139. {pyglet-2.1.dev7 → pyglet-2.1rc1}/doc/programming_guide/img/cursor_win_size_up_down.png +0 -0
  140. {pyglet-2.1.dev7 → pyglet-2.1rc1}/doc/programming_guide/img/cursor_win_text.png +0 -0
  141. {pyglet-2.1.dev7 → pyglet-2.1rc1}/doc/programming_guide/img/cursor_win_wait.png +0 -0
  142. {pyglet-2.1.dev7 → pyglet-2.1rc1}/doc/programming_guide/img/cursor_win_wait_arrow.png +0 -0
  143. {pyglet-2.1.dev7 → pyglet-2.1rc1}/doc/programming_guide/img/explosion.png +0 -0
  144. {pyglet-2.1.dev7 → pyglet-2.1rc1}/doc/programming_guide/img/font_metrics.png +0 -0
  145. {pyglet-2.1.dev7 → pyglet-2.1rc1}/doc/programming_guide/img/font_metrics.svg +0 -0
  146. {pyglet-2.1.dev7 → pyglet-2.1rc1}/doc/programming_guide/img/image_classes.png +0 -0
  147. {pyglet-2.1.dev7 → pyglet-2.1rc1}/doc/programming_guide/img/image_classes.svg +0 -0
  148. {pyglet-2.1.dev7 → pyglet-2.1rc1}/doc/programming_guide/img/image_grid.png +0 -0
  149. {pyglet-2.1.dev7 → pyglet-2.1rc1}/doc/programming_guide/img/image_grid.svg +0 -0
  150. {pyglet-2.1.dev7 → pyglet-2.1rc1}/doc/programming_guide/img/image_sequence.png +0 -0
  151. {pyglet-2.1.dev7 → pyglet-2.1rc1}/doc/programming_guide/img/image_sequence.svg +0 -0
  152. {pyglet-2.1.dev7 → pyglet-2.1rc1}/doc/programming_guide/img/mouse_coordinates.png +0 -0
  153. {pyglet-2.1.dev7 → pyglet-2.1rc1}/doc/programming_guide/img/mouse_coordinates.svg +0 -0
  154. {pyglet-2.1.dev7 → pyglet-2.1rc1}/doc/programming_guide/img/screens.png +0 -0
  155. {pyglet-2.1.dev7 → pyglet-2.1rc1}/doc/programming_guide/img/screens.svg +0 -0
  156. {pyglet-2.1.dev7 → pyglet-2.1rc1}/doc/programming_guide/img/text_classes.png +0 -0
  157. {pyglet-2.1.dev7 → pyglet-2.1rc1}/doc/programming_guide/img/text_classes.svg +0 -0
  158. {pyglet-2.1.dev7 → pyglet-2.1rc1}/doc/programming_guide/img/window_location.png +0 -0
  159. {pyglet-2.1.dev7 → pyglet-2.1rc1}/doc/programming_guide/img/window_location.svg +0 -0
  160. {pyglet-2.1.dev7 → pyglet-2.1rc1}/doc/programming_guide/img/window_osx_borderless.png +0 -0
  161. {pyglet-2.1.dev7 → pyglet-2.1rc1}/doc/programming_guide/img/window_osx_default.png +0 -0
  162. {pyglet-2.1.dev7 → pyglet-2.1rc1}/doc/programming_guide/img/window_osx_dialog.png +0 -0
  163. {pyglet-2.1.dev7 → pyglet-2.1rc1}/doc/programming_guide/img/window_osx_tool.png +0 -0
  164. {pyglet-2.1.dev7 → pyglet-2.1rc1}/doc/programming_guide/img/window_xp_default.png +0 -0
  165. {pyglet-2.1.dev7 → pyglet-2.1rc1}/doc/programming_guide/img/window_xp_dialog.png +0 -0
  166. {pyglet-2.1.dev7 → pyglet-2.1rc1}/doc/programming_guide/img/window_xp_overlay.png +0 -0
  167. {pyglet-2.1.dev7 → pyglet-2.1rc1}/doc/programming_guide/img/window_xp_tool.png +0 -0
  168. {pyglet-2.1.dev7 → pyglet-2.1rc1}/doc/programming_guide/img/window_xp_transparent.png +0 -0
  169. {pyglet-2.1.dev7 → pyglet-2.1rc1}/doc/programming_guide/input.rst +0 -0
  170. {pyglet-2.1.dev7 → pyglet-2.1rc1}/doc/programming_guide/installation.rst +0 -0
  171. {pyglet-2.1.dev7 → pyglet-2.1rc1}/doc/programming_guide/keyboard.rst +0 -0
  172. {pyglet-2.1.dev7 → pyglet-2.1rc1}/doc/programming_guide/math.rst +0 -0
  173. {pyglet-2.1.dev7 → pyglet-2.1rc1}/doc/programming_guide/media.rst +0 -0
  174. {pyglet-2.1.dev7 → pyglet-2.1rc1}/doc/programming_guide/mouse.rst +0 -0
  175. {pyglet-2.1.dev7 → pyglet-2.1rc1}/doc/programming_guide/opengles.rst +0 -0
  176. {pyglet-2.1.dev7 → pyglet-2.1rc1}/doc/programming_guide/options.rst +0 -0
  177. {pyglet-2.1.dev7 → pyglet-2.1rc1}/doc/programming_guide/quickstart.rst +0 -0
  178. {pyglet-2.1.dev7 → pyglet-2.1rc1}/doc/programming_guide/rendering.rst +0 -0
  179. {pyglet-2.1.dev7 → pyglet-2.1rc1}/doc/programming_guide/resources.rst +0 -0
  180. {pyglet-2.1.dev7 → pyglet-2.1rc1}/doc/programming_guide/shapes.rst +0 -0
  181. {pyglet-2.1.dev7 → pyglet-2.1rc1}/doc/programming_guide/text.rst +0 -0
  182. {pyglet-2.1.dev7 → pyglet-2.1rc1}/doc/programming_guide/time.rst +0 -0
  183. {pyglet-2.1.dev7 → pyglet-2.1rc1}/doc/programming_guide/windowing.rst +0 -0
  184. {pyglet-2.1.dev7 → pyglet-2.1rc1}/doc/requirements.txt +0 -0
  185. {pyglet-2.1.dev7 → pyglet-2.1rc1}/examples/clipboard.py +0 -0
  186. {pyglet-2.1.dev7 → pyglet-2.1rc1}/examples/events/events_key_state_handler.py +0 -0
  187. {pyglet-2.1.dev7 → pyglet-2.1rc1}/examples/events/register_event_type.py +0 -0
  188. {pyglet-2.1.dev7 → pyglet-2.1rc1}/examples/events/window_events.py +0 -0
  189. {pyglet-2.1.dev7 → pyglet-2.1rc1}/examples/events/window_platform_event.py +0 -0
  190. {pyglet-2.1.dev7 → pyglet-2.1rc1}/examples/file_dialog.py +0 -0
  191. {pyglet-2.1.dev7 → pyglet-2.1rc1}/examples/game/resources/asteroid.png +0 -0
  192. {pyglet-2.1.dev7 → pyglet-2.1rc1}/examples/game/resources/bullet.png +0 -0
  193. {pyglet-2.1.dev7 → pyglet-2.1rc1}/examples/game/resources/bullet.wav +0 -0
  194. {pyglet-2.1.dev7 → pyglet-2.1rc1}/examples/game/resources/engine_flame.png +0 -0
  195. {pyglet-2.1.dev7 → pyglet-2.1rc1}/examples/game/resources/player.png +0 -0
  196. {pyglet-2.1.dev7 → pyglet-2.1rc1}/examples/game/version1/asteroid.py +0 -0
  197. {pyglet-2.1.dev7 → pyglet-2.1rc1}/examples/game/version1/game/__init__.py +0 -0
  198. {pyglet-2.1.dev7 → pyglet-2.1rc1}/examples/game/version1/game/load.py +0 -0
  199. {pyglet-2.1.dev7 → pyglet-2.1rc1}/examples/game/version1/game/resources.py +0 -0
  200. {pyglet-2.1.dev7 → pyglet-2.1rc1}/examples/game/version2/asteroid.py +0 -0
  201. {pyglet-2.1.dev7 → pyglet-2.1rc1}/examples/game/version2/game/__init__.py +0 -0
  202. {pyglet-2.1.dev7 → pyglet-2.1rc1}/examples/game/version2/game/load.py +0 -0
  203. {pyglet-2.1.dev7 → pyglet-2.1rc1}/examples/game/version2/game/physicalobject.py +0 -0
  204. {pyglet-2.1.dev7 → pyglet-2.1rc1}/examples/game/version2/game/player.py +0 -0
  205. {pyglet-2.1.dev7 → pyglet-2.1rc1}/examples/game/version2/game/resources.py +0 -0
  206. {pyglet-2.1.dev7 → pyglet-2.1rc1}/examples/game/version3/asteroid.py +0 -0
  207. {pyglet-2.1.dev7 → pyglet-2.1rc1}/examples/game/version3/game/__init__.py +0 -0
  208. {pyglet-2.1.dev7 → pyglet-2.1rc1}/examples/game/version3/game/load.py +0 -0
  209. {pyglet-2.1.dev7 → pyglet-2.1rc1}/examples/game/version3/game/physicalobject.py +0 -0
  210. {pyglet-2.1.dev7 → pyglet-2.1rc1}/examples/game/version3/game/player.py +0 -0
  211. {pyglet-2.1.dev7 → pyglet-2.1rc1}/examples/game/version3/game/resources.py +0 -0
  212. {pyglet-2.1.dev7 → pyglet-2.1rc1}/examples/game/version3/game/util.py +0 -0
  213. {pyglet-2.1.dev7 → pyglet-2.1rc1}/examples/game/version4/asteroid.py +0 -0
  214. {pyglet-2.1.dev7 → pyglet-2.1rc1}/examples/game/version4/game/__init__.py +0 -0
  215. {pyglet-2.1.dev7 → pyglet-2.1rc1}/examples/game/version4/game/asteroid.py +0 -0
  216. {pyglet-2.1.dev7 → pyglet-2.1rc1}/examples/game/version4/game/bullet.py +0 -0
  217. {pyglet-2.1.dev7 → pyglet-2.1rc1}/examples/game/version4/game/load.py +0 -0
  218. {pyglet-2.1.dev7 → pyglet-2.1rc1}/examples/game/version4/game/physicalobject.py +0 -0
  219. {pyglet-2.1.dev7 → pyglet-2.1rc1}/examples/game/version4/game/player.py +0 -0
  220. {pyglet-2.1.dev7 → pyglet-2.1rc1}/examples/game/version4/game/resources.py +0 -0
  221. {pyglet-2.1.dev7 → pyglet-2.1rc1}/examples/game/version4/game/util.py +0 -0
  222. {pyglet-2.1.dev7 → pyglet-2.1rc1}/examples/game/version5/asteroid.py +0 -0
  223. {pyglet-2.1.dev7 → pyglet-2.1rc1}/examples/game/version5/game/__init__.py +0 -0
  224. {pyglet-2.1.dev7 → pyglet-2.1rc1}/examples/game/version5/game/asteroid.py +0 -0
  225. {pyglet-2.1.dev7 → pyglet-2.1rc1}/examples/game/version5/game/bullet.py +0 -0
  226. {pyglet-2.1.dev7 → pyglet-2.1rc1}/examples/game/version5/game/load.py +0 -0
  227. {pyglet-2.1.dev7 → pyglet-2.1rc1}/examples/game/version5/game/physicalobject.py +0 -0
  228. {pyglet-2.1.dev7 → pyglet-2.1rc1}/examples/game/version5/game/player.py +0 -0
  229. {pyglet-2.1.dev7 → pyglet-2.1rc1}/examples/game/version5/game/resources.py +0 -0
  230. {pyglet-2.1.dev7 → pyglet-2.1rc1}/examples/game/version5/game/util.py +0 -0
  231. {pyglet-2.1.dev7 → pyglet-2.1rc1}/examples/graphics/image_convert.py +0 -0
  232. {pyglet-2.1.dev7 → pyglet-2.1rc1}/examples/graphics/image_display.py +0 -0
  233. {pyglet-2.1.dev7 → pyglet-2.1rc1}/examples/gui/bar.png +0 -0
  234. {pyglet-2.1.dev7 → pyglet-2.1rc1}/examples/gui/button_hover.png +0 -0
  235. {pyglet-2.1.dev7 → pyglet-2.1rc1}/examples/gui/button_pressed.png +0 -0
  236. {pyglet-2.1.dev7 → pyglet-2.1rc1}/examples/gui/button_unpressed.png +0 -0
  237. {pyglet-2.1.dev7 → pyglet-2.1rc1}/examples/gui/knob.png +0 -0
  238. {pyglet-2.1.dev7 → pyglet-2.1rc1}/examples/gui/widgets.py +0 -0
  239. {pyglet-2.1.dev7 → pyglet-2.1rc1}/examples/hello_world.py +0 -0
  240. {pyglet-2.1.dev7 → pyglet-2.1rc1}/examples/input/apple_remote.py +0 -0
  241. {pyglet-2.1.dev7 → pyglet-2.1rc1}/examples/input/controller.py +0 -0
  242. {pyglet-2.1.dev7 → pyglet-2.1rc1}/examples/input/input.py +0 -0
  243. {pyglet-2.1.dev7 → pyglet-2.1rc1}/examples/input/joystick.py +0 -0
  244. {pyglet-2.1.dev7 → pyglet-2.1rc1}/examples/input/tablet.py +0 -0
  245. {pyglet-2.1.dev7 → pyglet-2.1rc1}/examples/media/media_info.py +0 -0
  246. {pyglet-2.1.dev7 → pyglet-2.1rc1}/examples/media/media_player.py +0 -0
  247. {pyglet-2.1.dev7 → pyglet-2.1rc1}/examples/media/noisy/README +0 -0
  248. {pyglet-2.1.dev7 → pyglet-2.1rc1}/examples/media/noisy/ball.png +0 -0
  249. {pyglet-2.1.dev7 → pyglet-2.1rc1}/examples/media/noisy/ball.wav +0 -0
  250. {pyglet-2.1.dev7 → pyglet-2.1rc1}/examples/media/noisy/noisy.py +0 -0
  251. {pyglet-2.1.dev7 → pyglet-2.1rc1}/examples/media/soundspace/README +0 -0
  252. {pyglet-2.1.dev7 → pyglet-2.1rc1}/examples/media/soundspace/reader.py +0 -0
  253. {pyglet-2.1.dev7 → pyglet-2.1rc1}/examples/media/soundspace/res/bass.wav +0 -0
  254. {pyglet-2.1.dev7 → pyglet-2.1rc1}/examples/media/soundspace/res/drums.wav +0 -0
  255. {pyglet-2.1.dev7 → pyglet-2.1rc1}/examples/media/soundspace/res/guitar.wav +0 -0
  256. {pyglet-2.1.dev7 → pyglet-2.1rc1}/examples/media/soundspace/res/piano.wav +0 -0
  257. {pyglet-2.1.dev7 → pyglet-2.1rc1}/examples/media/soundspace/res/space.txt +0 -0
  258. {pyglet-2.1.dev7 → pyglet-2.1rc1}/examples/media/soundspace/soundspace.py +0 -0
  259. {pyglet-2.1.dev7 → pyglet-2.1rc1}/examples/media/synthesizer.py +0 -0
  260. {pyglet-2.1.dev7 → pyglet-2.1rc1}/examples/media/video.py +0 -0
  261. {pyglet-2.1.dev7 → pyglet-2.1rc1}/examples/model/box.mtl +0 -0
  262. {pyglet-2.1.dev7 → pyglet-2.1rc1}/examples/model/box.obj +0 -0
  263. {pyglet-2.1.dev7 → pyglet-2.1rc1}/examples/model/logo3d.mtl +0 -0
  264. {pyglet-2.1.dev7 → pyglet-2.1rc1}/examples/model/logo3d.obj +0 -0
  265. {pyglet-2.1.dev7 → pyglet-2.1rc1}/examples/model/pyglet.png +0 -0
  266. {pyglet-2.1.dev7 → pyglet-2.1rc1}/examples/opengl/compute_shader.py +0 -0
  267. {pyglet-2.1.dev7 → pyglet-2.1rc1}/examples/opengl/egl_context.py +0 -0
  268. {pyglet-2.1.dev7 → pyglet-2.1rc1}/examples/opengl/minimal_shader.py +0 -0
  269. {pyglet-2.1.dev7 → pyglet-2.1rc1}/examples/opengl/opengl_context.py +0 -0
  270. {pyglet-2.1.dev7 → pyglet-2.1rc1}/examples/opengl/opengl_core.py +0 -0
  271. {pyglet-2.1.dev7 → pyglet-2.1rc1}/examples/opengl/opengl_scissor.py +0 -0
  272. {pyglet-2.1.dev7 → pyglet-2.1rc1}/examples/opengl/pyglet.png +0 -0
  273. {pyglet-2.1.dev7 → pyglet-2.1rc1}/examples/opengl/torus.py +0 -0
  274. {pyglet-2.1.dev7 → pyglet-2.1rc1}/examples/programming_guide/animation.py +0 -0
  275. {pyglet-2.1.dev7 → pyglet-2.1rc1}/examples/programming_guide/dinosaur.gif +0 -0
  276. {pyglet-2.1.dev7 → pyglet-2.1rc1}/examples/programming_guide/events.py +0 -0
  277. {pyglet-2.1.dev7 → pyglet-2.1rc1}/examples/programming_guide/hello_world.py +0 -0
  278. {pyglet-2.1.dev7 → pyglet-2.1rc1}/examples/programming_guide/image_viewer.py +0 -0
  279. {pyglet-2.1.dev7 → pyglet-2.1rc1}/examples/programming_guide/kitten.jpg +0 -0
  280. {pyglet-2.1.dev7 → pyglet-2.1rc1}/examples/programming_guide/window_subclass.py +0 -0
  281. {pyglet-2.1.dev7 → pyglet-2.1rc1}/examples/resources/Brick1Blue.png +0 -0
  282. {pyglet-2.1.dev7 → pyglet-2.1rc1}/examples/resources/Brick1Crack3.png +0 -0
  283. {pyglet-2.1.dev7 → pyglet-2.1rc1}/examples/resources/Brick1Gray.png +0 -0
  284. {pyglet-2.1.dev7 → pyglet-2.1rc1}/examples/resources/kitten.jpg +0 -0
  285. {pyglet-2.1.dev7 → pyglet-2.1rc1}/examples/resources/pyglet.png +0 -0
  286. {pyglet-2.1.dev7 → pyglet-2.1rc1}/examples/shapes.py +0 -0
  287. {pyglet-2.1.dev7 → pyglet-2.1rc1}/examples/sprite/depth_sprite.py +0 -0
  288. {pyglet-2.1.dev7 → pyglet-2.1rc1}/examples/sprite/display_sprite.py +0 -0
  289. {pyglet-2.1.dev7 → pyglet-2.1rc1}/examples/sprite/multi_texture_sprite.py +0 -0
  290. {pyglet-2.1.dev7 → pyglet-2.1rc1}/examples/sprite/sprite_batching.py +0 -0
  291. {pyglet-2.1.dev7 → pyglet-2.1rc1}/examples/text/advanced_font.py +0 -0
  292. {pyglet-2.1.dev7 → pyglet-2.1rc1}/examples/text/html_label.py +0 -0
  293. {pyglet-2.1.dev7 → pyglet-2.1rc1}/examples/text/pyglet.png +0 -0
  294. {pyglet-2.1.dev7 → pyglet-2.1rc1}/examples/text/text_input.py +0 -0
  295. {pyglet-2.1.dev7 → pyglet-2.1rc1}/examples/timer.py +0 -0
  296. {pyglet-2.1.dev7 → pyglet-2.1rc1}/examples/window/camera.py +0 -0
  297. {pyglet-2.1.dev7 → pyglet-2.1rc1}/examples/window/camera_group.py +0 -0
  298. {pyglet-2.1.dev7 → pyglet-2.1rc1}/examples/window/fixed_resolution.py +0 -0
  299. {pyglet-2.1.dev7 → pyglet-2.1rc1}/examples/window/fps_change.py +0 -0
  300. {pyglet-2.1.dev7 → pyglet-2.1rc1}/examples/window/multiple_windows.py +0 -0
  301. {pyglet-2.1.dev7 → pyglet-2.1rc1}/examples/window/overlay_window.py +0 -0
  302. {pyglet-2.1.dev7 → pyglet-2.1rc1}/examples/window/transparent_window.py +0 -0
  303. {pyglet-2.1.dev7 → pyglet-2.1rc1}/experimental/dist_field/README +0 -0
  304. {pyglet-2.1.dev7 → pyglet-2.1rc1}/experimental/dist_field/genfield.py +0 -0
  305. {pyglet-2.1.dev7 → pyglet-2.1rc1}/experimental/dist_field/py.df.png +0 -0
  306. {pyglet-2.1.dev7 → pyglet-2.1rc1}/experimental/dist_field/py.png +0 -0
  307. {pyglet-2.1.dev7 → pyglet-2.1rc1}/experimental/dist_field/renderfield.py +0 -0
  308. {pyglet-2.1.dev7 → pyglet-2.1rc1}/experimental/flaccodec.py +0 -0
  309. {pyglet-2.1.dev7 → pyglet-2.1rc1}/experimental/hello_world.svg +0 -0
  310. {pyglet-2.1.dev7 → pyglet-2.1rc1}/experimental/instancing/sprite_instance.py +0 -0
  311. {pyglet-2.1.dev7 → pyglet-2.1rc1}/experimental/instancing/sprite_instance_object.py +0 -0
  312. {pyglet-2.1.dev7 → pyglet-2.1rc1}/experimental/multitexture_sprite/multitexturesprite.py +0 -0
  313. {pyglet-2.1.dev7 → pyglet-2.1rc1}/experimental/spritebenchmark.py +0 -0
  314. {pyglet-2.1.dev7 → pyglet-2.1rc1}/experimental/svg_test.py +0 -0
  315. {pyglet-2.1.dev7 → pyglet-2.1rc1}/experimental/wayland/gbm_egl_context.py +0 -0
  316. {pyglet-2.1.dev7 → pyglet-2.1rc1}/experimental/win32priority.py +0 -0
  317. {pyglet-2.1.dev7 → pyglet-2.1rc1}/make.py +0 -0
  318. {pyglet-2.1.dev7 → pyglet-2.1rc1}/py.typed +0 -0
  319. {pyglet-2.1.dev7 → pyglet-2.1rc1}/pyglet/app/__init__.py +0 -0
  320. {pyglet-2.1.dev7 → pyglet-2.1rc1}/pyglet/app/base.py +0 -0
  321. {pyglet-2.1.dev7 → pyglet-2.1rc1}/pyglet/app/cocoa.py +0 -0
  322. {pyglet-2.1.dev7 → pyglet-2.1rc1}/pyglet/app/win32.py +0 -0
  323. {pyglet-2.1.dev7 → pyglet-2.1rc1}/pyglet/app/xlib.py +0 -0
  324. {pyglet-2.1.dev7 → pyglet-2.1rc1}/pyglet/clock.py +0 -0
  325. {pyglet-2.1.dev7 → pyglet-2.1rc1}/pyglet/customtypes.py +0 -0
  326. {pyglet-2.1.dev7 → pyglet-2.1rc1}/pyglet/display/__init__.py +0 -0
  327. {pyglet-2.1.dev7 → pyglet-2.1rc1}/pyglet/display/__init__.pyi +0 -0
  328. {pyglet-2.1.dev7 → pyglet-2.1rc1}/pyglet/display/base.py +0 -0
  329. {pyglet-2.1.dev7 → pyglet-2.1rc1}/pyglet/display/cocoa.py +0 -0
  330. {pyglet-2.1.dev7 → pyglet-2.1rc1}/pyglet/display/headless.py +0 -0
  331. {pyglet-2.1.dev7 → pyglet-2.1rc1}/pyglet/display/win32.py +0 -0
  332. {pyglet-2.1.dev7 → pyglet-2.1rc1}/pyglet/display/xlib.py +0 -0
  333. {pyglet-2.1.dev7 → pyglet-2.1rc1}/pyglet/display/xlib_vidmoderestore.py +0 -0
  334. {pyglet-2.1.dev7 → pyglet-2.1rc1}/pyglet/event.py +0 -0
  335. {pyglet-2.1.dev7 → pyglet-2.1rc1}/pyglet/experimental/README.md +0 -0
  336. {pyglet-2.1.dev7 → pyglet-2.1rc1}/pyglet/experimental/geoshader_sprite.py +0 -0
  337. {pyglet-2.1.dev7 → pyglet-2.1rc1}/pyglet/experimental/hidraw.py +0 -0
  338. {pyglet-2.1.dev7 → pyglet-2.1rc1}/pyglet/experimental/multitexture_sprite.py +0 -0
  339. {pyglet-2.1.dev7 → pyglet-2.1rc1}/pyglet/experimental/net.py +0 -0
  340. {pyglet-2.1.dev7 → pyglet-2.1rc1}/pyglet/experimental/particles.py +0 -0
  341. {pyglet-2.1.dev7 → pyglet-2.1rc1}/pyglet/extlibs/__init__.py +0 -0
  342. {pyglet-2.1.dev7 → pyglet-2.1rc1}/pyglet/extlibs/earcut.py +0 -0
  343. {pyglet-2.1.dev7 → pyglet-2.1rc1}/pyglet/extlibs/png.py +0 -0
  344. {pyglet-2.1.dev7 → pyglet-2.1rc1}/pyglet/font/__init__.py +0 -0
  345. {pyglet-2.1.dev7 → pyglet-2.1rc1}/pyglet/font/base.py +0 -0
  346. {pyglet-2.1.dev7 → pyglet-2.1rc1}/pyglet/font/directwrite.py +0 -0
  347. {pyglet-2.1.dev7 → pyglet-2.1rc1}/pyglet/font/fontconfig.py +0 -0
  348. {pyglet-2.1.dev7 → pyglet-2.1rc1}/pyglet/font/freetype.py +0 -0
  349. {pyglet-2.1.dev7 → pyglet-2.1rc1}/pyglet/font/freetype_lib.py +0 -0
  350. {pyglet-2.1.dev7 → pyglet-2.1rc1}/pyglet/font/quartz.py +0 -0
  351. {pyglet-2.1.dev7 → pyglet-2.1rc1}/pyglet/font/ttf.py +0 -0
  352. {pyglet-2.1.dev7 → pyglet-2.1rc1}/pyglet/font/user.py +0 -0
  353. {pyglet-2.1.dev7 → pyglet-2.1rc1}/pyglet/font/win32.py +0 -0
  354. {pyglet-2.1.dev7 → pyglet-2.1rc1}/pyglet/gl/__init__.py +0 -0
  355. {pyglet-2.1.dev7 → pyglet-2.1rc1}/pyglet/gl/agl.py +0 -0
  356. {pyglet-2.1.dev7 → pyglet-2.1rc1}/pyglet/gl/cocoa.py +0 -0
  357. {pyglet-2.1.dev7 → pyglet-2.1rc1}/pyglet/gl/gl.py +0 -0
  358. {pyglet-2.1.dev7 → pyglet-2.1rc1}/pyglet/gl/gl_compat.py +0 -0
  359. {pyglet-2.1.dev7 → pyglet-2.1rc1}/pyglet/gl/gl_info.py +0 -0
  360. {pyglet-2.1.dev7 → pyglet-2.1rc1}/pyglet/gl/glx.py +0 -0
  361. {pyglet-2.1.dev7 → pyglet-2.1rc1}/pyglet/gl/glx_info.py +0 -0
  362. {pyglet-2.1.dev7 → pyglet-2.1rc1}/pyglet/gl/glxext_arb.py +0 -0
  363. {pyglet-2.1.dev7 → pyglet-2.1rc1}/pyglet/gl/glxext_mesa.py +0 -0
  364. {pyglet-2.1.dev7 → pyglet-2.1rc1}/pyglet/gl/glxext_nv.py +0 -0
  365. {pyglet-2.1.dev7 → pyglet-2.1rc1}/pyglet/gl/lib.py +0 -0
  366. {pyglet-2.1.dev7 → pyglet-2.1rc1}/pyglet/gl/lib_agl.py +0 -0
  367. {pyglet-2.1.dev7 → pyglet-2.1rc1}/pyglet/gl/lib_glx.py +0 -0
  368. {pyglet-2.1.dev7 → pyglet-2.1rc1}/pyglet/gl/lib_wgl.py +0 -0
  369. {pyglet-2.1.dev7 → pyglet-2.1rc1}/pyglet/gl/wgl.py +0 -0
  370. {pyglet-2.1.dev7 → pyglet-2.1rc1}/pyglet/gl/wgl_info.py +0 -0
  371. {pyglet-2.1.dev7 → pyglet-2.1rc1}/pyglet/gl/wglext_arb.py +0 -0
  372. {pyglet-2.1.dev7 → pyglet-2.1rc1}/pyglet/gl/wglext_nv.py +0 -0
  373. {pyglet-2.1.dev7 → pyglet-2.1rc1}/pyglet/gl/win32.py +0 -0
  374. {pyglet-2.1.dev7 → pyglet-2.1rc1}/pyglet/gl/xlib.py +0 -0
  375. {pyglet-2.1.dev7 → pyglet-2.1rc1}/pyglet/graphics/__init__.py +0 -0
  376. {pyglet-2.1.dev7 → pyglet-2.1rc1}/pyglet/graphics/allocation.py +0 -0
  377. {pyglet-2.1.dev7 → pyglet-2.1rc1}/pyglet/graphics/instance.py +0 -0
  378. {pyglet-2.1.dev7 → pyglet-2.1rc1}/pyglet/graphics/vertexarray.py +0 -0
  379. {pyglet-2.1.dev7 → pyglet-2.1rc1}/pyglet/graphics/vertexbuffer.py +0 -0
  380. {pyglet-2.1.dev7 → pyglet-2.1rc1}/pyglet/gui/__init__.py +0 -0
  381. {pyglet-2.1.dev7 → pyglet-2.1rc1}/pyglet/gui/frame.py +0 -0
  382. {pyglet-2.1.dev7 → pyglet-2.1rc1}/pyglet/gui/ninepatch.py +0 -0
  383. {pyglet-2.1.dev7 → pyglet-2.1rc1}/pyglet/gui/widgets.py +0 -0
  384. {pyglet-2.1.dev7 → pyglet-2.1rc1}/pyglet/image/__init__.py +0 -0
  385. {pyglet-2.1.dev7 → pyglet-2.1rc1}/pyglet/image/animation.py +0 -0
  386. {pyglet-2.1.dev7 → pyglet-2.1rc1}/pyglet/image/atlas.py +0 -0
  387. {pyglet-2.1.dev7 → pyglet-2.1rc1}/pyglet/image/buffer.py +0 -0
  388. {pyglet-2.1.dev7 → pyglet-2.1rc1}/pyglet/image/codecs/__init__.py +0 -0
  389. {pyglet-2.1.dev7 → pyglet-2.1rc1}/pyglet/image/codecs/bmp.py +0 -0
  390. {pyglet-2.1.dev7 → pyglet-2.1rc1}/pyglet/image/codecs/dds.py +0 -0
  391. {pyglet-2.1.dev7 → pyglet-2.1rc1}/pyglet/image/codecs/gdiplus.py +0 -0
  392. {pyglet-2.1.dev7 → pyglet-2.1rc1}/pyglet/image/codecs/gdkpixbuf2.py +0 -0
  393. {pyglet-2.1.dev7 → pyglet-2.1rc1}/pyglet/image/codecs/gif.py +0 -0
  394. {pyglet-2.1.dev7 → pyglet-2.1rc1}/pyglet/image/codecs/pil.py +0 -0
  395. {pyglet-2.1.dev7 → pyglet-2.1rc1}/pyglet/image/codecs/png.py +0 -0
  396. {pyglet-2.1.dev7 → pyglet-2.1rc1}/pyglet/image/codecs/quartz.py +0 -0
  397. {pyglet-2.1.dev7 → pyglet-2.1rc1}/pyglet/image/codecs/s3tc.py +0 -0
  398. {pyglet-2.1.dev7 → pyglet-2.1rc1}/pyglet/image/codecs/wic.py +0 -0
  399. {pyglet-2.1.dev7 → pyglet-2.1rc1}/pyglet/info.py +0 -0
  400. {pyglet-2.1.dev7 → pyglet-2.1rc1}/pyglet/input/__init__.py +0 -0
  401. {pyglet-2.1.dev7 → pyglet-2.1rc1}/pyglet/input/base.py +0 -0
  402. {pyglet-2.1.dev7 → pyglet-2.1rc1}/pyglet/input/controller.py +0 -0
  403. {pyglet-2.1.dev7 → pyglet-2.1rc1}/pyglet/input/controller_db.py +0 -0
  404. {pyglet-2.1.dev7 → pyglet-2.1rc1}/pyglet/input/linux/__init__.py +0 -0
  405. {pyglet-2.1.dev7 → pyglet-2.1rc1}/pyglet/input/linux/evdev.py +0 -0
  406. {pyglet-2.1.dev7 → pyglet-2.1rc1}/pyglet/input/linux/evdev_constants.py +0 -0
  407. {pyglet-2.1.dev7 → pyglet-2.1rc1}/pyglet/input/linux/x11_xinput.py +0 -0
  408. {pyglet-2.1.dev7 → pyglet-2.1rc1}/pyglet/input/linux/x11_xinput_tablet.py +0 -0
  409. {pyglet-2.1.dev7 → pyglet-2.1rc1}/pyglet/input/macos/__init__.py +0 -0
  410. {pyglet-2.1.dev7 → pyglet-2.1rc1}/pyglet/input/macos/darwin_hid.py +0 -0
  411. {pyglet-2.1.dev7 → pyglet-2.1rc1}/pyglet/input/win32/__init__.py +0 -0
  412. {pyglet-2.1.dev7 → pyglet-2.1rc1}/pyglet/input/win32/directinput.py +0 -0
  413. {pyglet-2.1.dev7 → pyglet-2.1rc1}/pyglet/input/win32/wintab.py +0 -0
  414. {pyglet-2.1.dev7 → pyglet-2.1rc1}/pyglet/input/win32/xinput.py +0 -0
  415. {pyglet-2.1.dev7 → pyglet-2.1rc1}/pyglet/lib.py +0 -0
  416. {pyglet-2.1.dev7 → pyglet-2.1rc1}/pyglet/libs/__init__.py +0 -0
  417. {pyglet-2.1.dev7 → pyglet-2.1rc1}/pyglet/libs/darwin/__init__.py +0 -0
  418. {pyglet-2.1.dev7 → pyglet-2.1rc1}/pyglet/libs/darwin/cocoapy/__init__.py +0 -0
  419. {pyglet-2.1.dev7 → pyglet-2.1rc1}/pyglet/libs/darwin/cocoapy/cocoalibs.py +0 -0
  420. {pyglet-2.1.dev7 → pyglet-2.1rc1}/pyglet/libs/darwin/cocoapy/cocoatypes.py +0 -0
  421. {pyglet-2.1.dev7 → pyglet-2.1rc1}/pyglet/libs/darwin/cocoapy/runtime.py +0 -0
  422. {pyglet-2.1.dev7 → pyglet-2.1rc1}/pyglet/libs/darwin/coreaudio.py +0 -0
  423. {pyglet-2.1.dev7 → pyglet-2.1rc1}/pyglet/libs/darwin/quartzkey.py +0 -0
  424. {pyglet-2.1.dev7 → pyglet-2.1rc1}/pyglet/libs/egl/__init__.py +0 -0
  425. {pyglet-2.1.dev7 → pyglet-2.1rc1}/pyglet/libs/egl/egl.py +0 -0
  426. {pyglet-2.1.dev7 → pyglet-2.1rc1}/pyglet/libs/egl/eglext.py +0 -0
  427. {pyglet-2.1.dev7 → pyglet-2.1rc1}/pyglet/libs/egl/lib.py +0 -0
  428. {pyglet-2.1.dev7 → pyglet-2.1rc1}/pyglet/libs/ioctl.py +0 -0
  429. {pyglet-2.1.dev7 → pyglet-2.1rc1}/pyglet/libs/wayland/__init__.py +0 -0
  430. {pyglet-2.1.dev7 → pyglet-2.1rc1}/pyglet/libs/wayland/gbm.py +0 -0
  431. {pyglet-2.1.dev7 → pyglet-2.1rc1}/pyglet/libs/wayland/xkbcommon.py +0 -0
  432. {pyglet-2.1.dev7 → pyglet-2.1rc1}/pyglet/libs/win32/__init__.py +0 -0
  433. {pyglet-2.1.dev7 → pyglet-2.1rc1}/pyglet/libs/win32/com.py +0 -0
  434. {pyglet-2.1.dev7 → pyglet-2.1rc1}/pyglet/libs/win32/constants.py +0 -0
  435. {pyglet-2.1.dev7 → pyglet-2.1rc1}/pyglet/libs/win32/context_managers.py +0 -0
  436. {pyglet-2.1.dev7 → pyglet-2.1rc1}/pyglet/libs/win32/dinput.py +0 -0
  437. {pyglet-2.1.dev7 → pyglet-2.1rc1}/pyglet/libs/win32/libwintab.py +0 -0
  438. {pyglet-2.1.dev7 → pyglet-2.1rc1}/pyglet/libs/win32/types.py +0 -0
  439. {pyglet-2.1.dev7 → pyglet-2.1rc1}/pyglet/libs/win32/winkey.py +0 -0
  440. {pyglet-2.1.dev7 → pyglet-2.1rc1}/pyglet/libs/x11/__init__.py +0 -0
  441. {pyglet-2.1.dev7 → pyglet-2.1rc1}/pyglet/libs/x11/cursorfont.py +0 -0
  442. {pyglet-2.1.dev7 → pyglet-2.1rc1}/pyglet/libs/x11/xf86vmode.py +0 -0
  443. {pyglet-2.1.dev7 → pyglet-2.1rc1}/pyglet/libs/x11/xinerama.py +0 -0
  444. {pyglet-2.1.dev7 → pyglet-2.1rc1}/pyglet/libs/x11/xinput.py +0 -0
  445. {pyglet-2.1.dev7 → pyglet-2.1rc1}/pyglet/libs/x11/xlib.py +0 -0
  446. {pyglet-2.1.dev7 → pyglet-2.1rc1}/pyglet/libs/x11/xsync.py +0 -0
  447. {pyglet-2.1.dev7 → pyglet-2.1rc1}/pyglet/math.py +0 -0
  448. {pyglet-2.1.dev7 → pyglet-2.1rc1}/pyglet/media/__init__.py +0 -0
  449. {pyglet-2.1.dev7 → pyglet-2.1rc1}/pyglet/media/buffered_logger.py +0 -0
  450. {pyglet-2.1.dev7 → pyglet-2.1rc1}/pyglet/media/codecs/__init__.py +0 -0
  451. {pyglet-2.1.dev7 → pyglet-2.1rc1}/pyglet/media/codecs/base.py +0 -0
  452. {pyglet-2.1.dev7 → pyglet-2.1rc1}/pyglet/media/codecs/coreaudio.py +0 -0
  453. {pyglet-2.1.dev7 → pyglet-2.1rc1}/pyglet/media/codecs/ffmpeg.py +0 -0
  454. {pyglet-2.1.dev7 → pyglet-2.1rc1}/pyglet/media/codecs/ffmpeg_lib/__init__.py +0 -0
  455. {pyglet-2.1.dev7 → pyglet-2.1rc1}/pyglet/media/codecs/ffmpeg_lib/compat.py +0 -0
  456. {pyglet-2.1.dev7 → pyglet-2.1rc1}/pyglet/media/codecs/ffmpeg_lib/libavcodec.py +0 -0
  457. {pyglet-2.1.dev7 → pyglet-2.1rc1}/pyglet/media/codecs/ffmpeg_lib/libavformat.py +0 -0
  458. {pyglet-2.1.dev7 → pyglet-2.1rc1}/pyglet/media/codecs/ffmpeg_lib/libavutil.py +0 -0
  459. {pyglet-2.1.dev7 → pyglet-2.1rc1}/pyglet/media/codecs/ffmpeg_lib/libswresample.py +0 -0
  460. {pyglet-2.1.dev7 → pyglet-2.1rc1}/pyglet/media/codecs/ffmpeg_lib/libswscale.py +0 -0
  461. {pyglet-2.1.dev7 → pyglet-2.1rc1}/pyglet/media/codecs/gstreamer.py +0 -0
  462. {pyglet-2.1.dev7 → pyglet-2.1rc1}/pyglet/media/codecs/pyogg.py +0 -0
  463. {pyglet-2.1.dev7 → pyglet-2.1rc1}/pyglet/media/codecs/wave.py +0 -0
  464. {pyglet-2.1.dev7 → pyglet-2.1rc1}/pyglet/media/codecs/wmf.py +0 -0
  465. {pyglet-2.1.dev7 → pyglet-2.1rc1}/pyglet/media/devices/__init__.py +0 -0
  466. {pyglet-2.1.dev7 → pyglet-2.1rc1}/pyglet/media/devices/base.py +0 -0
  467. {pyglet-2.1.dev7 → pyglet-2.1rc1}/pyglet/media/devices/win32.py +0 -0
  468. {pyglet-2.1.dev7 → pyglet-2.1rc1}/pyglet/media/drivers/__init__.py +0 -0
  469. {pyglet-2.1.dev7 → pyglet-2.1rc1}/pyglet/media/drivers/base.py +0 -0
  470. {pyglet-2.1.dev7 → pyglet-2.1rc1}/pyglet/media/drivers/directsound/__init__.py +0 -0
  471. {pyglet-2.1.dev7 → pyglet-2.1rc1}/pyglet/media/drivers/directsound/adaptation.py +0 -0
  472. {pyglet-2.1.dev7 → pyglet-2.1rc1}/pyglet/media/drivers/directsound/exceptions.py +0 -0
  473. {pyglet-2.1.dev7 → pyglet-2.1rc1}/pyglet/media/drivers/directsound/interface.py +0 -0
  474. {pyglet-2.1.dev7 → pyglet-2.1rc1}/pyglet/media/drivers/directsound/lib_dsound.py +0 -0
  475. {pyglet-2.1.dev7 → pyglet-2.1rc1}/pyglet/media/drivers/listener.py +0 -0
  476. {pyglet-2.1.dev7 → pyglet-2.1rc1}/pyglet/media/drivers/openal/__init__.py +0 -0
  477. {pyglet-2.1.dev7 → pyglet-2.1rc1}/pyglet/media/drivers/openal/adaptation.py +0 -0
  478. {pyglet-2.1.dev7 → pyglet-2.1rc1}/pyglet/media/drivers/openal/interface.py +0 -0
  479. {pyglet-2.1.dev7 → pyglet-2.1rc1}/pyglet/media/drivers/openal/lib_alc.py +0 -0
  480. {pyglet-2.1.dev7 → pyglet-2.1rc1}/pyglet/media/drivers/openal/lib_openal.py +0 -0
  481. {pyglet-2.1.dev7 → pyglet-2.1rc1}/pyglet/media/drivers/pulse/__init__.py +0 -0
  482. {pyglet-2.1.dev7 → pyglet-2.1rc1}/pyglet/media/drivers/pulse/adaptation.py +0 -0
  483. {pyglet-2.1.dev7 → pyglet-2.1rc1}/pyglet/media/drivers/pulse/interface.py +0 -0
  484. {pyglet-2.1.dev7 → pyglet-2.1rc1}/pyglet/media/drivers/pulse/lib_pulseaudio.py +0 -0
  485. {pyglet-2.1.dev7 → pyglet-2.1rc1}/pyglet/media/drivers/silent/__init__.py +0 -0
  486. {pyglet-2.1.dev7 → pyglet-2.1rc1}/pyglet/media/drivers/silent/adaptation.py +0 -0
  487. {pyglet-2.1.dev7 → pyglet-2.1rc1}/pyglet/media/drivers/xaudio2/__init__.py +0 -0
  488. {pyglet-2.1.dev7 → pyglet-2.1rc1}/pyglet/media/drivers/xaudio2/adaptation.py +0 -0
  489. {pyglet-2.1.dev7 → pyglet-2.1rc1}/pyglet/media/drivers/xaudio2/interface.py +0 -0
  490. {pyglet-2.1.dev7 → pyglet-2.1rc1}/pyglet/media/drivers/xaudio2/lib_xaudio2.py +0 -0
  491. {pyglet-2.1.dev7 → pyglet-2.1rc1}/pyglet/media/exceptions.py +0 -0
  492. {pyglet-2.1.dev7 → pyglet-2.1rc1}/pyglet/media/instrumentation.py +0 -0
  493. {pyglet-2.1.dev7 → pyglet-2.1rc1}/pyglet/media/player.py +0 -0
  494. {pyglet-2.1.dev7 → pyglet-2.1rc1}/pyglet/media/player_worker_thread.py +0 -0
  495. {pyglet-2.1.dev7 → pyglet-2.1rc1}/pyglet/media/synthesis.py +0 -0
  496. {pyglet-2.1.dev7 → pyglet-2.1rc1}/pyglet/shapes.py +0 -0
  497. {pyglet-2.1.dev7 → pyglet-2.1rc1}/pyglet/sprite.py +0 -0
  498. {pyglet-2.1.dev7 → pyglet-2.1rc1}/pyglet/text/__init__.py +0 -0
  499. {pyglet-2.1.dev7 → pyglet-2.1rc1}/pyglet/text/caret.py +0 -0
  500. {pyglet-2.1.dev7 → pyglet-2.1rc1}/pyglet/text/document.py +0 -0
  501. {pyglet-2.1.dev7 → pyglet-2.1rc1}/pyglet/text/formats/__init__.py +0 -0
  502. {pyglet-2.1.dev7 → pyglet-2.1rc1}/pyglet/text/formats/attributed.py +0 -0
  503. {pyglet-2.1.dev7 → pyglet-2.1rc1}/pyglet/text/formats/html.py +0 -0
  504. {pyglet-2.1.dev7 → pyglet-2.1rc1}/pyglet/text/formats/plaintext.py +0 -0
  505. {pyglet-2.1.dev7 → pyglet-2.1rc1}/pyglet/text/formats/structured.py +0 -0
  506. {pyglet-2.1.dev7 → pyglet-2.1rc1}/pyglet/text/layout/__init__.py +0 -0
  507. {pyglet-2.1.dev7 → pyglet-2.1rc1}/pyglet/text/layout/base.py +0 -0
  508. {pyglet-2.1.dev7 → pyglet-2.1rc1}/pyglet/text/layout/incremental.py +0 -0
  509. {pyglet-2.1.dev7 → pyglet-2.1rc1}/pyglet/text/layout/scrolling.py +0 -0
  510. {pyglet-2.1.dev7 → pyglet-2.1rc1}/pyglet/text/runlist.py +0 -0
  511. {pyglet-2.1.dev7 → pyglet-2.1rc1}/pyglet/util.py +0 -0
  512. {pyglet-2.1.dev7 → pyglet-2.1rc1}/pyglet/window/cocoa/pyglet_delegate.py +0 -0
  513. {pyglet-2.1.dev7 → pyglet-2.1rc1}/pyglet/window/cocoa/pyglet_textview.py +0 -0
  514. {pyglet-2.1.dev7 → pyglet-2.1rc1}/pyglet/window/cocoa/pyglet_view.py +0 -0
  515. {pyglet-2.1.dev7 → pyglet-2.1rc1}/pyglet/window/cocoa/pyglet_window.py +0 -0
  516. {pyglet-2.1.dev7 → pyglet-2.1rc1}/pyglet/window/cocoa/systemcursor.py +0 -0
  517. {pyglet-2.1.dev7 → pyglet-2.1rc1}/pyglet/window/event.py +0 -0
  518. {pyglet-2.1.dev7 → pyglet-2.1rc1}/pyglet/window/headless/__init__.py +0 -0
  519. {pyglet-2.1.dev7 → pyglet-2.1rc1}/pyglet/window/key.py +0 -0
  520. {pyglet-2.1.dev7 → pyglet-2.1rc1}/pyglet/window/mouse.py +0 -0
  521. {pyglet-2.1.dev7 → pyglet-2.1rc1}/pyproject.toml +0 -0
  522. {pyglet-2.1.dev7 → pyglet-2.1rc1}/pytest.ini +0 -0
  523. {pyglet-2.1.dev7 → pyglet-2.1rc1}/setup.py +0 -0
  524. {pyglet-2.1.dev7 → pyglet-2.1rc1}/tests/__init__.py +0 -0
  525. {pyglet-2.1.dev7 → pyglet-2.1rc1}/tests/annotations.py +0 -0
  526. {pyglet-2.1.dev7 → pyglet-2.1rc1}/tests/base/__init__.py +0 -0
  527. {pyglet-2.1.dev7 → pyglet-2.1rc1}/tests/base/data.py +0 -0
  528. {pyglet-2.1.dev7 → pyglet-2.1rc1}/tests/base/event_loop.py +0 -0
  529. {pyglet-2.1.dev7 → pyglet-2.1rc1}/tests/base/interactive.py +0 -0
  530. {pyglet-2.1.dev7 → pyglet-2.1rc1}/tests/base/performance.py +0 -0
  531. {pyglet-2.1.dev7 → pyglet-2.1rc1}/tests/conftest.py +0 -0
  532. {pyglet-2.1.dev7 → pyglet-2.1rc1}/tests/data/fonts/README +0 -0
  533. {pyglet-2.1.dev7 → pyglet-2.1rc1}/tests/data/fonts/action_man.ttf +0 -0
  534. {pyglet-2.1.dev7 → pyglet-2.1rc1}/tests/data/fonts/action_man_bold.ttf +0 -0
  535. {pyglet-2.1.dev7 → pyglet-2.1rc1}/tests/data/fonts/action_man_bold_italic.ttf +0 -0
  536. {pyglet-2.1.dev7 → pyglet-2.1rc1}/tests/data/fonts/action_man_italic.ttf +0 -0
  537. {pyglet-2.1.dev7 → pyglet-2.1rc1}/tests/data/fonts/courR12-ISO8859-1.pcf +0 -0
  538. {pyglet-2.1.dev7 → pyglet-2.1rc1}/tests/data/images/8bpp.gif +0 -0
  539. {pyglet-2.1.dev7 → pyglet-2.1rc1}/tests/data/images/cursor.png +0 -0
  540. {pyglet-2.1.dev7 → pyglet-2.1rc1}/tests/data/images/dinosaur.gif +0 -0
  541. {pyglet-2.1.dev7 → pyglet-2.1rc1}/tests/data/images/gdk_close.png +0 -0
  542. {pyglet-2.1.dev7 → pyglet-2.1rc1}/tests/data/images/grey_background.png +0 -0
  543. {pyglet-2.1.dev7 → pyglet-2.1rc1}/tests/data/images/icon1.png +0 -0
  544. {pyglet-2.1.dev7 → pyglet-2.1rc1}/tests/data/images/icon_size1.png +0 -0
  545. {pyglet-2.1.dev7 → pyglet-2.1rc1}/tests/data/images/icon_size2.png +0 -0
  546. {pyglet-2.1.dev7 → pyglet-2.1rc1}/tests/data/images/icon_size3.png +0 -0
  547. {pyglet-2.1.dev7 → pyglet-2.1rc1}/tests/data/images/icon_size4.png +0 -0
  548. {pyglet-2.1.dev7 → pyglet-2.1rc1}/tests/data/images/icon_size5.png +0 -0
  549. {pyglet-2.1.dev7 → pyglet-2.1rc1}/tests/data/images/l.png +0 -0
  550. {pyglet-2.1.dev7 → pyglet-2.1rc1}/tests/data/images/la.png +0 -0
  551. {pyglet-2.1.dev7 → pyglet-2.1rc1}/tests/data/images/multitexture.png +0 -0
  552. {pyglet-2.1.dev7 → pyglet-2.1rc1}/tests/data/images/rgb.png +0 -0
  553. {pyglet-2.1.dev7 → pyglet-2.1rc1}/tests/data/images/rgb_16bpp.bmp +0 -0
  554. {pyglet-2.1.dev7 → pyglet-2.1rc1}/tests/data/images/rgb_1bpp.bmp +0 -0
  555. {pyglet-2.1.dev7 → pyglet-2.1rc1}/tests/data/images/rgb_24bpp.bmp +0 -0
  556. {pyglet-2.1.dev7 → pyglet-2.1rc1}/tests/data/images/rgb_32bpp.bmp +0 -0
  557. {pyglet-2.1.dev7 → pyglet-2.1rc1}/tests/data/images/rgb_4bpp.bmp +0 -0
  558. {pyglet-2.1.dev7 → pyglet-2.1rc1}/tests/data/images/rgb_8bpp.bmp +0 -0
  559. {pyglet-2.1.dev7 → pyglet-2.1rc1}/tests/data/images/rgb_8bpp.png +0 -0
  560. {pyglet-2.1.dev7 → pyglet-2.1rc1}/tests/data/images/rgb_8bpp_trans.png +0 -0
  561. {pyglet-2.1.dev7 → pyglet-2.1rc1}/tests/data/images/rgb_dxt1.dds +0 -0
  562. {pyglet-2.1.dev7 → pyglet-2.1rc1}/tests/data/images/rgba.png +0 -0
  563. {pyglet-2.1.dev7 → pyglet-2.1rc1}/tests/data/images/rgba_32bpp.bmp +0 -0
  564. {pyglet-2.1.dev7 → pyglet-2.1rc1}/tests/data/images/rgba_dxt1.dds +0 -0
  565. {pyglet-2.1.dev7 → pyglet-2.1rc1}/tests/data/images/rgba_dxt3.dds +0 -0
  566. {pyglet-2.1.dev7 → pyglet-2.1rc1}/tests/data/images/rgba_dxt5.dds +0 -0
  567. {pyglet-2.1.dev7 → pyglet-2.1rc1}/tests/data/images/tests.interactive.test_interactive_test_base._Test.test_1.001.png +0 -0
  568. {pyglet-2.1.dev7 → pyglet-2.1rc1}/tests/data/media/README +0 -0
  569. {pyglet-2.1.dev7 → pyglet-2.1rc1}/tests/data/media/alert.wav +0 -0
  570. {pyglet-2.1.dev7 → pyglet-2.1rc1}/tests/data/media/login.wav +0 -0
  571. {pyglet-2.1.dev7 → pyglet-2.1rc1}/tests/data/media/logout.wav +0 -0
  572. {pyglet-2.1.dev7 → pyglet-2.1rc1}/tests/data/media/receive.wav +0 -0
  573. {pyglet-2.1.dev7 → pyglet-2.1rc1}/tests/data/media/send.wav +0 -0
  574. {pyglet-2.1.dev7 → pyglet-2.1rc1}/tests/data/media/synthesis_sawtooth_16_11025_1ch.wav +0 -0
  575. {pyglet-2.1.dev7 → pyglet-2.1rc1}/tests/data/media/synthesis_sawtooth_16_44800_1ch.wav +0 -0
  576. {pyglet-2.1.dev7 → pyglet-2.1rc1}/tests/data/media/synthesis_silence_16_11025_1ch.wav +0 -0
  577. {pyglet-2.1.dev7 → pyglet-2.1rc1}/tests/data/media/synthesis_silence_16_44800_1ch.wav +0 -0
  578. {pyglet-2.1.dev7 → pyglet-2.1rc1}/tests/data/media/synthesis_simplefm_16_11025_1ch.wav +0 -0
  579. {pyglet-2.1.dev7 → pyglet-2.1rc1}/tests/data/media/synthesis_simplefm_16_44800_1ch.wav +0 -0
  580. {pyglet-2.1.dev7 → pyglet-2.1rc1}/tests/data/media/synthesis_sine_16_11025_1ch.wav +0 -0
  581. {pyglet-2.1.dev7 → pyglet-2.1rc1}/tests/data/media/synthesis_sine_16_44800_1ch.wav +0 -0
  582. {pyglet-2.1.dev7 → pyglet-2.1rc1}/tests/data/media/synthesis_square_16_11025_1ch.wav +0 -0
  583. {pyglet-2.1.dev7 → pyglet-2.1rc1}/tests/data/media/synthesis_square_16_44800_1ch.wav +0 -0
  584. {pyglet-2.1.dev7 → pyglet-2.1rc1}/tests/data/media/synthesis_triangle_16_11025_1ch.wav +0 -0
  585. {pyglet-2.1.dev7 → pyglet-2.1rc1}/tests/data/media/synthesis_triangle_16_44800_1ch.wav +0 -0
  586. {pyglet-2.1.dev7 → pyglet-2.1rc1}/tests/data/models/logo3d.mtl +0 -0
  587. {pyglet-2.1.dev7 → pyglet-2.1rc1}/tests/data/models/logo3d.obj +0 -0
  588. {pyglet-2.1.dev7 → pyglet-2.1rc1}/tests/integration/__init__.py +0 -0
  589. {pyglet-2.1.dev7 → pyglet-2.1rc1}/tests/integration/app/__init__.py +0 -0
  590. {pyglet-2.1.dev7 → pyglet-2.1rc1}/tests/integration/app/test_eventloop.py +0 -0
  591. {pyglet-2.1.dev7 → pyglet-2.1rc1}/tests/integration/conftest.py +0 -0
  592. {pyglet-2.1.dev7 → pyglet-2.1rc1}/tests/integration/font/test_fontconfig.py +0 -0
  593. {pyglet-2.1.dev7 → pyglet-2.1rc1}/tests/integration/font/test_freetype_face.py +0 -0
  594. {pyglet-2.1.dev7 → pyglet-2.1rc1}/tests/integration/graphics/__init__.py +0 -0
  595. {pyglet-2.1.dev7 → pyglet-2.1rc1}/tests/integration/graphics/test_allocation.py +0 -0
  596. {pyglet-2.1.dev7 → pyglet-2.1rc1}/tests/integration/graphics/test_batch_migration.py +0 -0
  597. {pyglet-2.1.dev7 → pyglet-2.1rc1}/tests/integration/graphics/test_shaders.py +0 -0
  598. {pyglet-2.1.dev7 → pyglet-2.1rc1}/tests/integration/image/__init__.py +0 -0
  599. {pyglet-2.1.dev7 → pyglet-2.1rc1}/tests/integration/image/test_gdkpixbuf2.py +0 -0
  600. {pyglet-2.1.dev7 → pyglet-2.1rc1}/tests/integration/image/test_imagegrid.py +0 -0
  601. {pyglet-2.1.dev7 → pyglet-2.1rc1}/tests/integration/image/test_texture3d.py +0 -0
  602. {pyglet-2.1.dev7 → pyglet-2.1rc1}/tests/integration/media/__init__.py +0 -0
  603. {pyglet-2.1.dev7 → pyglet-2.1rc1}/tests/integration/media/mock_player.py +0 -0
  604. {pyglet-2.1.dev7 → pyglet-2.1rc1}/tests/integration/media/test_directsound.py +0 -0
  605. {pyglet-2.1.dev7 → pyglet-2.1rc1}/tests/integration/media/test_driver.py +0 -0
  606. {pyglet-2.1.dev7 → pyglet-2.1rc1}/tests/integration/media/test_openal.py +0 -0
  607. {pyglet-2.1.dev7 → pyglet-2.1rc1}/tests/integration/media/test_player.py +0 -0
  608. {pyglet-2.1.dev7 → pyglet-2.1rc1}/tests/integration/media/test_pulse.py +0 -0
  609. {pyglet-2.1.dev7 → pyglet-2.1rc1}/tests/integration/model/__init__.py +0 -0
  610. {pyglet-2.1.dev7 → pyglet-2.1rc1}/tests/integration/platform/__init__.py +0 -0
  611. {pyglet-2.1.dev7 → pyglet-2.1rc1}/tests/integration/platform/test_win_context_managers.py +0 -0
  612. {pyglet-2.1.dev7 → pyglet-2.1rc1}/tests/integration/platform/test_win_multicore_clock.py +0 -0
  613. {pyglet-2.1.dev7 → pyglet-2.1rc1}/tests/integration/resource/__init__.py +0 -0
  614. {pyglet-2.1.dev7 → pyglet-2.1rc1}/tests/integration/resource/dir1/dir1/f3.txt +0 -0
  615. {pyglet-2.1.dev7 → pyglet-2.1rc1}/tests/integration/resource/dir1/f2.txt +0 -0
  616. {pyglet-2.1.dev7 → pyglet-2.1rc1}/tests/integration/resource/dir1/res.zip +0 -0
  617. {pyglet-2.1.dev7 → pyglet-2.1rc1}/tests/integration/resource/dir2/f6.txt +0 -0
  618. {pyglet-2.1.dev7 → pyglet-2.1rc1}/tests/integration/resource/f1.txt +0 -0
  619. {pyglet-2.1.dev7 → pyglet-2.1rc1}/tests/integration/resource/rgbm.png +0 -0
  620. {pyglet-2.1.dev7 → pyglet-2.1rc1}/tests/integration/resource/test_resource_image_loading.py +0 -0
  621. {pyglet-2.1.dev7 → pyglet-2.1rc1}/tests/integration/resource/test_resource_loading.py +0 -0
  622. {pyglet-2.1.dev7 → pyglet-2.1rc1}/tests/integration/test_integrations.py +0 -0
  623. {pyglet-2.1.dev7 → pyglet-2.1rc1}/tests/integration/text/__init__.py +0 -0
  624. {pyglet-2.1.dev7 → pyglet-2.1rc1}/tests/integration/text/test_empty_document.py +0 -0
  625. {pyglet-2.1.dev7 → pyglet-2.1rc1}/tests/integration/text/test_label_creation.py +0 -0
  626. {pyglet-2.1.dev7 → pyglet-2.1rc1}/tests/integration/text/test_layout_creation.py +0 -0
  627. {pyglet-2.1.dev7 → pyglet-2.1rc1}/tests/integration/window/__init__.py +0 -0
  628. {pyglet-2.1.dev7 → pyglet-2.1rc1}/tests/integration/window/test_context_share.py +0 -0
  629. {pyglet-2.1.dev7 → pyglet-2.1rc1}/tests/integration/window/test_event_sequence.py +0 -0
  630. {pyglet-2.1.dev7 → pyglet-2.1rc1}/tests/integration/window/test_window_caption.py +0 -0
  631. {pyglet-2.1.dev7 → pyglet-2.1rc1}/tests/interactive/__init__.py +0 -0
  632. {pyglet-2.1.dev7 → pyglet-2.1rc1}/tests/interactive/conftest.py +0 -0
  633. {pyglet-2.1.dev7 → pyglet-2.1rc1}/tests/interactive/image/__init__.py +0 -0
  634. {pyglet-2.1.dev7 → pyglet-2.1rc1}/tests/interactive/image/test_image.py +0 -0
  635. {pyglet-2.1.dev7 → pyglet-2.1rc1}/tests/interactive/media/__init__.py +0 -0
  636. {pyglet-2.1.dev7 → pyglet-2.1rc1}/tests/interactive/media/test_player.py +0 -0
  637. {pyglet-2.1.dev7 → pyglet-2.1rc1}/tests/interactive/screenshots/committed/README +0 -0
  638. {pyglet-2.1.dev7 → pyglet-2.1rc1}/tests/interactive/screenshots/session/README +0 -0
  639. {pyglet-2.1.dev7 → pyglet-2.1rc1}/tests/interactive/shapes/test_shapes.py +0 -0
  640. {pyglet-2.1.dev7 → pyglet-2.1rc1}/tests/interactive/test_interactive_test_base.py +0 -0
  641. {pyglet-2.1.dev7 → pyglet-2.1rc1}/tests/interactive/text/__init__.py +0 -0
  642. {pyglet-2.1.dev7 → pyglet-2.1rc1}/tests/interactive/text/test_caret_color.py +0 -0
  643. {pyglet-2.1.dev7 → pyglet-2.1rc1}/tests/interactive/text/test_content_valign.py +0 -0
  644. {pyglet-2.1.dev7 → pyglet-2.1rc1}/tests/interactive/text/test_html.py +0 -0
  645. {pyglet-2.1.dev7 → pyglet-2.1rc1}/tests/interactive/text/test_inline_elements.py +0 -0
  646. {pyglet-2.1.dev7 → pyglet-2.1rc1}/tests/interactive/text/test_inline_elements_style_change.py +0 -0
  647. {pyglet-2.1.dev7 → pyglet-2.1rc1}/tests/interactive/text/test_multiline_wrap.py +0 -0
  648. {pyglet-2.1.dev7 → pyglet-2.1rc1}/tests/interactive/text/test_plain.py +0 -0
  649. {pyglet-2.1.dev7 → pyglet-2.1rc1}/tests/interactive/text/test_style.py +0 -0
  650. {pyglet-2.1.dev7 → pyglet-2.1rc1}/tests/interactive/window/__init__.py +0 -0
  651. {pyglet-2.1.dev7 → pyglet-2.1rc1}/tests/interactive/window/test_window_events.py +0 -0
  652. {pyglet-2.1.dev7 → pyglet-2.1rc1}/tests/interactive/window/test_window_fullscreen.py +0 -0
  653. {pyglet-2.1.dev7 → pyglet-2.1rc1}/tests/interactive/window/test_window_modes.py +0 -0
  654. {pyglet-2.1.dev7 → pyglet-2.1rc1}/tests/interactive/window/test_window_multisample.py +0 -0
  655. {pyglet-2.1.dev7 → pyglet-2.1rc1}/tests/interactive/window/test_window_open.py +0 -0
  656. {pyglet-2.1.dev7 → pyglet-2.1rc1}/tests/interactive/window/test_window_settings.py +0 -0
  657. {pyglet-2.1.dev7 → pyglet-2.1rc1}/tests/interactive/window/test_window_styles.py +0 -0
  658. {pyglet-2.1.dev7 → pyglet-2.1rc1}/tests/interactive/window/window_util.py +0 -0
  659. {pyglet-2.1.dev7 → pyglet-2.1rc1}/tests/interactive/windowed_test_base.py +0 -0
  660. {pyglet-2.1.dev7 → pyglet-2.1rc1}/tests/requirements.txt +0 -0
  661. {pyglet-2.1.dev7 → pyglet-2.1rc1}/tests/unit/__init__.py +0 -0
  662. {pyglet-2.1.dev7 → pyglet-2.1rc1}/tests/unit/conftest.py +0 -0
  663. {pyglet-2.1.dev7 → pyglet-2.1rc1}/tests/unit/math/test_mat.py +0 -0
  664. {pyglet-2.1.dev7 → pyglet-2.1rc1}/tests/unit/math/test_quat.py +0 -0
  665. {pyglet-2.1.dev7 → pyglet-2.1rc1}/tests/unit/math/test_vec2.py +0 -0
  666. {pyglet-2.1.dev7 → pyglet-2.1rc1}/tests/unit/math/test_vec3.py +0 -0
  667. {pyglet-2.1.dev7 → pyglet-2.1rc1}/tests/unit/math/test_vec4.py +0 -0
  668. {pyglet-2.1.dev7 → pyglet-2.1rc1}/tests/unit/media/__init__.py +0 -0
  669. {pyglet-2.1.dev7 → pyglet-2.1rc1}/tests/unit/media/test_listener.py +0 -0
  670. {pyglet-2.1.dev7 → pyglet-2.1rc1}/tests/unit/media/test_player.py +0 -0
  671. {pyglet-2.1.dev7 → pyglet-2.1rc1}/tests/unit/media/test_sources.py +0 -0
  672. {pyglet-2.1.dev7 → pyglet-2.1rc1}/tests/unit/media/test_synthesis.py +0 -0
  673. {pyglet-2.1.dev7 → pyglet-2.1rc1}/tests/unit/platform/__init__.py +0 -0
  674. {pyglet-2.1.dev7 → pyglet-2.1rc1}/tests/unit/platform/test_mac_objc.py +0 -0
  675. {pyglet-2.1.dev7 → pyglet-2.1rc1}/tests/unit/shader/__init__.py +0 -0
  676. {pyglet-2.1.dev7 → pyglet-2.1rc1}/tests/unit/shader/conftest.py +0 -0
  677. {pyglet-2.1.dev7 → pyglet-2.1rc1}/tests/unit/shader/test_shader.py +0 -0
  678. {pyglet-2.1.dev7 → pyglet-2.1rc1}/tests/unit/shapes/__init__.py +0 -0
  679. {pyglet-2.1.dev7 → pyglet-2.1rc1}/tests/unit/shapes/conftest.py +0 -0
  680. {pyglet-2.1.dev7 → pyglet-2.1rc1}/tests/unit/shapes/test_bordered_rectangle.py +0 -0
  681. {pyglet-2.1.dev7 → pyglet-2.1rc1}/tests/unit/shapes/test_shapes.py +0 -0
  682. {pyglet-2.1.dev7 → pyglet-2.1rc1}/tests/unit/test_atlas.py +0 -0
  683. {pyglet-2.1.dev7 → pyglet-2.1rc1}/tests/unit/test_clock.py +0 -0
  684. {pyglet-2.1.dev7 → pyglet-2.1rc1}/tests/unit/test_clock_freq.py +0 -0
  685. {pyglet-2.1.dev7 → pyglet-2.1rc1}/tests/unit/test_events.py +0 -0
  686. {pyglet-2.1.dev7 → pyglet-2.1rc1}/tests/unit/test_font.py +0 -0
  687. {pyglet-2.1.dev7 → pyglet-2.1rc1}/tests/unit/test_input.py +0 -0
  688. {pyglet-2.1.dev7 → pyglet-2.1rc1}/tests/unit/test_resource_path.py +0 -0
  689. {pyglet-2.1.dev7 → pyglet-2.1rc1}/tests/unit/test_sprite.py +0 -0
  690. {pyglet-2.1.dev7 → pyglet-2.1rc1}/tests/unit/test_text.py +0 -0
  691. {pyglet-2.1.dev7 → pyglet-2.1rc1}/tests/unit/text/__init__.py +0 -0
  692. {pyglet-2.1.dev7 → pyglet-2.1rc1}/tests/unit/text/test_caret.py +0 -0
  693. {pyglet-2.1.dev7 → pyglet-2.1rc1}/tests/unit/text/test_layout.py +0 -0
  694. {pyglet-2.1.dev7 → pyglet-2.1rc1}/tools/al_info.py +0 -0
  695. {pyglet-2.1.dev7 → pyglet-2.1rc1}/tools/ffmpeg/bokeh_timeline.py +0 -0
  696. {pyglet-2.1.dev7 → pyglet-2.1rc1}/tools/ffmpeg/compare.py +0 -0
  697. {pyglet-2.1.dev7 → pyglet-2.1rc1}/tools/ffmpeg/configure.py +0 -0
  698. {pyglet-2.1.dev7 → pyglet-2.1rc1}/tools/ffmpeg/extractors.py +0 -0
  699. {pyglet-2.1.dev7 → pyglet-2.1rc1}/tools/ffmpeg/fs.py +0 -0
  700. {pyglet-2.1.dev7 → pyglet-2.1rc1}/tools/ffmpeg/mp.py +0 -0
  701. {pyglet-2.1.dev7 → pyglet-2.1rc1}/tools/ffmpeg/mpexceptions.py +0 -0
  702. {pyglet-2.1.dev7 → pyglet-2.1rc1}/tools/ffmpeg/playmany.py +0 -0
  703. {pyglet-2.1.dev7 → pyglet-2.1rc1}/tools/ffmpeg/readme_ffmpeg_debbuging_branch.txt +0 -0
  704. {pyglet-2.1.dev7 → pyglet-2.1rc1}/tools/ffmpeg/readme_run_tests.txt +0 -0
  705. {pyglet-2.1.dev7 → pyglet-2.1rc1}/tools/ffmpeg/report.py +0 -0
  706. {pyglet-2.1.dev7 → pyglet-2.1rc1}/tools/ffmpeg/reports.py +0 -0
  707. {pyglet-2.1.dev7 → pyglet-2.1rc1}/tools/ffmpeg/retry_crashed.py +0 -0
  708. {pyglet-2.1.dev7 → pyglet-2.1rc1}/tools/ffmpeg/run_test_suite.py +0 -0
  709. {pyglet-2.1.dev7 → pyglet-2.1rc1}/tools/ffmpeg/summarize.py +0 -0
  710. {pyglet-2.1.dev7 → pyglet-2.1rc1}/tools/ffmpeg/test_instrumentation.py +0 -0
  711. {pyglet-2.1.dev7 → pyglet-2.1rc1}/tools/ffmpeg/timeline.py +0 -0
  712. {pyglet-2.1.dev7 → pyglet-2.1rc1}/tools/gencontrollerdb.py +0 -0
  713. {pyglet-2.1.dev7 → pyglet-2.1rc1}/tools/gengl.py +0 -0
  714. {pyglet-2.1.dev7 → pyglet-2.1rc1}/tools/genwrappers.py +0 -0
  715. {pyglet-2.1.dev7 → pyglet-2.1rc1}/tools/gl.template +0 -0
  716. {pyglet-2.1.dev7 → pyglet-2.1rc1}/tools/gl.xml +0 -0
  717. {pyglet-2.1.dev7 → pyglet-2.1rc1}/tools/gl_info.py +0 -0
  718. {pyglet-2.1.dev7 → pyglet-2.1rc1}/tools/inspect_font.py +0 -0
  719. {pyglet-2.1.dev7 → pyglet-2.1rc1}/tools/requirements.txt +0 -0
  720. {pyglet-2.1.dev7 → pyglet-2.1rc1}/tools/wgl.h +0 -0
  721. {pyglet-2.1.dev7 → pyglet-2.1rc1}/tools/wraptypes/__init__.py +0 -0
  722. {pyglet-2.1.dev7 → pyglet-2.1rc1}/tools/wraptypes/cparser.py +0 -0
  723. {pyglet-2.1.dev7 → pyglet-2.1rc1}/tools/wraptypes/ctypesparser.py +0 -0
  724. {pyglet-2.1.dev7 → pyglet-2.1rc1}/tools/wraptypes/lex.py +0 -0
  725. {pyglet-2.1.dev7 → pyglet-2.1rc1}/tools/wraptypes/preprocessor.py +0 -0
  726. {pyglet-2.1.dev7 → pyglet-2.1rc1}/tools/wraptypes/wrap.py +0 -0
  727. {pyglet-2.1.dev7 → pyglet-2.1rc1}/tools/wraptypes/yacc.py +0 -0
  728. {pyglet-2.1.dev7 → pyglet-2.1rc1}/website/LICENSE.txt +0 -0
  729. {pyglet-2.1.dev7 → pyglet-2.1rc1}/website/README.rst +0 -0
  730. {pyglet-2.1.dev7 → pyglet-2.1rc1}/website/assets/favicon.ico +0 -0
  731. {pyglet-2.1.dev7 → pyglet-2.1rc1}/website/assets/static/css/example-custom-styles.css +0 -0
  732. {pyglet-2.1.dev7 → pyglet-2.1rc1}/website/assets/static/images/pyglet.png +0 -0
  733. {pyglet-2.1.dev7 → pyglet-2.1rc1}/website/content/404.html/contents.lr +0 -0
  734. {pyglet-2.1.dev7 → pyglet-2.1rc1}/website/content/404.html/ngc-5793.jpg +0 -0
  735. {pyglet-2.1.dev7 → pyglet-2.1rc1}/website/content/authors/benjamin/contents.lr +0 -0
  736. {pyglet-2.1.dev7 → pyglet-2.1rc1}/website/content/authors/benjamin/pyglet.png +0 -0
  737. {pyglet-2.1.dev7 → pyglet-2.1rc1}/website/content/authors/contents.lr +0 -0
  738. {pyglet-2.1.dev7 → pyglet-2.1rc1}/website/content/blog/contents.lr +0 -0
  739. {pyglet-2.1.dev7 → pyglet-2.1rc1}/website/content/blog/welcome-blog/contents.lr +0 -0
  740. {pyglet-2.1.dev7 → pyglet-2.1rc1}/website/content/contents.lr +0 -0
  741. {pyglet-2.1.dev7 → pyglet-2.1rc1}/website/content/eclipse.jpg +0 -0
  742. {pyglet-2.1.dev7 → pyglet-2.1rc1}/website/pyglet.lektorproject +0 -0
  743. {pyglet-2.1.dev7 → pyglet-2.1rc1}/website/themes/lektor-icon/AUTHORS.txt +0 -0
  744. {pyglet-2.1.dev7 → pyglet-2.1rc1}/website/themes/lektor-icon/CHANGELOG.md +0 -0
  745. {pyglet-2.1.dev7 → pyglet-2.1rc1}/website/themes/lektor-icon/CONTRIBUTING.md +0 -0
  746. {pyglet-2.1.dev7 → pyglet-2.1rc1}/website/themes/lektor-icon/LICENSE.txt +0 -0
  747. {pyglet-2.1.dev7 → pyglet-2.1rc1}/website/themes/lektor-icon/NOTICE.txt +0 -0
  748. {pyglet-2.1.dev7 → pyglet-2.1rc1}/website/themes/lektor-icon/README.md +0 -0
  749. {pyglet-2.1.dev7 → pyglet-2.1rc1}/website/themes/lektor-icon/assets/static/css/bootstrap.css +0 -0
  750. {pyglet-2.1.dev7 → pyglet-2.1rc1}/website/themes/lektor-icon/assets/static/css/icomoon.css +0 -0
  751. {pyglet-2.1.dev7 → pyglet-2.1rc1}/website/themes/lektor-icon/assets/static/css/magnific-popup.css +0 -0
  752. {pyglet-2.1.dev7 → pyglet-2.1rc1}/website/themes/lektor-icon/assets/static/css/style.css +0 -0
  753. {pyglet-2.1.dev7 → pyglet-2.1rc1}/website/themes/lektor-icon/assets/static/fonts/bootstrap/glyphicons-halflings-regular.ttf +0 -0
  754. {pyglet-2.1.dev7 → pyglet-2.1rc1}/website/themes/lektor-icon/assets/static/fonts/bootstrap/glyphicons-halflings-regular.woff +0 -0
  755. {pyglet-2.1.dev7 → pyglet-2.1rc1}/website/themes/lektor-icon/assets/static/fonts/bootstrap/glyphicons-halflings-regular.woff2 +0 -0
  756. {pyglet-2.1.dev7 → pyglet-2.1rc1}/website/themes/lektor-icon/assets/static/fonts/icomoon/icomoon.ttf +0 -0
  757. {pyglet-2.1.dev7 → pyglet-2.1rc1}/website/themes/lektor-icon/assets/static/fonts/icomoon/icomoon.woff +0 -0
  758. {pyglet-2.1.dev7 → pyglet-2.1rc1}/website/themes/lektor-icon/assets/static/images/Preloader_2.gif +0 -0
  759. {pyglet-2.1.dev7 → pyglet-2.1rc1}/website/themes/lektor-icon/assets/static/images/placeholder_person.png +0 -0
  760. {pyglet-2.1.dev7 → pyglet-2.1rc1}/website/themes/lektor-icon/assets/static/js/jquery-3.3.1.min.js +0 -0
  761. {pyglet-2.1.dev7 → pyglet-2.1rc1}/website/themes/lektor-icon/assets/static/js/jquery.easing.min.js +0 -0
  762. {pyglet-2.1.dev7 → pyglet-2.1rc1}/website/themes/lektor-icon/assets/static/js/jquery.magnific-popup.min.js +0 -0
  763. {pyglet-2.1.dev7 → pyglet-2.1rc1}/website/themes/lektor-icon/assets/static/js/jquery.stellar.js +0 -0
  764. {pyglet-2.1.dev7 → pyglet-2.1rc1}/website/themes/lektor-icon/assets/static/js/jquery.stellar.min.js +0 -0
  765. {pyglet-2.1.dev7 → pyglet-2.1rc1}/website/themes/lektor-icon/assets/static/js/jquery.waypoints.min.js +0 -0
  766. {pyglet-2.1.dev7 → pyglet-2.1rc1}/website/themes/lektor-icon/assets/static/js/magnific-popup-options.js +0 -0
  767. {pyglet-2.1.dev7 → pyglet-2.1rc1}/website/themes/lektor-icon/assets/static/js/main-singlelayout.js +0 -0
  768. {pyglet-2.1.dev7 → pyglet-2.1rc1}/website/themes/lektor-icon/assets/static/js/main.js +0 -0
  769. {pyglet-2.1.dev7 → pyglet-2.1rc1}/website/themes/lektor-icon/flowblocks/content.ini +0 -0
  770. {pyglet-2.1.dev7 → pyglet-2.1rc1}/website/themes/lektor-icon/flowblocks/gallery.ini +0 -0
  771. {pyglet-2.1.dev7 → pyglet-2.1rc1}/website/themes/lektor-icon/flowblocks/gallery_item.ini +0 -0
  772. {pyglet-2.1.dev7 → pyglet-2.1rc1}/website/themes/lektor-icon/flowblocks/member.ini +0 -0
  773. {pyglet-2.1.dev7 → pyglet-2.1rc1}/website/themes/lektor-icon/flowblocks/mission.ini +0 -0
  774. {pyglet-2.1.dev7 → pyglet-2.1rc1}/website/themes/lektor-icon/flowblocks/mission_tab.ini +0 -0
  775. {pyglet-2.1.dev7 → pyglet-2.1rc1}/website/themes/lektor-icon/flowblocks/service.ini +0 -0
  776. {pyglet-2.1.dev7 → pyglet-2.1rc1}/website/themes/lektor-icon/flowblocks/services.ini +0 -0
  777. {pyglet-2.1.dev7 → pyglet-2.1rc1}/website/themes/lektor-icon/flowblocks/team.ini +0 -0
  778. {pyglet-2.1.dev7 → pyglet-2.1rc1}/website/themes/lektor-icon/images/blog-index.png +0 -0
  779. {pyglet-2.1.dev7 → pyglet-2.1rc1}/website/themes/lektor-icon/images/full-blog.png +0 -0
  780. {pyglet-2.1.dev7 → pyglet-2.1rc1}/website/themes/lektor-icon/images/full-page.png +0 -0
  781. {pyglet-2.1.dev7 → pyglet-2.1rc1}/website/themes/lektor-icon/images/gallery-404.png +0 -0
  782. {pyglet-2.1.dev7 → pyglet-2.1rc1}/website/themes/lektor-icon/images/gallery-singlepage.png +0 -0
  783. {pyglet-2.1.dev7 → pyglet-2.1rc1}/website/themes/lektor-icon/images/mainpage-screenshots.png +0 -0
  784. {pyglet-2.1.dev7 → pyglet-2.1rc1}/website/themes/lektor-icon/images/responsive-layout.png +0 -0
  785. {pyglet-2.1.dev7 → pyglet-2.1rc1}/website/themes/lektor-icon/models/404.ini +0 -0
  786. {pyglet-2.1.dev7 → pyglet-2.1rc1}/website/themes/lektor-icon/models/author.ini +0 -0
  787. {pyglet-2.1.dev7 → pyglet-2.1rc1}/website/themes/lektor-icon/models/authors.ini +0 -0
  788. {pyglet-2.1.dev7 → pyglet-2.1rc1}/website/themes/lektor-icon/models/blog-post.ini +0 -0
  789. {pyglet-2.1.dev7 → pyglet-2.1rc1}/website/themes/lektor-icon/models/blog.ini +0 -0
  790. {pyglet-2.1.dev7 → pyglet-2.1rc1}/website/themes/lektor-icon/models/page.ini +0 -0
  791. {pyglet-2.1.dev7 → pyglet-2.1rc1}/website/themes/lektor-icon/models/single-layout.ini +0 -0
  792. {pyglet-2.1.dev7 → pyglet-2.1rc1}/website/themes/lektor-icon/templates/404.html +0 -0
  793. {pyglet-2.1.dev7 → pyglet-2.1rc1}/website/themes/lektor-icon/templates/author.html +0 -0
  794. {pyglet-2.1.dev7 → pyglet-2.1rc1}/website/themes/lektor-icon/templates/authors.html +0 -0
  795. {pyglet-2.1.dev7 → pyglet-2.1rc1}/website/themes/lektor-icon/templates/blocks/content.html +0 -0
  796. {pyglet-2.1.dev7 → pyglet-2.1rc1}/website/themes/lektor-icon/templates/blocks/gallery.html +0 -0
  797. {pyglet-2.1.dev7 → pyglet-2.1rc1}/website/themes/lektor-icon/templates/blocks/mission.html +0 -0
  798. {pyglet-2.1.dev7 → pyglet-2.1rc1}/website/themes/lektor-icon/templates/blocks/services.html +0 -0
  799. {pyglet-2.1.dev7 → pyglet-2.1rc1}/website/themes/lektor-icon/templates/blocks/team.html +0 -0
  800. {pyglet-2.1.dev7 → pyglet-2.1rc1}/website/themes/lektor-icon/templates/blog-layout.html +0 -0
  801. {pyglet-2.1.dev7 → pyglet-2.1rc1}/website/themes/lektor-icon/templates/blog-post.html +0 -0
  802. {pyglet-2.1.dev7 → pyglet-2.1rc1}/website/themes/lektor-icon/templates/blog.html +0 -0
  803. {pyglet-2.1.dev7 → pyglet-2.1rc1}/website/themes/lektor-icon/templates/layout.html +0 -0
  804. {pyglet-2.1.dev7 → pyglet-2.1rc1}/website/themes/lektor-icon/templates/macros/blog.html +0 -0
  805. {pyglet-2.1.dev7 → pyglet-2.1rc1}/website/themes/lektor-icon/templates/macros/pagination.html +0 -0
  806. {pyglet-2.1.dev7 → pyglet-2.1rc1}/website/themes/lektor-icon/templates/none.html +0 -0
  807. {pyglet-2.1.dev7 → pyglet-2.1rc1}/website/themes/lektor-icon/templates/page.html +0 -0
  808. {pyglet-2.1.dev7 → pyglet-2.1rc1}/website/themes/lektor-icon/templates/single-layout.html +0 -0
  809. {pyglet-2.1.dev7 → pyglet-2.1rc1}/website/themes/lektor-icon/theme.ini +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: pyglet
3
- Version: 2.1.dev7
3
+ Version: 2.1rc1
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.8
@@ -50,10 +50,11 @@ If you are migrating from an older version of pyglet, please read through
50
50
  programming_guide/keyboard
51
51
  programming_guide/mouse
52
52
  programming_guide/input
53
- programming_guide/shapes
54
53
  programming_guide/image
55
- programming_guide/media
56
54
  programming_guide/text
55
+ programming_guide/media
56
+ programming_guide/shapes
57
+ programming_guide/models
57
58
  programming_guide/resources
58
59
  programming_guide/rendering
59
60
  programming_guide/events
@@ -0,0 +1,6 @@
1
+ pyglet.model
2
+ ============
3
+
4
+ .. automodule:: pyglet.model
5
+ :members:
6
+ :undoc-members:
@@ -12,7 +12,10 @@ are having an issue that is not covered here, please open up an issue ticket on
12
12
 
13
13
  Window "HiDPI" support
14
14
  ----------------------
15
- TBD
15
+ The v2.1 release now provides a lot more control over how modern 'HiDPI' displays
16
+ are treated. This includes "retina" displays, or any display that has a non-0% zoom
17
+ or scale (such as 4K displays). This is exposed as new pyglet options. See
18
+ ``pyglet.options.dpi_scaling`` for more information.
16
19
 
17
20
  Labels & Text Layouts
18
21
  ---------------------
@@ -84,7 +87,7 @@ as booleans for a quick workaround when migrating, you can do something like thi
84
87
 
85
88
 
86
89
  Vectors can also be useful for analog sticks, because it gives an easy way to
87
- calculate dead-zones using `.length()`. For example::
90
+ calculate dead-zones using ``.length()``. For example::
88
91
 
89
92
  @controller.event
90
93
  def on_stick_motion(controller, name, vector):
@@ -102,8 +105,8 @@ that the maximum value stays within range. For example::
102
105
 
103
106
  vector = min(vector, vector.normalize())
104
107
 
105
- You can also of course directly access the individual `Vec2.x` & `Vec2.y`
106
- attributes. See :py:class:`~pyglet.math.Vec2` for more details on vector types.
108
+ You can also of course directly access the individual ``Vec2.x`` & ``Vec2.y`` attributes,
109
+ if you want to . See :py:class:`~pyglet.math.Vec2` for more details on vector types.
107
110
 
108
111
  Gui
109
112
  ---
@@ -116,8 +119,8 @@ The :py:class:`~pyglet.gui.widget.ToggleButton` and :py:class:`~pyglet.gui.widge
116
119
  widgets have a small change. Instead of the image arguments being named "pressed"
117
120
  and "depressed", they has been renamed to the correct "pressed" and "unpressed".
118
121
 
119
- Math module
120
- -----------
122
+ Math
123
+ ----
121
124
  In the :py:mod:`~pyglet.math` module, vector types (:py:class:`~pyglet.math.Vec2`,
122
125
  :py:class:`~pyglet.math.Vec3`, :py:class:`~pyglet.math.Vec4`) are now
123
126
  immutable; all operations will return a new object. In addition, all vector objects
@@ -139,12 +142,23 @@ way as vectors). For example:
139
142
  Matrix objects are generally created via their helper methods, so this change should
140
143
  hopefully not require any code updates for most users.
141
144
 
145
+ Models
146
+ ------
147
+ The :py:mod:`~pyglet.model` module has seen some changes. This is an undocumented
148
+ WIP module for pyglet 2.0, and it remains so pyglet 2.1. That said, it's in a more
149
+ usable state now. The first change is that :py:meth:`~pyglet.model.load` now returns
150
+ a ``Scene`` object instead of a ``Model`` object. The Scene is a new, "pure data"
151
+ intermediate representation of a 3D scene, that closely mimics the layout of the glTF
152
+ format. The :py:meth:`~pyglet.model.Scene.create_models` method can be used to create
153
+ ``Model`` instances from the Scene, but the Scene data can also be manually iterated
154
+ over for more advanced use cases.
155
+
142
156
  Canvas module
143
157
  -------------
144
- The `pyglet.canvas` module has been renamed to `pyglet.display`. The "canvas"
158
+ The ``pyglet.canvas`` module has been renamed to ``pyglet.display``. The "canvas"
145
159
  concept was a work-in-progress in legacy pyglet, and was never fully fleshed out.
146
160
  It appears to have been meant to allow arbitrary renderable areas, but this type
147
- of functionality can now be easily accomplished with Framebuffers. The name `display`
161
+ of functionality can now be easily accomplished with Framebuffers. The name ``display``
148
162
  is a more accurate representation of what the code in the module actually relates to.
149
163
  The usage is the same, with just the name change::
150
164
 
@@ -0,0 +1,10 @@
1
+ .. _guide_models:
2
+
3
+ 3D Models and Scenes
4
+ ====================
5
+
6
+ The :py:mod:`~pyglet.model` module is still a work in progress, and is
7
+ not yet documented.
8
+
9
+ TBD
10
+ ---
@@ -71,10 +71,25 @@ def on_resize(width, height):
71
71
  hello_label.position = (window.width // 2, window.height // 2, 0)
72
72
 
73
73
 
74
+ screens = pyglet.display.get_display().get_screens()
75
+ selected_screen = screens[0]
76
+
74
77
  @window.event
75
78
  def on_key_press(symbol, modifiers):
79
+ global selected_screen
80
+ if len(screens) > 1:
81
+ if symbol == pyglet.window.key._1:
82
+ selected_screen = screens[1]
83
+ elif symbol == pyglet.window.key._0:
84
+ selected_screen = screens[0]
85
+
76
86
  if symbol == pyglet.window.key.SPACE:
77
87
  window.set_size(500, 300)
88
+ elif symbol == pyglet.window.key.F:
89
+ window.set_fullscreen(False, screen=selected_screen)
90
+ elif symbol == pyglet.window.key.G:
91
+ window.set_fullscreen(True, screen=selected_screen)
92
+
78
93
 
79
94
 
80
95
  @window.event
@@ -10,17 +10,16 @@ to your needs for first person games.
10
10
  """
11
11
 
12
12
  from __future__ import annotations
13
+
13
14
  import weakref
14
- from pathlib import Path
15
+
15
16
  from math import radians, degrees
16
17
 
17
18
  import pyglet
18
- from pyglet.window import key as _key
19
19
 
20
20
  from pyglet.gl import glEnable, GL_DEPTH_TEST, GL_CULL_FACE
21
21
  from pyglet.math import Vec2, Vec3, Mat4, clamp
22
-
23
- MODULE_PATH = Path(__file__).parent
22
+ from pyglet.window import key as _key
24
23
 
25
24
 
26
25
  class FPSCamera:
@@ -346,8 +345,8 @@ if __name__ == "__main__":
346
345
  glEnable(GL_DEPTH_TEST)
347
346
  glEnable(GL_CULL_FACE)
348
347
 
349
- model_logo = pyglet.model.load(MODULE_PATH / "logo3d.obj", batch=batch)
350
- model_box = pyglet.model.load(MODULE_PATH / "box.obj", batch=batch)
348
+ model_logo = pyglet.resource.model("logo3d.obj", batch=batch)
349
+ model_box = pyglet.resource.model("box.obj", batch=batch)
351
350
 
352
351
  # Camera controls the global projection & view matrixes:
353
352
  camera = FPSCamera(window, position=Vec3(0.0, 0.0, 5.0))
@@ -44,8 +44,10 @@ if __name__ == "__main__":
44
44
  glEnable(GL_DEPTH_TEST)
45
45
  glEnable(GL_CULL_FACE)
46
46
 
47
- model_logo = pyglet.resource.model("logo3d.obj", batch=batch)
48
- model_box = pyglet.resource.model("box.obj", batch=batch)
47
+ logo_scene = pyglet.resource.scene('logo3d.obj')
48
+ box_scene = pyglet.resource.scene('box.obj')
49
+ model_logo = logo_scene.create_models(batch=batch)[0] # only one model in this scene
50
+ model_box = box_scene.create_models(batch=batch)[0] # only one model in this scene
49
51
 
50
52
  # Set the application wide view matrix (camera):
51
53
  window.view = Mat4.look_at(position=Vec3(0, 0, 5), target=Vec3(0, 0, 0), up=Vec3(0, 1, 0))
@@ -15,7 +15,7 @@ if TYPE_CHECKING:
15
15
  from typing import Any, Callable, ItemsView, Sized
16
16
 
17
17
  #: The release version
18
- version = '2.1.dev7'
18
+ version = '2.1.rc1'
19
19
  __version__ = version
20
20
 
21
21
  MIN_PYTHON_VERSION = 3, 8
@@ -247,7 +247,7 @@ class Options:
247
247
 
248
248
  .. versionadded:: 2.0.5"""
249
249
 
250
- dpi_scaling: Literal["real", "scaled", "stretch"] = "real"
250
+ dpi_scaling: Literal["real", "scaled", "stretch", "platform"] = "real"
251
251
  """For 'HiDPI' displays, Window behavior can differ between operating systems. Defaults to `'real'`.
252
252
 
253
253
  The current options are an attempt to create consistent behavior across all of the operating systems.
@@ -270,6 +270,13 @@ class Options:
270
270
  rescaling and repositioning of content will be necessary, but at the cost of blurry content depending on the extent
271
271
  of the stretch. For example, 800x600 at 150% DPI will be 800x600 for `window.get_size()` and 1200x900 for
272
272
  `window.get_framebuffer_size()`.
273
+
274
+ `'platform'`: A DPI aware window is created, however window sizing and framebuffer sizing is not interfered with
275
+ by Pyglet. Final sizes are dictated by the platform the window was created on. It is up to the user to make any
276
+ platform adjustments themselves such as sizing on a platform, mouse coordinate adjustments, or framebuffer size
277
+ handling. On Windows and X11, the framebuffer and the requested window size will always match in pixels 1:1. On
278
+ MacOS, depending on a Hi-DPI display, you may get a different sized framebuffer than the window size. This option
279
+ does allow `window.dpi` and `window.scale` to return their respective values.
273
280
  """
274
281
 
275
282
  shader_bind_management: bool = True
@@ -63,7 +63,6 @@ class Options:
63
63
  com_mta: bool
64
64
  osx_alt_loop: bool
65
65
  dpi_scaling: Literal["real", "scaled", "stretch"]
66
- scale_with_dpi: bool
67
66
  shader_bind_management: bool
68
67
 
69
68
  def get(self, item: str, default: Any = None) -> Any:
@@ -25,16 +25,17 @@ if TYPE_CHECKING:
25
25
 
26
26
  class _Worker(Thread):
27
27
  """A worker thread to pop and run jobs."""
28
- def __init__(self, workqueue: Queue, exitevent: Event, name: str) -> None:
29
- super().__init__(name=name, daemon=True)
30
- self.queue = workqueue
31
- self.exit = exitevent
28
+ def __init__(self, workqueue: Queue, exitevent: Event, index: int) -> None:
29
+ super().__init__(daemon=True)
30
+ self._queue = workqueue
31
+ self._exit = exitevent
32
+ self._index = index
32
33
  self.start()
33
34
 
34
35
  def run(self) -> None:
35
36
  """Parallel thread of execution."""
36
- _exit = self.exit
37
- _queue = self.queue
37
+ _exit = self._exit
38
+ _queue = self._queue
38
39
  while not _exit.is_set():
39
40
  func, args = _queue.get()
40
41
  func(*args)
@@ -51,8 +52,9 @@ class JobExecutor:
51
52
  `concurrent.futures` module, but does not share any code with those classes.
52
53
  Instead, it is a more light-weight implementation intended for execution of
53
54
  highly parallizable functions (jobs). A key difference is that JobExecutor
54
- does not return `Futures`, and instead depends on the submitted jobs to
55
- self-contained.
55
+ does not return `Futures`. Submitted jobs must be self-contained, or handle
56
+ returning values by other mechanisms. The :py:meth:`~sync` method can be
57
+ used to wait for all currently submitted jobs to complete.
56
58
  """
57
59
 
58
60
  def __init__(self, max_workers: int | None = None) -> None:
@@ -65,7 +67,7 @@ class JobExecutor:
65
67
  self._max_workers = max_workers or os.cpu_count() // 2
66
68
  self._exitevent = Event()
67
69
  self._queue = Queue()
68
- self._threads = [_Worker(self._queue, self._exitevent, f"Thread{i+1}") for i in range(self._max_workers)]
70
+ self._threads = [_Worker(self._queue, self._exitevent, i) for i in range(self._max_workers)]
69
71
 
70
72
  def submit(self, func: Callable, *args: Any) -> None:
71
73
  """Submit a job to be executed on .
@@ -12,7 +12,7 @@ from pyglet.gl import gl_info
12
12
 
13
13
  if TYPE_CHECKING:
14
14
  from _ctypes import Array
15
- from pyglet.display import Canvas
15
+ from pyglet.display.base import Canvas
16
16
  from pyglet.gl.gl_info import GLInfo
17
17
  from pyglet.graphics.shader import ShaderProgram
18
18
 
@@ -142,7 +142,7 @@ class Config:
142
142
  """
143
143
  msg = (
144
144
  'This config cannot be used to create contexts. '
145
- 'Use Config.match to created a CanvasConfig'
145
+ 'Use Config.match to created a DisplayConfig'
146
146
  )
147
147
  raise gl.ConfigException(msg)
148
148
 
@@ -154,7 +154,7 @@ class Config:
154
154
  For example, `pyglet.window.Screen.get_matching_configs` returns
155
155
  complete configs.
156
156
 
157
- :deprecated: Use ``isinstance(config, CanvasConfig)``.
157
+ :deprecated: Use ``isinstance(config, DisplayConfig)``.
158
158
  """
159
159
  return isinstance(self, DisplayConfig)
160
160
 
@@ -162,7 +162,7 @@ class Config:
162
162
  return f"{self.__class__.__name__}({self.get_gl_attributes()})"
163
163
 
164
164
 
165
- class DisplayConfig(Config):
165
+ class DisplayConfig(Config, abc.ABC):
166
166
  """An OpenGL configuration for a particular display.
167
167
 
168
168
  Use ``Config.match`` to obtain an instance of this class.
@@ -214,20 +214,20 @@ class ObjectSpace:
214
214
  class Context:
215
215
  """A base OpenGL context for drawing.
216
216
 
217
- Use ``CanvasConfig.create_context`` to create a context.
217
+ Use ``DisplayConfig.create_context`` to create a context.
218
218
  """
219
219
  #: gl_info.GLInfo instance, filled in on first set_current
220
220
  _info: GLInfo | None = None
221
221
 
222
222
  #: A container which is shared between all contexts that share GL objects.
223
223
  object_space: ObjectSpace
224
- config: CanvasConfig
224
+ config: DisplayConfig
225
225
  context_share: Context | None
226
226
 
227
- def __init__(self, config: CanvasConfig, context_share: Context | None = None) -> None:
227
+ def __init__(self, config: DisplayConfig, context_share: Context | None = None) -> None:
228
228
  """Initialize a context.
229
229
 
230
- This should only be created through the ``CanvasConfig.create_context`` method.
230
+ This should only be created through the ``DisplayConfig.create_context`` method.
231
231
 
232
232
  Args:
233
233
  config:
@@ -53,8 +53,7 @@ class HeadlessConfig(Config): # noqa: D101
53
53
  egl.eglChooseConfig(display_connection, attrs_list, configs,
54
54
  num_config.value, byref(num_config))
55
55
 
56
- result = [HeadlessDisplayConfig(canvas, c, self) for c in configs]
57
- return result
56
+ return [HeadlessDisplayConfig(canvas, c, self) for c in configs]
58
57
 
59
58
 
60
59
  class HeadlessDisplayConfig(DisplayConfig): # noqa: D101
@@ -92,6 +91,9 @@ class HeadlessDisplayConfig(DisplayConfig): # noqa: D101
92
91
  for name, value in _fake_gl_attributes.items():
93
92
  setattr(self, name, value)
94
93
 
94
+ def compatible(self, canvas: HeadlessCanvas) -> bool:
95
+ return isinstance(canvas, HeadlessCanvas)
96
+
95
97
  def create_context(self, share: HeadlessContext | None) -> HeadlessContext:
96
98
  return HeadlessContext(self, share)
97
99
 
@@ -1425,8 +1425,7 @@ class ShaderProgram:
1425
1425
  # Create vertex list and initialize
1426
1426
  if indexed:
1427
1427
  vlist = domain.create(count, len(indices))
1428
- start = vlist.start
1429
- vlist.indices = [i + start for i in indices]
1428
+ vlist.indices = indices
1430
1429
  else:
1431
1430
  vlist = domain.create(count)
1432
1431
 
@@ -329,11 +329,15 @@ class IndexedVertexList(VertexList):
329
329
  @property
330
330
  def indices(self) -> list[int]:
331
331
  """Array of index data."""
332
- return self.domain.index_buffer.get_region(self.index_start, self.index_count)
332
+ start = self.start
333
+ return [i - start for i in self.domain.index_buffer.get_region(self.index_start, self.index_count)]
333
334
 
334
335
  @indices.setter
335
336
  def indices(self, data: Sequence[int]) -> None:
336
- self.domain.index_buffer.set_region(self.index_start, self.index_count, data)
337
+ start = self.start
338
+ # The vertex data is offset in the buffer, so offset the index values to match. Ex:
339
+ # vertex_buffer: [_, _, _, _, 1, 2, 3, 4]
340
+ self.domain.index_buffer.set_region(self.index_start, self.index_count, tuple(i + start for i in data))
337
341
 
338
342
 
339
343
  class VertexInstance:
@@ -1,41 +1,20 @@
1
- """Loading of 3D models.
1
+ """Loading of 3D scenes and models.
2
2
 
3
- A :py:class:`~pyglet.model.Model` is an instance of a 3D object.
3
+ The :py:mod:`~pyglet.model` module provides an interface for loading 3D "scenes"
4
+ and models. A :py:class:`~pyglet.model.Scene` is a logical container that can
5
+ contain the data of one or more models, and is closely based on the design
6
+ of the glTF format.
4
7
 
5
- The following example loads a ``"teapot.obj"`` model::
6
-
7
- import pyglet
8
-
9
- window = pyglet.window.Window()
10
-
11
- teapot = pyglet.model.load('teapot.obj')
12
-
13
- @window.event
14
- def on_draw():
15
- teapot.draw()
16
-
17
- pyglet.app.run()
18
-
19
-
20
- You can also load models with :py:meth:`~pyglet.resource.model`.
21
- See :py:mod:`~pyglet.resource` for more information.
22
-
23
-
24
- Efficient Drawing
25
- =================
26
-
27
- As with Sprites or Text, Models can be added to a
28
- :py:class:`~pyglet.graphics.Batch` for efficient drawing. This is
29
- preferred to calling their ``draw`` methods individually. To do this,
30
- simply pass in a reference to the :py:class:`~pyglet.graphics.Batch`
31
- instance when loading the Model::
8
+ The following example loads a ``"teapot.obj"`` file. The wavefront format
9
+ only contains a single model (mesh)::
32
10
 
33
11
  import pyglet
34
12
 
35
13
  window = pyglet.window.Window()
36
14
  batch = pyglet.graphics.Batch()
37
15
 
38
- teapot = pyglet.model.load('teapot.obj', batch=batch)
16
+ scene = pyglet.model.load('teapot.obj')
17
+ models = scene.create_models(batch=batch)
39
18
 
40
19
  @window.event
41
20
  def on_draw():
@@ -44,6 +23,8 @@ instance when loading the Model::
44
23
  pyglet.app.run()
45
24
 
46
25
 
26
+ You can also load scenes with :py:meth:`~pyglet.resource.scene`.
27
+ See :py:mod:`~pyglet.resource` for more information.
47
28
  """
48
29
  from __future__ import annotations
49
30
 
@@ -59,7 +40,7 @@ from .codecs import registry as _codec_registry
59
40
  from .codecs.base import Material, Scene
60
41
 
61
42
  if TYPE_CHECKING:
62
- from typing import BinaryIO
43
+ from typing import BinaryIO, TextIO
63
44
  from pyglet.image import Texture
64
45
  from pyglet.graphics import Batch, Group
65
46
  from pyglet.graphics.shader import ShaderProgram
@@ -68,46 +49,22 @@ if TYPE_CHECKING:
68
49
  from pyglet.model.codecs import ModelDecoder
69
50
 
70
51
 
71
- def load(filename: str, file: BinaryIO | None = None, decoder: ModelDecoder | None = None,
72
- batch: Batch | None = None, group: Group | None = None) -> Model:
73
- """Load a 3D model from a file.
74
-
75
- Args:
76
- filename:
77
- Used to guess the model format, and to load the file if ``file`` is
78
- unspecified.
79
- file:
80
- An open file containing the source of model data in any supported format.
81
- decoder:
82
- If unspecified, all decoders that are registered for the filename
83
- extension are tried. An exception is raised if no codecs are
84
- registered for the file extension, or if decoding fails.
85
- batch:
86
- An optional Batch instance to add this model to.
87
- group:
88
- An optional top level Group.
89
- """
90
- if decoder:
91
- return decoder.decode(filename, file, batch=batch, group=group)
92
- else:
93
- return _codec_registry.decode(filename, file, batch=batch, group=group)
94
-
95
-
96
- def load_scene(filename: str, file: BinaryIO | None = None, decoder: ModelDecoder | None = None) -> Scene:
52
+ def load(filename: str, file: BinaryIO | TextIO | None = None, decoder: ModelDecoder | None = None) -> Scene:
97
53
  """Load a 3D scene from a file.
98
54
 
99
55
  Args:
100
56
  filename:
101
- Used to guess the scene format, and to load the file if ``file`` is
102
- unspecified.
57
+ Used to guess the scene format, or to load the file if ``file`` is unspecified.
103
58
  file:
104
59
  An open file containing the source of the scene data in any supported format.
105
60
  decoder:
106
- If unspecified, all decoders that are registered for the filename
107
- extension are tried in order. An exception is raised if no codecs are
108
- registered for the file extension, or if decoding fails.
61
+ The specific decoder to use to load the Scene. If None, use default decoders
62
+ that match the filename extension.
109
63
  """
110
- pass
64
+ if decoder:
65
+ return decoder.decode(filename, file)
66
+
67
+ return _codec_registry.decode(filename, file)
111
68
 
112
69
 
113
70
  def get_default_shader() -> ShaderProgram:
@@ -203,15 +160,15 @@ class BaseMaterialGroup(graphics.Group):
203
160
 
204
161
  class TexturedMaterialGroup(BaseMaterialGroup):
205
162
  default_vert_src = """#version 330 core
206
- in vec3 position;
207
- in vec3 normals;
208
- in vec2 tex_coords;
209
- in vec4 colors;
163
+ in vec3 POSITION;
164
+ in vec3 NORMAL;
165
+ in vec2 TEXCOORD_0;
166
+ in vec4 COLOR_0;
210
167
 
211
- out vec4 vertex_colors;
212
- out vec3 vertex_normals;
213
- out vec2 texture_coords;
214
- out vec3 vertex_position;
168
+ out vec3 position;
169
+ out vec3 normal;
170
+ out vec2 texcoord_0;
171
+ out vec4 color_0;
215
172
 
216
173
  uniform WindowBlock
217
174
  {
@@ -224,29 +181,29 @@ class TexturedMaterialGroup(BaseMaterialGroup):
224
181
  void main()
225
182
  {
226
183
  mat4 mv = window.view * model;
227
- vec4 pos = mv * vec4(position, 1.0);
184
+ vec4 pos = mv * vec4(POSITION, 1.0);
228
185
  gl_Position = window.projection * pos;
229
186
  mat3 normal_matrix = transpose(inverse(mat3(mv)));
230
187
 
231
- vertex_position = pos.xyz;
232
- vertex_colors = colors;
233
- texture_coords = tex_coords;
234
- vertex_normals = normal_matrix * normals;
188
+ position = pos.xyz;
189
+ normal = normal_matrix * NORMAL;
190
+ texcoord_0 = TEXCOORD_0;
191
+ color_0 = COLOR_0;
235
192
  }
236
193
  """
237
194
  default_frag_src = """#version 330 core
238
- in vec4 vertex_colors;
239
- in vec3 vertex_normals;
240
- in vec2 texture_coords;
241
- in vec3 vertex_position;
195
+ in vec4 color_0;
196
+ in vec3 normal;
197
+ in vec2 texcoord_0;
198
+ in vec3 position;
242
199
  out vec4 final_colors;
243
200
 
244
201
  uniform sampler2D our_texture;
245
202
 
246
203
  void main()
247
204
  {
248
- float l = dot(normalize(-vertex_position), normalize(vertex_normals));
249
- vec4 tex_color = texture(our_texture, texture_coords) * vertex_colors;
205
+ float l = dot(normalize(-position), normalize(normal));
206
+ vec4 tex_color = texture(our_texture, texcoord_0) * color_0;
250
207
  // 75/25 light ambient
251
208
  final_colors = tex_color * l * 0.75 + tex_color * vec4(0.25);
252
209
  }
@@ -278,13 +235,13 @@ class TexturedMaterialGroup(BaseMaterialGroup):
278
235
 
279
236
  class MaterialGroup(BaseMaterialGroup):
280
237
  default_vert_src = """#version 330 core
281
- in vec3 position;
282
- in vec3 normals;
283
- in vec4 colors;
238
+ in vec3 POSITION;
239
+ in vec3 NORMAL;
240
+ in vec4 COLOR_0;
284
241
 
285
- out vec4 vertex_colors;
286
- out vec3 vertex_normals;
287
- out vec3 vertex_position;
242
+ out vec4 color_0;
243
+ out vec3 normal;
244
+ out vec3 position;
288
245
 
289
246
  uniform WindowBlock
290
247
  {
@@ -297,26 +254,26 @@ class MaterialGroup(BaseMaterialGroup):
297
254
  void main()
298
255
  {
299
256
  mat4 mv = window.view * model;
300
- vec4 pos = mv * vec4(position, 1.0);
257
+ vec4 pos = mv * vec4(POSITION, 1.0);
301
258
  gl_Position = window.projection * pos;
302
259
  mat3 normal_matrix = transpose(inverse(mat3(mv)));
303
260
 
304
- vertex_position = pos.xyz;
305
- vertex_colors = colors;
306
- vertex_normals = normal_matrix * normals;
261
+ position = pos.xyz;
262
+ color_0 = COLOR_0;
263
+ normal = normal_matrix * NORMAL;
307
264
  }
308
265
  """
309
266
  default_frag_src = """#version 330 core
310
- in vec4 vertex_colors;
311
- in vec3 vertex_normals;
312
- in vec3 vertex_position;
267
+ in vec4 color_0;
268
+ in vec3 normal;
269
+ in vec3 position;
313
270
  out vec4 final_colors;
314
271
 
315
272
  void main()
316
273
  {
317
- float l = dot(normalize(-vertex_position), normalize(vertex_normals));
274
+ float l = dot(normalize(-position), normalize(normal));
318
275
  // 75/25 light ambient
319
- final_colors = vertex_colors * l * 0.75 + vertex_colors * vec4(0.25);
276
+ final_colors = color_0 * l * 0.75 + color_0 * vec4(0.25);
320
277
  }
321
278
  """
322
279
 
@@ -387,9 +344,9 @@ class Cube(Model):
387
344
 
388
345
  return self._program.vertex_list_indexed(len(vertices) // 3, pyglet.gl.GL_TRIANGLES, indices,
389
346
  batch=self._batch, group=self._group,
390
- position=('f', vertices),
391
- normals=('f', normals),
392
- colors=('f', self._color * (len(vertices) // 3)))
347
+ POSITION=('f', vertices),
348
+ NORMAL=('f', normals),
349
+ COLOR_0=('f', self._color * (len(vertices) // 3)))
393
350
 
394
351
 
395
352
  class Sphere(Model):
@@ -436,9 +393,9 @@ class Sphere(Model):
436
393
 
437
394
  return self._program.vertex_list_indexed(len(vertices) // 3, pyglet.gl.GL_TRIANGLES, indices,
438
395
  batch=self._batch, group=self._group,
439
- position=('f', vertices),
440
- normals=('f', normals),
441
- colors=('f', self._color * (len(vertices) // 3)))
396
+ POSITION=('f', vertices),
397
+ NORMAL=('f', normals),
398
+ COLOR_0=('f', self._color * (len(vertices) // 3)))
442
399
 
443
400
 
444
401
  _add_default_codecs()