pyglet 2.0.8__zip → 2.0.10__zip

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (876) hide show
  1. {pyglet-2.0.8 → pyglet-2.0.10}/.github/workflows/unittests.yml +1 -5
  2. {pyglet-2.0.8 → pyglet-2.0.10}/.gitignore +3 -0
  3. {pyglet-2.0.8 → pyglet-2.0.10}/.readthedocs.yml +5 -1
  4. {pyglet-2.0.8 → pyglet-2.0.10}/PKG-INFO +3 -2
  5. {pyglet-2.0.8 → pyglet-2.0.10}/README.md +2 -1
  6. {pyglet-2.0.8 → pyglet-2.0.10}/RELEASE_NOTES +55 -0
  7. {pyglet-2.0.8 → pyglet-2.0.10}/contrib/qt_sprite_preview.py +774 -586
  8. {pyglet-2.0.8 → pyglet-2.0.10}/doc/conf.py +6 -0
  9. {pyglet-2.0.8 → pyglet-2.0.10}/doc/modules/shapes.rst +8 -8
  10. {pyglet-2.0.8 → pyglet-2.0.10}/doc/modules/window_key.rst +9 -1
  11. {pyglet-2.0.8 → pyglet-2.0.10}/doc/programming_guide/eventloop.rst +57 -53
  12. {pyglet-2.0.8 → pyglet-2.0.10}/doc/programming_guide/keyboard.rst +194 -67
  13. {pyglet-2.0.8 → pyglet-2.0.10}/doc/programming_guide/media.rst +297 -67
  14. {pyglet-2.0.8 → pyglet-2.0.10}/doc/programming_guide/quickstart.rst +1 -0
  15. pyglet-2.0.10/examples/clipboard.py +18 -0
  16. {pyglet-2.0.8 → pyglet-2.0.10}/examples/input/controller.py +4 -0
  17. {pyglet-2.0.8 → pyglet-2.0.10}/examples/media/media_info.py +1 -9
  18. pyglet-2.0.10/examples/media/soundspace/README +38 -0
  19. pyglet-2.0.10/examples/media/soundspace/reader.py +117 -0
  20. pyglet-2.0.10/examples/media/soundspace/res/bass.wav +0 -0
  21. pyglet-2.0.10/examples/media/soundspace/res/drums.wav +0 -0
  22. pyglet-2.0.10/examples/media/soundspace/res/guitar.wav +0 -0
  23. pyglet-2.0.10/examples/media/soundspace/res/piano.wav +0 -0
  24. pyglet-2.0.10/examples/media/soundspace/res/space.txt +24 -0
  25. pyglet-2.0.10/examples/media/soundspace/soundspace.py +660 -0
  26. {pyglet-2.0.8 → pyglet-2.0.10}/examples/model/fpscamera.py +50 -38
  27. pyglet-2.0.10/examples/net/client.py +18 -0
  28. pyglet-2.0.10/examples/net/server.py +25 -0
  29. pyglet-2.0.10/examples/opengl/compute_shader.py +39 -0
  30. {pyglet-2.0.8/examples/graphics → pyglet-2.0.10/examples}/shapes.py +3 -0
  31. {pyglet-2.0.8 → pyglet-2.0.10}/examples/window/fixed_resolution.py +37 -34
  32. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/__init__.py +21 -10
  33. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/app/base.py +13 -1
  34. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/canvas/cocoa.py +6 -0
  35. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/clock.py +47 -116
  36. pyglet-2.0.10/pyglet/customtypes.py +12 -0
  37. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/event.py +16 -16
  38. pyglet-2.0.10/pyglet/experimental/README.md +6 -0
  39. pyglet-2.0.10/pyglet/experimental/geoshader_sprite.py +792 -0
  40. pyglet-2.0.10/pyglet/experimental/net.py +247 -0
  41. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/font/directwrite.py +33 -59
  42. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/font/win32.py +85 -25
  43. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/gl/base.py +195 -46
  44. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/gl/gl_info.py +4 -2
  45. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/gl/lib.py +1 -2
  46. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/gl/win32.py +30 -30
  47. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/graphics/__init__.py +9 -21
  48. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/graphics/shader.py +53 -50
  49. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/graphics/vertexarray.py +8 -9
  50. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/graphics/vertexbuffer.py +50 -74
  51. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/graphics/vertexdomain.py +54 -97
  52. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/gui/frame.py +2 -2
  53. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/gui/widgets.py +31 -3
  54. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/image/__init__.py +35 -14
  55. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/image/atlas.py +9 -9
  56. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/image/buffer.py +19 -16
  57. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/image/codecs/wic.py +8 -10
  58. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/input/controller_db.py +19 -23
  59. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/input/linux/evdev.py +3 -2
  60. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/input/win32/xinput.py +2 -2
  61. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/libs/darwin/cocoapy/cocoalibs.py +1 -0
  62. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/libs/win32/__init__.py +12 -1
  63. pyglet-2.0.10/pyglet/libs/win32/com.py +397 -0
  64. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/libs/win32/types.py +9 -1
  65. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/math.py +18 -43
  66. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/media/codecs/wmf.py +16 -22
  67. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/media/devices/base.py +28 -24
  68. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/media/devices/win32.py +93 -47
  69. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/media/drivers/base.py +6 -4
  70. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/media/drivers/directsound/adaptation.py +13 -8
  71. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/media/drivers/directsound/lib_dsound.py +0 -1
  72. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/media/drivers/listener.py +1 -3
  73. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/media/drivers/openal/adaptation.py +17 -7
  74. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/media/drivers/xaudio2/adaptation.py +2 -1
  75. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/media/drivers/xaudio2/interface.py +12 -9
  76. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/media/drivers/xaudio2/lib_xaudio2.py +16 -34
  77. pyglet-2.0.10/pyglet/media/mediathreads.py +129 -0
  78. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/media/player.py +8 -3
  79. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/model/__init__.py +4 -17
  80. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/model/codecs/obj.py +1 -0
  81. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/shapes.py +194 -143
  82. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/sprite.py +4 -17
  83. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/text/__init__.py +2 -0
  84. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/text/caret.py +2 -1
  85. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/text/layout.py +171 -189
  86. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/util.py +6 -35
  87. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/window/__init__.py +75 -35
  88. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/window/cocoa/__init__.py +28 -0
  89. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/window/cocoa/pyglet_textview.py +11 -4
  90. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/window/key.py +10 -1
  91. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/window/win32/__init__.py +37 -0
  92. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/window/xlib/__init__.py +142 -5
  93. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet.egg-info/PKG-INFO +3 -2
  94. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet.egg-info/SOURCES.txt +68 -2
  95. {pyglet-2.0.8 → pyglet-2.0.10}/tests/integration/app/test_eventloop.py +1 -2
  96. {pyglet-2.0.8 → pyglet-2.0.10}/tests/integration/image/test_imagegrid.py +3 -0
  97. {pyglet-2.0.8 → pyglet-2.0.10}/tests/integration/image/test_texture3d.py +3 -0
  98. {pyglet-2.0.8 → pyglet-2.0.10}/tests/integration/media/test_driver.py +15 -12
  99. pyglet-2.0.10/tests/interactive/screenshots/committed/tests.interactive.image.test_image.test_bmp_loading[rgb_16bpp.bmp].001.png +0 -0
  100. pyglet-2.0.10/tests/interactive/screenshots/committed/tests.interactive.image.test_image.test_bmp_loading[rgb_1bpp.bmp].001.png +0 -0
  101. pyglet-2.0.10/tests/interactive/screenshots/committed/tests.interactive.image.test_image.test_bmp_loading[rgb_24bpp.bmp].001.png +0 -0
  102. pyglet-2.0.10/tests/interactive/screenshots/committed/tests.interactive.image.test_image.test_bmp_loading[rgb_32bpp.bmp].001.png +0 -0
  103. pyglet-2.0.10/tests/interactive/screenshots/committed/tests.interactive.image.test_image.test_bmp_loading[rgb_4bpp.bmp].001.png +0 -0
  104. pyglet-2.0.10/tests/interactive/screenshots/committed/tests.interactive.image.test_image.test_bmp_loading[rgb_8bpp.bmp].001.png +0 -0
  105. pyglet-2.0.10/tests/interactive/screenshots/committed/tests.interactive.image.test_image.test_bmp_loading[rgba_32bpp.bmp].001.png +0 -0
  106. pyglet-2.0.10/tests/interactive/screenshots/committed/tests.interactive.image.test_image.test_buffer_copy.001.png +0 -0
  107. pyglet-2.0.10/tests/interactive/screenshots/committed/tests.interactive.image.test_image.test_buffer_saving.001.png +0 -0
  108. pyglet-2.0.10/tests/interactive/screenshots/committed/tests.interactive.image.test_image.test_checkerboard.001.png +0 -0
  109. pyglet-2.0.10/tests/interactive/screenshots/committed/tests.interactive.image.test_image.test_dds_loading[rgb_dxt1.dds].001.png +0 -0
  110. pyglet-2.0.10/tests/interactive/screenshots/committed/tests.interactive.image.test_image.test_dds_loading[rgba_dxt1.dds].001.png +0 -0
  111. pyglet-2.0.10/tests/interactive/screenshots/committed/tests.interactive.image.test_image.test_dds_loading[rgba_dxt3.dds].001.png +0 -0
  112. pyglet-2.0.10/tests/interactive/screenshots/committed/tests.interactive.image.test_image.test_dds_loading[rgba_dxt5.dds].001.png +0 -0
  113. pyglet-2.0.10/tests/interactive/screenshots/committed/tests.interactive.image.test_image.test_depth_buffer_saving.001.png +0 -0
  114. pyglet-2.0.10/tests/interactive/screenshots/committed/tests.interactive.image.test_image.test_gdkpixbuf2_loading[8bpp.gif].001.png +0 -0
  115. pyglet-2.0.10/tests/interactive/screenshots/committed/tests.interactive.image.test_image.test_gdkpixbuf2_loading[l.png].001.png +0 -0
  116. pyglet-2.0.10/tests/interactive/screenshots/committed/tests.interactive.image.test_image.test_gdkpixbuf2_loading[la.png].001.png +0 -0
  117. pyglet-2.0.10/tests/interactive/screenshots/committed/tests.interactive.image.test_image.test_gdkpixbuf2_loading[rgb.png].001.png +0 -0
  118. pyglet-2.0.10/tests/interactive/screenshots/committed/tests.interactive.image.test_image.test_gdkpixbuf2_loading[rgba.png].001.png +0 -0
  119. pyglet-2.0.10/tests/interactive/screenshots/committed/tests.interactive.image.test_image.test_pil_loading[la.png].001.png +0 -0
  120. pyglet-2.0.10/tests/interactive/screenshots/committed/tests.interactive.image.test_image.test_pil_loading[rgb.png].001.png +0 -0
  121. pyglet-2.0.10/tests/interactive/screenshots/committed/tests.interactive.image.test_image.test_pil_loading[rgba.png].001.png +0 -0
  122. pyglet-2.0.10/tests/interactive/screenshots/committed/tests.interactive.image.test_image.test_pil_saving[l.png].001.png +0 -0
  123. pyglet-2.0.10/tests/interactive/screenshots/committed/tests.interactive.image.test_image.test_pil_saving[la.png].001.png +0 -0
  124. pyglet-2.0.10/tests/interactive/screenshots/committed/tests.interactive.image.test_image.test_pypng_loading[la.png].001.png +0 -0
  125. pyglet-2.0.10/tests/interactive/screenshots/committed/tests.interactive.image.test_image.test_pypng_loading[rgb.png].001.png +0 -0
  126. pyglet-2.0.10/tests/interactive/screenshots/committed/tests.interactive.image.test_image.test_pypng_loading[rgb_8bpp.png].001.png +0 -0
  127. pyglet-2.0.10/tests/interactive/screenshots/committed/tests.interactive.image.test_image.test_pypng_loading[rgb_8bpp_trans.png].001.png +0 -0
  128. pyglet-2.0.10/tests/interactive/screenshots/committed/tests.interactive.image.test_image.test_pypng_loading[rgba.png].001.png +0 -0
  129. pyglet-2.0.10/tests/interactive/screenshots/committed/tests.interactive.image.test_image.test_pypng_saving[l.png].001.png +0 -0
  130. pyglet-2.0.10/tests/interactive/screenshots/committed/tests.interactive.image.test_image.test_pypng_saving[la.png].001.png +0 -0
  131. pyglet-2.0.10/tests/interactive/screenshots/committed/tests.interactive.image.test_image.test_pypng_saving[rgb.png].001.png +0 -0
  132. pyglet-2.0.10/tests/interactive/screenshots/committed/tests.interactive.image.test_image.test_pypng_saving[rgba.png].001.png +0 -0
  133. pyglet-2.0.10/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_bmp_loading[rgb_16bpp.bmp].001.png +0 -0
  134. pyglet-2.0.10/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_bmp_loading[rgb_1bpp.bmp].001.png +0 -0
  135. pyglet-2.0.10/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_bmp_loading[rgb_24bpp.bmp].001.png +0 -0
  136. pyglet-2.0.10/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_bmp_loading[rgb_32bpp.bmp].001.png +0 -0
  137. pyglet-2.0.10/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_bmp_loading[rgb_4bpp.bmp].001.png +0 -0
  138. pyglet-2.0.10/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_bmp_loading[rgb_8bpp.bmp].001.png +0 -0
  139. pyglet-2.0.10/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_bmp_loading[rgba_32bpp.bmp].001.png +0 -0
  140. pyglet-2.0.10/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_buffer_copy.001.png +0 -0
  141. pyglet-2.0.10/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_buffer_saving.001.png +0 -0
  142. pyglet-2.0.10/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_checkerboard.001.png +0 -0
  143. pyglet-2.0.10/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_dds_loading[rgb_dxt1.dds].001.png +0 -0
  144. pyglet-2.0.10/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_dds_loading[rgba_dxt1.dds].001.png +0 -0
  145. pyglet-2.0.10/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_dds_loading[rgba_dxt3.dds].001.png +0 -0
  146. pyglet-2.0.10/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_dds_loading[rgba_dxt5.dds].001.png +0 -0
  147. pyglet-2.0.10/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_depth_buffer_saving.001.png +0 -0
  148. pyglet-2.0.10/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_gdkpixbuf2_loading[8bpp.gif].001.png +0 -0
  149. pyglet-2.0.10/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_gdkpixbuf2_loading[l.png].001.png +0 -0
  150. pyglet-2.0.10/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_gdkpixbuf2_loading[la.png].001.png +0 -0
  151. pyglet-2.0.10/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_gdkpixbuf2_loading[rgb.png].001.png +0 -0
  152. pyglet-2.0.10/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_gdkpixbuf2_loading[rgba.png].001.png +0 -0
  153. pyglet-2.0.10/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_pil_loading[la.png].001.png +0 -0
  154. pyglet-2.0.10/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_pil_loading[rgb.png].001.png +0 -0
  155. pyglet-2.0.10/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_pil_loading[rgba.png].001.png +0 -0
  156. pyglet-2.0.10/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_pil_saving[l.png].001.png +0 -0
  157. pyglet-2.0.10/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_pil_saving[la.png].001.png +0 -0
  158. pyglet-2.0.10/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_pil_saving[rgb.png].001.png +0 -0
  159. pyglet-2.0.10/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_pil_saving[rgba.png].001.png +0 -0
  160. pyglet-2.0.10/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_pypng_loading[la.png].001.png +0 -0
  161. pyglet-2.0.10/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_pypng_loading[rgb.png].001.png +0 -0
  162. pyglet-2.0.10/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_pypng_loading[rgb_8bpp.png].001.png +0 -0
  163. pyglet-2.0.10/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_pypng_loading[rgb_8bpp_trans.png].001.png +0 -0
  164. pyglet-2.0.10/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_pypng_loading[rgba.png].001.png +0 -0
  165. pyglet-2.0.10/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_pypng_saving[l.png].001.png +0 -0
  166. pyglet-2.0.10/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_pypng_saving[la.png].001.png +0 -0
  167. pyglet-2.0.10/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_pypng_saving[rgb.png].001.png +0 -0
  168. pyglet-2.0.10/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_pypng_saving[rgba.png].001.png +0 -0
  169. pyglet-2.0.10/tests/interactive/shapes/test_shapes.py +179 -0
  170. {pyglet-2.0.8 → pyglet-2.0.10}/tests/interactive/text/test_inline_elements.py +20 -17
  171. {pyglet-2.0.8 → pyglet-2.0.10}/tests/interactive/text/test_inline_elements_style_change.py +15 -14
  172. {pyglet-2.0.8 → pyglet-2.0.10}/tests/interactive/text/test_multiline_wrap.py +18 -18
  173. {pyglet-2.0.8 → pyglet-2.0.10}/tests/interactive/text/test_plain.py +5 -5
  174. {pyglet-2.0.8 → pyglet-2.0.10}/tests/interactive/text/test_style.py +5 -5
  175. {pyglet-2.0.8 → pyglet-2.0.10}/tests/unit/conftest.py +5 -0
  176. {pyglet-2.0.8 → pyglet-2.0.10}/tests/unit/shapes/test_shapes.py +24 -2
  177. {pyglet-2.0.8 → pyglet-2.0.10}/tests/unit/test_events.py +31 -21
  178. {pyglet-2.0.8 → pyglet-2.0.10}/tools/gencontrollerdb.py +3 -3
  179. pyglet-2.0.8/experimental/geoshader_sprite.py +0 -367
  180. pyglet-2.0.8/pyglet/libs/win32/com.py +0 -340
  181. pyglet-2.0.8/pyglet/media/mediathreads.py +0 -152
  182. pyglet-2.0.8/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_bmp_loading[rgb_24bpp.bmp].001.png +0 -0
  183. pyglet-2.0.8/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_bmp_loading[rgb_32bpp.bmp].001.png +0 -0
  184. pyglet-2.0.8/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_bmp_loading[rgb_4bpp.bmp].001.png +0 -0
  185. pyglet-2.0.8/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_bmp_loading[rgb_8bpp.bmp].001.png +0 -0
  186. pyglet-2.0.8/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_bmp_loading[rgba_32bpp.bmp].001.png +0 -0
  187. pyglet-2.0.8/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_checkerboard.001.png +0 -0
  188. pyglet-2.0.8/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_dds_loading[rgb_dxt1.dds].001.png +0 -0
  189. pyglet-2.0.8/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_dds_loading[rgba_dxt1.dds].001.png +0 -0
  190. pyglet-2.0.8/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_dds_loading[rgba_dxt3.dds].001.png +0 -0
  191. pyglet-2.0.8/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_dds_loading[rgba_dxt5.dds].001.png +0 -0
  192. pyglet-2.0.8/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_gdkpixbuf2_loading[8bpp.gif].001.png +0 -0
  193. pyglet-2.0.8/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_gdkpixbuf2_loading[l.png].001.png +0 -0
  194. pyglet-2.0.8/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_gdkpixbuf2_loading[la.png].001.png +0 -0
  195. pyglet-2.0.8/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_gdkpixbuf2_loading[rgb.png].001.png +0 -0
  196. pyglet-2.0.8/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_gdkpixbuf2_loading[rgba.png].001.png +0 -0
  197. pyglet-2.0.8/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_pil_loading[la.png].001.png +0 -0
  198. pyglet-2.0.8/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_pil_loading[rgb.png].001.png +0 -0
  199. pyglet-2.0.8/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_pil_loading[rgba.png].001.png +0 -0
  200. pyglet-2.0.8/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_pypng_loading[la.png].001.png +0 -0
  201. pyglet-2.0.8/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_pypng_loading[rgba.png].001.png +0 -0
  202. {pyglet-2.0.8 → pyglet-2.0.10}/.coveragerc +0 -0
  203. {pyglet-2.0.8 → pyglet-2.0.10}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
  204. {pyglet-2.0.8 → pyglet-2.0.10}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
  205. {pyglet-2.0.8 → pyglet-2.0.10}/.github/ISSUE_TEMPLATE/questions--or-other.md +0 -0
  206. {pyglet-2.0.8 → pyglet-2.0.10}/.github/workflows/codeql.yml +0 -0
  207. {pyglet-2.0.8 → pyglet-2.0.10}/LICENSE +0 -0
  208. {pyglet-2.0.8 → pyglet-2.0.10}/MANIFEST.in +0 -0
  209. {pyglet-2.0.8 → pyglet-2.0.10}/contrib/aseprite_codec/README +0 -0
  210. {pyglet-2.0.8 → pyglet-2.0.10}/contrib/aseprite_codec/asedemo.py +0 -0
  211. {pyglet-2.0.8 → pyglet-2.0.10}/contrib/aseprite_codec/aseprite.py +0 -0
  212. {pyglet-2.0.8 → pyglet-2.0.10}/contrib/aseprite_codec/running.ase +0 -0
  213. {pyglet-2.0.8 → pyglet-2.0.10}/contrib/logo3d/logo3d.jpg +0 -0
  214. {pyglet-2.0.8 → pyglet-2.0.10}/contrib/logo3d/logo3d.obj.zip +0 -0
  215. {pyglet-2.0.8 → pyglet-2.0.10}/contrib/logo3d/logo3d.wings +0 -0
  216. {pyglet-2.0.8 → pyglet-2.0.10}/contrib/scenemanager.py +0 -0
  217. {pyglet-2.0.8 → pyglet-2.0.10}/contrib/toys/follow_mouse.py +0 -0
  218. {pyglet-2.0.8 → pyglet-2.0.10}/doc/Makefile +0 -0
  219. {pyglet-2.0.8 → pyglet-2.0.10}/doc/README.md +0 -0
  220. {pyglet-2.0.8 → pyglet-2.0.10}/doc/_static/favicon.ico +0 -0
  221. {pyglet-2.0.8 → pyglet-2.0.10}/doc/_static/logo.png +0 -0
  222. {pyglet-2.0.8 → pyglet-2.0.10}/doc/_static/logo5.svg +0 -0
  223. {pyglet-2.0.8 → pyglet-2.0.10}/doc/_static/relatedlogo.png +0 -0
  224. {pyglet-2.0.8 → pyglet-2.0.10}/doc/external_resources.rst +0 -0
  225. {pyglet-2.0.8 → pyglet-2.0.10}/doc/index.rst +0 -0
  226. {pyglet-2.0.8 → pyglet-2.0.10}/doc/internal/contributing.rst +0 -0
  227. {pyglet-2.0.8 → pyglet-2.0.10}/doc/internal/dist.rst +0 -0
  228. {pyglet-2.0.8 → pyglet-2.0.10}/doc/internal/doc.rst +0 -0
  229. {pyglet-2.0.8 → pyglet-2.0.10}/doc/internal/generated.rst +0 -0
  230. {pyglet-2.0.8 → pyglet-2.0.10}/doc/internal/gl.rst +0 -0
  231. {pyglet-2.0.8 → pyglet-2.0.10}/doc/internal/media_logging_manual.rst +0 -0
  232. {pyglet-2.0.8 → pyglet-2.0.10}/doc/internal/media_manual.rst +0 -0
  233. {pyglet-2.0.8 → pyglet-2.0.10}/doc/internal/testing.rst +0 -0
  234. {pyglet-2.0.8 → pyglet-2.0.10}/doc/internal/virtualenv.rst +0 -0
  235. {pyglet-2.0.8 → pyglet-2.0.10}/doc/internal/wraptypes-class.svg +0 -0
  236. {pyglet-2.0.8 → pyglet-2.0.10}/doc/internal/wraptypes.rst +0 -0
  237. {pyglet-2.0.8 → pyglet-2.0.10}/doc/make.bat +0 -0
  238. {pyglet-2.0.8 → pyglet-2.0.10}/doc/modules/app.rst +0 -0
  239. {pyglet-2.0.8 → pyglet-2.0.10}/doc/modules/canvas.rst +0 -0
  240. {pyglet-2.0.8 → pyglet-2.0.10}/doc/modules/clock.rst +0 -0
  241. {pyglet-2.0.8 → pyglet-2.0.10}/doc/modules/event.rst +0 -0
  242. {pyglet-2.0.8 → pyglet-2.0.10}/doc/modules/font.rst +0 -0
  243. {pyglet-2.0.8 → pyglet-2.0.10}/doc/modules/gl.rst +0 -0
  244. {pyglet-2.0.8 → pyglet-2.0.10}/doc/modules/graphics/allocation.rst +0 -0
  245. {pyglet-2.0.8 → pyglet-2.0.10}/doc/modules/graphics/index.rst +0 -0
  246. {pyglet-2.0.8 → pyglet-2.0.10}/doc/modules/graphics/shader.rst +0 -0
  247. {pyglet-2.0.8 → pyglet-2.0.10}/doc/modules/graphics/vertexbuffer.rst +0 -0
  248. {pyglet-2.0.8 → pyglet-2.0.10}/doc/modules/graphics/vertexdomain.rst +0 -0
  249. {pyglet-2.0.8 → pyglet-2.0.10}/doc/modules/gui.rst +0 -0
  250. {pyglet-2.0.8 → pyglet-2.0.10}/doc/modules/image/animation.rst +0 -0
  251. {pyglet-2.0.8 → pyglet-2.0.10}/doc/modules/image/atlas.rst +0 -0
  252. {pyglet-2.0.8 → pyglet-2.0.10}/doc/modules/image/index.rst +0 -0
  253. {pyglet-2.0.8 → pyglet-2.0.10}/doc/modules/info.rst +0 -0
  254. {pyglet-2.0.8 → pyglet-2.0.10}/doc/modules/input.rst +0 -0
  255. {pyglet-2.0.8 → pyglet-2.0.10}/doc/modules/math.rst +0 -0
  256. {pyglet-2.0.8 → pyglet-2.0.10}/doc/modules/media.rst +0 -0
  257. {pyglet-2.0.8 → pyglet-2.0.10}/doc/modules/media_synthesis.rst +0 -0
  258. {pyglet-2.0.8 → pyglet-2.0.10}/doc/modules/pyglet.rst +0 -0
  259. {pyglet-2.0.8 → pyglet-2.0.10}/doc/modules/resource.rst +0 -0
  260. {pyglet-2.0.8 → pyglet-2.0.10}/doc/modules/sprite.rst +0 -0
  261. {pyglet-2.0.8 → pyglet-2.0.10}/doc/modules/text/caret.rst +0 -0
  262. {pyglet-2.0.8 → pyglet-2.0.10}/doc/modules/text/document.rst +0 -0
  263. {pyglet-2.0.8 → pyglet-2.0.10}/doc/modules/text/index.rst +0 -0
  264. {pyglet-2.0.8 → pyglet-2.0.10}/doc/modules/text/layout.rst +0 -0
  265. {pyglet-2.0.8 → pyglet-2.0.10}/doc/modules/window.rst +0 -0
  266. {pyglet-2.0.8 → pyglet-2.0.10}/doc/modules/window_mouse.rst +0 -0
  267. {pyglet-2.0.8 → pyglet-2.0.10}/doc/programming_guide/context.rst +0 -0
  268. {pyglet-2.0.8 → pyglet-2.0.10}/doc/programming_guide/debug.rst +0 -0
  269. {pyglet-2.0.8 → pyglet-2.0.10}/doc/programming_guide/events.rst +0 -0
  270. {pyglet-2.0.8 → pyglet-2.0.10}/doc/programming_guide/examplegame.rst +0 -0
  271. {pyglet-2.0.8 → pyglet-2.0.10}/doc/programming_guide/gl.rst +0 -0
  272. {pyglet-2.0.8 → pyglet-2.0.10}/doc/programming_guide/graphics.rst +0 -0
  273. {pyglet-2.0.8 → pyglet-2.0.10}/doc/programming_guide/image.rst +0 -0
  274. {pyglet-2.0.8 → pyglet-2.0.10}/doc/programming_guide/img/abstract_image.png +0 -0
  275. {pyglet-2.0.8 → pyglet-2.0.10}/doc/programming_guide/img/abstract_image.svg +0 -0
  276. {pyglet-2.0.8 → pyglet-2.0.10}/doc/programming_guide/img/buffer_image.png +0 -0
  277. {pyglet-2.0.8 → pyglet-2.0.10}/doc/programming_guide/img/buffer_image.svg +0 -0
  278. {pyglet-2.0.8 → pyglet-2.0.10}/doc/programming_guide/img/context_flow.png +0 -0
  279. {pyglet-2.0.8 → pyglet-2.0.10}/doc/programming_guide/img/context_flow.svg +0 -0
  280. {pyglet-2.0.8 → pyglet-2.0.10}/doc/programming_guide/img/cursor_mac_crosshair.png +0 -0
  281. {pyglet-2.0.8 → pyglet-2.0.10}/doc/programming_guide/img/cursor_mac_default.png +0 -0
  282. {pyglet-2.0.8 → pyglet-2.0.10}/doc/programming_guide/img/cursor_mac_hand.png +0 -0
  283. {pyglet-2.0.8 → pyglet-2.0.10}/doc/programming_guide/img/cursor_mac_no.png +0 -0
  284. {pyglet-2.0.8 → pyglet-2.0.10}/doc/programming_guide/img/cursor_mac_size_down.png +0 -0
  285. {pyglet-2.0.8 → pyglet-2.0.10}/doc/programming_guide/img/cursor_mac_size_left.png +0 -0
  286. {pyglet-2.0.8 → pyglet-2.0.10}/doc/programming_guide/img/cursor_mac_size_left_right.png +0 -0
  287. {pyglet-2.0.8 → pyglet-2.0.10}/doc/programming_guide/img/cursor_mac_size_right.png +0 -0
  288. {pyglet-2.0.8 → pyglet-2.0.10}/doc/programming_guide/img/cursor_mac_size_up.png +0 -0
  289. {pyglet-2.0.8 → pyglet-2.0.10}/doc/programming_guide/img/cursor_mac_size_up_down.png +0 -0
  290. {pyglet-2.0.8 → pyglet-2.0.10}/doc/programming_guide/img/cursor_mac_text.png +0 -0
  291. {pyglet-2.0.8 → pyglet-2.0.10}/doc/programming_guide/img/cursor_mac_wait.png +0 -0
  292. {pyglet-2.0.8 → pyglet-2.0.10}/doc/programming_guide/img/cursor_win_crosshair.png +0 -0
  293. {pyglet-2.0.8 → pyglet-2.0.10}/doc/programming_guide/img/cursor_win_default.png +0 -0
  294. {pyglet-2.0.8 → pyglet-2.0.10}/doc/programming_guide/img/cursor_win_hand.png +0 -0
  295. {pyglet-2.0.8 → pyglet-2.0.10}/doc/programming_guide/img/cursor_win_help.png +0 -0
  296. {pyglet-2.0.8 → pyglet-2.0.10}/doc/programming_guide/img/cursor_win_no.png +0 -0
  297. {pyglet-2.0.8 → pyglet-2.0.10}/doc/programming_guide/img/cursor_win_size.png +0 -0
  298. {pyglet-2.0.8 → pyglet-2.0.10}/doc/programming_guide/img/cursor_win_size_left_right.png +0 -0
  299. {pyglet-2.0.8 → pyglet-2.0.10}/doc/programming_guide/img/cursor_win_size_nesw.png +0 -0
  300. {pyglet-2.0.8 → pyglet-2.0.10}/doc/programming_guide/img/cursor_win_size_nwse.png +0 -0
  301. {pyglet-2.0.8 → pyglet-2.0.10}/doc/programming_guide/img/cursor_win_size_up_down.png +0 -0
  302. {pyglet-2.0.8 → pyglet-2.0.10}/doc/programming_guide/img/cursor_win_text.png +0 -0
  303. {pyglet-2.0.8 → pyglet-2.0.10}/doc/programming_guide/img/cursor_win_wait.png +0 -0
  304. {pyglet-2.0.8 → pyglet-2.0.10}/doc/programming_guide/img/cursor_win_wait_arrow.png +0 -0
  305. {pyglet-2.0.8 → pyglet-2.0.10}/doc/programming_guide/img/explosion.png +0 -0
  306. {pyglet-2.0.8 → pyglet-2.0.10}/doc/programming_guide/img/font_metrics.png +0 -0
  307. {pyglet-2.0.8 → pyglet-2.0.10}/doc/programming_guide/img/font_metrics.svg +0 -0
  308. {pyglet-2.0.8 → pyglet-2.0.10}/doc/programming_guide/img/image_classes.png +0 -0
  309. {pyglet-2.0.8 → pyglet-2.0.10}/doc/programming_guide/img/image_classes.svg +0 -0
  310. {pyglet-2.0.8 → pyglet-2.0.10}/doc/programming_guide/img/image_grid.png +0 -0
  311. {pyglet-2.0.8 → pyglet-2.0.10}/doc/programming_guide/img/image_grid.svg +0 -0
  312. {pyglet-2.0.8 → pyglet-2.0.10}/doc/programming_guide/img/image_sequence.png +0 -0
  313. {pyglet-2.0.8 → pyglet-2.0.10}/doc/programming_guide/img/image_sequence.svg +0 -0
  314. {pyglet-2.0.8 → pyglet-2.0.10}/doc/programming_guide/img/mouse_coordinates.png +0 -0
  315. {pyglet-2.0.8 → pyglet-2.0.10}/doc/programming_guide/img/mouse_coordinates.svg +0 -0
  316. {pyglet-2.0.8 → pyglet-2.0.10}/doc/programming_guide/img/screens.png +0 -0
  317. {pyglet-2.0.8 → pyglet-2.0.10}/doc/programming_guide/img/screens.svg +0 -0
  318. {pyglet-2.0.8 → pyglet-2.0.10}/doc/programming_guide/img/text_classes.png +0 -0
  319. {pyglet-2.0.8 → pyglet-2.0.10}/doc/programming_guide/img/text_classes.svg +0 -0
  320. {pyglet-2.0.8 → pyglet-2.0.10}/doc/programming_guide/img/window_location.png +0 -0
  321. {pyglet-2.0.8 → pyglet-2.0.10}/doc/programming_guide/img/window_location.svg +0 -0
  322. {pyglet-2.0.8 → pyglet-2.0.10}/doc/programming_guide/img/window_osx_borderless.png +0 -0
  323. {pyglet-2.0.8 → pyglet-2.0.10}/doc/programming_guide/img/window_osx_default.png +0 -0
  324. {pyglet-2.0.8 → pyglet-2.0.10}/doc/programming_guide/img/window_osx_dialog.png +0 -0
  325. {pyglet-2.0.8 → pyglet-2.0.10}/doc/programming_guide/img/window_osx_tool.png +0 -0
  326. {pyglet-2.0.8 → pyglet-2.0.10}/doc/programming_guide/img/window_xp_default.png +0 -0
  327. {pyglet-2.0.8 → pyglet-2.0.10}/doc/programming_guide/img/window_xp_dialog.png +0 -0
  328. {pyglet-2.0.8 → pyglet-2.0.10}/doc/programming_guide/img/window_xp_overlay.png +0 -0
  329. {pyglet-2.0.8 → pyglet-2.0.10}/doc/programming_guide/img/window_xp_tool.png +0 -0
  330. {pyglet-2.0.8 → pyglet-2.0.10}/doc/programming_guide/img/window_xp_transparent.png +0 -0
  331. {pyglet-2.0.8 → pyglet-2.0.10}/doc/programming_guide/input.rst +0 -0
  332. {pyglet-2.0.8 → pyglet-2.0.10}/doc/programming_guide/installation.rst +0 -0
  333. {pyglet-2.0.8 → pyglet-2.0.10}/doc/programming_guide/math.rst +0 -0
  334. {pyglet-2.0.8 → pyglet-2.0.10}/doc/programming_guide/migration.rst +0 -0
  335. {pyglet-2.0.8 → pyglet-2.0.10}/doc/programming_guide/mouse.rst +0 -0
  336. {pyglet-2.0.8 → pyglet-2.0.10}/doc/programming_guide/options.rst +0 -0
  337. {pyglet-2.0.8 → pyglet-2.0.10}/doc/programming_guide/resources.rst +0 -0
  338. {pyglet-2.0.8 → pyglet-2.0.10}/doc/programming_guide/shapes.rst +0 -0
  339. {pyglet-2.0.8 → pyglet-2.0.10}/doc/programming_guide/text.rst +0 -0
  340. {pyglet-2.0.8 → pyglet-2.0.10}/doc/programming_guide/time.rst +0 -0
  341. {pyglet-2.0.8 → pyglet-2.0.10}/doc/programming_guide/windowing.rst +0 -0
  342. {pyglet-2.0.8 → pyglet-2.0.10}/doc/requirements.txt +0 -0
  343. {pyglet-2.0.8 → pyglet-2.0.10}/examples/events/events_key_state_handler.py +0 -0
  344. {pyglet-2.0.8 → pyglet-2.0.10}/examples/events/register_event_type.py +0 -0
  345. {pyglet-2.0.8 → pyglet-2.0.10}/examples/events/window_events.py +0 -0
  346. {pyglet-2.0.8 → pyglet-2.0.10}/examples/events/window_platform_event.py +0 -0
  347. {pyglet-2.0.8 → pyglet-2.0.10}/examples/file_dialog.py +0 -0
  348. {pyglet-2.0.8 → pyglet-2.0.10}/examples/game/resources/asteroid.png +0 -0
  349. {pyglet-2.0.8 → pyglet-2.0.10}/examples/game/resources/bullet.png +0 -0
  350. {pyglet-2.0.8 → pyglet-2.0.10}/examples/game/resources/bullet.wav +0 -0
  351. {pyglet-2.0.8 → pyglet-2.0.10}/examples/game/resources/engine_flame.png +0 -0
  352. {pyglet-2.0.8 → pyglet-2.0.10}/examples/game/resources/player.png +0 -0
  353. {pyglet-2.0.8 → pyglet-2.0.10}/examples/game/version1/asteroid.py +0 -0
  354. {pyglet-2.0.8 → pyglet-2.0.10}/examples/game/version1/game/__init__.py +0 -0
  355. {pyglet-2.0.8 → pyglet-2.0.10}/examples/game/version1/game/load.py +0 -0
  356. {pyglet-2.0.8 → pyglet-2.0.10}/examples/game/version1/game/resources.py +0 -0
  357. {pyglet-2.0.8 → pyglet-2.0.10}/examples/game/version2/asteroid.py +0 -0
  358. {pyglet-2.0.8 → pyglet-2.0.10}/examples/game/version2/game/__init__.py +0 -0
  359. {pyglet-2.0.8 → pyglet-2.0.10}/examples/game/version2/game/load.py +0 -0
  360. {pyglet-2.0.8 → pyglet-2.0.10}/examples/game/version2/game/physicalobject.py +0 -0
  361. {pyglet-2.0.8 → pyglet-2.0.10}/examples/game/version2/game/player.py +0 -0
  362. {pyglet-2.0.8 → pyglet-2.0.10}/examples/game/version2/game/resources.py +0 -0
  363. {pyglet-2.0.8 → pyglet-2.0.10}/examples/game/version3/asteroid.py +0 -0
  364. {pyglet-2.0.8 → pyglet-2.0.10}/examples/game/version3/game/__init__.py +0 -0
  365. {pyglet-2.0.8 → pyglet-2.0.10}/examples/game/version3/game/load.py +0 -0
  366. {pyglet-2.0.8 → pyglet-2.0.10}/examples/game/version3/game/physicalobject.py +0 -0
  367. {pyglet-2.0.8 → pyglet-2.0.10}/examples/game/version3/game/player.py +0 -0
  368. {pyglet-2.0.8 → pyglet-2.0.10}/examples/game/version3/game/resources.py +0 -0
  369. {pyglet-2.0.8 → pyglet-2.0.10}/examples/game/version3/game/util.py +0 -0
  370. {pyglet-2.0.8 → pyglet-2.0.10}/examples/game/version4/asteroid.py +0 -0
  371. {pyglet-2.0.8 → pyglet-2.0.10}/examples/game/version4/game/__init__.py +0 -0
  372. {pyglet-2.0.8 → pyglet-2.0.10}/examples/game/version4/game/asteroid.py +0 -0
  373. {pyglet-2.0.8 → pyglet-2.0.10}/examples/game/version4/game/bullet.py +0 -0
  374. {pyglet-2.0.8 → pyglet-2.0.10}/examples/game/version4/game/load.py +0 -0
  375. {pyglet-2.0.8 → pyglet-2.0.10}/examples/game/version4/game/physicalobject.py +0 -0
  376. {pyglet-2.0.8 → pyglet-2.0.10}/examples/game/version4/game/player.py +0 -0
  377. {pyglet-2.0.8 → pyglet-2.0.10}/examples/game/version4/game/resources.py +0 -0
  378. {pyglet-2.0.8 → pyglet-2.0.10}/examples/game/version4/game/util.py +0 -0
  379. {pyglet-2.0.8 → pyglet-2.0.10}/examples/game/version5/asteroid.py +0 -0
  380. {pyglet-2.0.8 → pyglet-2.0.10}/examples/game/version5/game/__init__.py +0 -0
  381. {pyglet-2.0.8 → pyglet-2.0.10}/examples/game/version5/game/asteroid.py +0 -0
  382. {pyglet-2.0.8 → pyglet-2.0.10}/examples/game/version5/game/bullet.py +0 -0
  383. {pyglet-2.0.8 → pyglet-2.0.10}/examples/game/version5/game/load.py +0 -0
  384. {pyglet-2.0.8 → pyglet-2.0.10}/examples/game/version5/game/physicalobject.py +0 -0
  385. {pyglet-2.0.8 → pyglet-2.0.10}/examples/game/version5/game/player.py +0 -0
  386. {pyglet-2.0.8 → pyglet-2.0.10}/examples/game/version5/game/resources.py +0 -0
  387. {pyglet-2.0.8 → pyglet-2.0.10}/examples/game/version5/game/util.py +0 -0
  388. {pyglet-2.0.8 → pyglet-2.0.10}/examples/graphics/image_convert.py +0 -0
  389. {pyglet-2.0.8 → pyglet-2.0.10}/examples/graphics/image_display.py +0 -0
  390. {pyglet-2.0.8 → pyglet-2.0.10}/examples/gui/bar.png +0 -0
  391. {pyglet-2.0.8 → pyglet-2.0.10}/examples/gui/button_down.png +0 -0
  392. {pyglet-2.0.8 → pyglet-2.0.10}/examples/gui/button_hover.png +0 -0
  393. {pyglet-2.0.8 → pyglet-2.0.10}/examples/gui/button_up.png +0 -0
  394. {pyglet-2.0.8 → pyglet-2.0.10}/examples/gui/knob.png +0 -0
  395. {pyglet-2.0.8 → pyglet-2.0.10}/examples/gui/widgets.py +0 -0
  396. {pyglet-2.0.8 → pyglet-2.0.10}/examples/hello_world.py +0 -0
  397. {pyglet-2.0.8 → pyglet-2.0.10}/examples/input/apple_remote.py +0 -0
  398. {pyglet-2.0.8 → pyglet-2.0.10}/examples/input/input.py +0 -0
  399. {pyglet-2.0.8 → pyglet-2.0.10}/examples/input/joystick.py +0 -0
  400. {pyglet-2.0.8 → pyglet-2.0.10}/examples/input/tablet.py +0 -0
  401. {pyglet-2.0.8 → pyglet-2.0.10}/examples/media/media_player.py +0 -0
  402. {pyglet-2.0.8 → pyglet-2.0.10}/examples/media/noisy/README +0 -0
  403. {pyglet-2.0.8 → pyglet-2.0.10}/examples/media/noisy/ball.png +0 -0
  404. {pyglet-2.0.8 → pyglet-2.0.10}/examples/media/noisy/ball.wav +0 -0
  405. {pyglet-2.0.8 → pyglet-2.0.10}/examples/media/noisy/noisy.py +0 -0
  406. {pyglet-2.0.8 → pyglet-2.0.10}/examples/media/synthesizer.py +0 -0
  407. {pyglet-2.0.8 → pyglet-2.0.10}/examples/media/video.py +0 -0
  408. {pyglet-2.0.8 → pyglet-2.0.10}/examples/model/box.mtl +0 -0
  409. {pyglet-2.0.8 → pyglet-2.0.10}/examples/model/box.obj +0 -0
  410. {pyglet-2.0.8 → pyglet-2.0.10}/examples/model/logo3d.mtl +0 -0
  411. {pyglet-2.0.8 → pyglet-2.0.10}/examples/model/logo3d.obj +0 -0
  412. {pyglet-2.0.8 → pyglet-2.0.10}/examples/model/model.py +0 -0
  413. {pyglet-2.0.8 → pyglet-2.0.10}/examples/model/pyglet.png +0 -0
  414. {pyglet-2.0.8 → pyglet-2.0.10}/examples/opengl/egl_context.py +0 -0
  415. {pyglet-2.0.8 → pyglet-2.0.10}/examples/opengl/opengl.py +0 -0
  416. {pyglet-2.0.8 → pyglet-2.0.10}/examples/opengl/opengl_context.py +0 -0
  417. {pyglet-2.0.8 → pyglet-2.0.10}/examples/opengl/opengl_core.py +0 -0
  418. {pyglet-2.0.8 → pyglet-2.0.10}/examples/opengl/opengl_scissor.py +0 -0
  419. {pyglet-2.0.8 → pyglet-2.0.10}/examples/opengl/opengl_shader.py +0 -0
  420. {pyglet-2.0.8 → pyglet-2.0.10}/examples/opengl/pyglet.png +0 -0
  421. {pyglet-2.0.8 → pyglet-2.0.10}/examples/programming_guide/animation.py +0 -0
  422. {pyglet-2.0.8 → pyglet-2.0.10}/examples/programming_guide/dinosaur.gif +0 -0
  423. {pyglet-2.0.8 → pyglet-2.0.10}/examples/programming_guide/events.py +0 -0
  424. {pyglet-2.0.8 → pyglet-2.0.10}/examples/programming_guide/hello_world.py +0 -0
  425. {pyglet-2.0.8 → pyglet-2.0.10}/examples/programming_guide/image_viewer.py +0 -0
  426. {pyglet-2.0.8 → pyglet-2.0.10}/examples/programming_guide/kitten.jpg +0 -0
  427. {pyglet-2.0.8 → pyglet-2.0.10}/examples/programming_guide/window_subclass.py +0 -0
  428. {pyglet-2.0.8 → pyglet-2.0.10}/examples/resources/kitten.jpg +0 -0
  429. {pyglet-2.0.8 → pyglet-2.0.10}/examples/resources/pyglet.png +0 -0
  430. {pyglet-2.0.8 → pyglet-2.0.10}/examples/sprite/depth_sprite.py +0 -0
  431. {pyglet-2.0.8 → pyglet-2.0.10}/examples/sprite/display_sprite.py +0 -0
  432. {pyglet-2.0.8 → pyglet-2.0.10}/examples/sprite/multi_texture_sprite.py +0 -0
  433. {pyglet-2.0.8 → pyglet-2.0.10}/examples/sprite/sprite_batching.py +0 -0
  434. {pyglet-2.0.8 → pyglet-2.0.10}/examples/text/advanced_font.py +0 -0
  435. {pyglet-2.0.8 → pyglet-2.0.10}/examples/text/font_comparison.py +0 -0
  436. {pyglet-2.0.8 → pyglet-2.0.10}/examples/text/html_label.py +0 -0
  437. {pyglet-2.0.8 → pyglet-2.0.10}/examples/text/pyglet.png +0 -0
  438. {pyglet-2.0.8 → pyglet-2.0.10}/examples/text/text_input.py +0 -0
  439. {pyglet-2.0.8 → pyglet-2.0.10}/examples/timer.py +0 -0
  440. {pyglet-2.0.8 → pyglet-2.0.10}/examples/window/camera.py +0 -0
  441. {pyglet-2.0.8 → pyglet-2.0.10}/examples/window/camera_group.py +0 -0
  442. {pyglet-2.0.8 → pyglet-2.0.10}/examples/window/multiple_windows.py +0 -0
  443. {pyglet-2.0.8 → pyglet-2.0.10}/examples/window/overlay_window.py +0 -0
  444. {pyglet-2.0.8 → pyglet-2.0.10}/examples/window/transparent_window.py +0 -0
  445. {pyglet-2.0.8 → pyglet-2.0.10}/experimental/dist_field/README +0 -0
  446. {pyglet-2.0.8 → pyglet-2.0.10}/experimental/dist_field/genfield.py +0 -0
  447. {pyglet-2.0.8 → pyglet-2.0.10}/experimental/dist_field/py.df.png +0 -0
  448. {pyglet-2.0.8 → pyglet-2.0.10}/experimental/dist_field/py.png +0 -0
  449. {pyglet-2.0.8 → pyglet-2.0.10}/experimental/dist_field/renderfield.py +0 -0
  450. {pyglet-2.0.8 → pyglet-2.0.10}/experimental/flaccodec.py +0 -0
  451. {pyglet-2.0.8 → pyglet-2.0.10}/experimental/hello_world.svg +0 -0
  452. {pyglet-2.0.8 → pyglet-2.0.10}/experimental/spritebenchmark.py +0 -0
  453. {pyglet-2.0.8 → pyglet-2.0.10}/experimental/svg_test.py +0 -0
  454. {pyglet-2.0.8 → pyglet-2.0.10}/experimental/wayland/gbm_egl_context.py +0 -0
  455. {pyglet-2.0.8 → pyglet-2.0.10}/experimental/win32priority.py +0 -0
  456. {pyglet-2.0.8 → pyglet-2.0.10}/make.py +0 -0
  457. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/app/__init__.py +0 -0
  458. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/app/cocoa.py +0 -0
  459. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/app/win32.py +0 -0
  460. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/app/xlib.py +0 -0
  461. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/canvas/__init__.py +0 -0
  462. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/canvas/base.py +0 -0
  463. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/canvas/headless.py +0 -0
  464. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/canvas/win32.py +0 -0
  465. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/canvas/xlib.py +0 -0
  466. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/canvas/xlib_vidmoderestore.py +0 -0
  467. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/extlibs/__init__.py +0 -0
  468. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/extlibs/png.py +0 -0
  469. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/font/__init__.py +0 -0
  470. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/font/base.py +0 -0
  471. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/font/fontconfig.py +0 -0
  472. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/font/freetype.py +0 -0
  473. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/font/freetype_lib.py +0 -0
  474. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/font/quartz.py +0 -0
  475. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/font/ttf.py +0 -0
  476. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/font/user.py +0 -0
  477. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/font/win32query.py +0 -0
  478. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/gl/__init__.py +0 -0
  479. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/gl/agl.py +0 -0
  480. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/gl/cocoa.py +0 -0
  481. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/gl/gl.py +0 -0
  482. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/gl/gl_compat.py +0 -0
  483. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/gl/glx.py +0 -0
  484. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/gl/glx_info.py +0 -0
  485. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/gl/glxext_arb.py +0 -0
  486. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/gl/glxext_mesa.py +0 -0
  487. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/gl/glxext_nv.py +0 -0
  488. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/gl/headless.py +0 -0
  489. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/gl/lib_agl.py +0 -0
  490. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/gl/lib_glx.py +0 -0
  491. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/gl/lib_wgl.py +0 -0
  492. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/gl/wgl.py +0 -0
  493. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/gl/wgl_info.py +0 -0
  494. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/gl/wglext_arb.py +0 -0
  495. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/gl/wglext_nv.py +0 -0
  496. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/gl/xlib.py +0 -0
  497. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/graphics/allocation.py +0 -0
  498. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/gui/__init__.py +0 -0
  499. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/image/animation.py +0 -0
  500. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/image/codecs/__init__.py +0 -0
  501. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/image/codecs/bmp.py +0 -0
  502. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/image/codecs/dds.py +0 -0
  503. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/image/codecs/gdiplus.py +0 -0
  504. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/image/codecs/gdkpixbuf2.py +0 -0
  505. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/image/codecs/gif.py +0 -0
  506. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/image/codecs/pil.py +0 -0
  507. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/image/codecs/png.py +0 -0
  508. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/image/codecs/quartz.py +0 -0
  509. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/image/codecs/s3tc.py +0 -0
  510. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/info.py +0 -0
  511. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/input/__init__.py +0 -0
  512. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/input/base.py +0 -0
  513. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/input/controller.py +0 -0
  514. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/input/linux/__init__.py +0 -0
  515. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/input/linux/evdev_constants.py +0 -0
  516. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/input/linux/x11_xinput.py +0 -0
  517. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/input/linux/x11_xinput_tablet.py +0 -0
  518. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/input/macos/__init__.py +0 -0
  519. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/input/macos/darwin_hid.py +0 -0
  520. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/input/win32/__init__.py +0 -0
  521. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/input/win32/directinput.py +0 -0
  522. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/input/win32/wintab.py +0 -0
  523. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/lib.py +0 -0
  524. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/libs/__init__.py +0 -0
  525. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/libs/darwin/__init__.py +0 -0
  526. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/libs/darwin/cocoapy/__init__.py +0 -0
  527. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/libs/darwin/cocoapy/cocoatypes.py +0 -0
  528. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/libs/darwin/cocoapy/runtime.py +0 -0
  529. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/libs/darwin/coreaudio.py +0 -0
  530. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/libs/darwin/quartzkey.py +0 -0
  531. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/libs/egl/__init__.py +0 -0
  532. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/libs/egl/egl.py +0 -0
  533. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/libs/egl/eglext.py +0 -0
  534. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/libs/egl/lib.py +0 -0
  535. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/libs/wayland/__init__.py +0 -0
  536. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/libs/wayland/gbm.py +0 -0
  537. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/libs/wayland/xkbcommon.py +0 -0
  538. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/libs/win32/constants.py +0 -0
  539. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/libs/win32/context_managers.py +0 -0
  540. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/libs/win32/dinput.py +0 -0
  541. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/libs/win32/libwintab.py +0 -0
  542. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/libs/win32/winkey.py +0 -0
  543. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/libs/x11/__init__.py +0 -0
  544. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/libs/x11/cursorfont.py +0 -0
  545. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/libs/x11/xf86vmode.py +0 -0
  546. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/libs/x11/xinerama.py +0 -0
  547. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/libs/x11/xinput.py +0 -0
  548. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/libs/x11/xlib.py +0 -0
  549. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/libs/x11/xsync.py +0 -0
  550. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/media/__init__.py +0 -0
  551. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/media/buffered_logger.py +0 -0
  552. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/media/codecs/__init__.py +0 -0
  553. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/media/codecs/base.py +0 -0
  554. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/media/codecs/coreaudio.py +0 -0
  555. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/media/codecs/ffmpeg.py +0 -0
  556. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/media/codecs/ffmpeg_lib/__init__.py +0 -0
  557. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/media/codecs/ffmpeg_lib/compat.py +0 -0
  558. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/media/codecs/ffmpeg_lib/libavcodec.py +0 -0
  559. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/media/codecs/ffmpeg_lib/libavformat.py +0 -0
  560. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/media/codecs/ffmpeg_lib/libavutil.py +0 -0
  561. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/media/codecs/ffmpeg_lib/libswresample.py +0 -0
  562. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/media/codecs/ffmpeg_lib/libswscale.py +0 -0
  563. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/media/codecs/gstreamer.py +0 -0
  564. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/media/codecs/pyogg.py +0 -0
  565. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/media/codecs/wave.py +0 -0
  566. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/media/devices/__init__.py +0 -0
  567. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/media/drivers/__init__.py +0 -0
  568. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/media/drivers/directsound/__init__.py +0 -0
  569. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/media/drivers/directsound/exceptions.py +0 -0
  570. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/media/drivers/directsound/interface.py +0 -0
  571. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/media/drivers/openal/__init__.py +0 -0
  572. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/media/drivers/openal/interface.py +0 -0
  573. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/media/drivers/openal/lib_alc.py +0 -0
  574. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/media/drivers/openal/lib_openal.py +0 -0
  575. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/media/drivers/pulse/__init__.py +0 -0
  576. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/media/drivers/pulse/adaptation.py +0 -0
  577. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/media/drivers/pulse/interface.py +0 -0
  578. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/media/drivers/pulse/lib_pulseaudio.py +0 -0
  579. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/media/drivers/silent/__init__.py +0 -0
  580. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/media/drivers/silent/adaptation.py +0 -0
  581. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/media/drivers/xaudio2/__init__.py +0 -0
  582. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/media/exceptions.py +0 -0
  583. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/media/instrumentation.py +0 -0
  584. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/media/synthesis.py +0 -0
  585. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/model/codecs/__init__.py +0 -0
  586. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/model/codecs/gltf.py +0 -0
  587. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/resource.py +0 -0
  588. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/text/document.py +0 -0
  589. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/text/formats/__init__.py +0 -0
  590. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/text/formats/attributed.py +0 -0
  591. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/text/formats/html.py +0 -0
  592. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/text/formats/plaintext.py +0 -0
  593. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/text/formats/structured.py +0 -0
  594. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/text/runlist.py +0 -0
  595. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/window/cocoa/pyglet_delegate.py +0 -0
  596. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/window/cocoa/pyglet_view.py +0 -0
  597. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/window/cocoa/pyglet_window.py +0 -0
  598. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/window/cocoa/systemcursor.py +0 -0
  599. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/window/event.py +0 -0
  600. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/window/headless/__init__.py +0 -0
  601. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/window/mouse.py +0 -0
  602. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet.egg-info/dependency_links.txt +0 -0
  603. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet.egg-info/top_level.txt +0 -0
  604. {pyglet-2.0.8 → pyglet-2.0.10}/pyglet.egg-info/zip-safe +0 -0
  605. {pyglet-2.0.8 → pyglet-2.0.10}/pyproject.toml +0 -0
  606. {pyglet-2.0.8 → pyglet-2.0.10}/pytest.ini +0 -0
  607. {pyglet-2.0.8 → pyglet-2.0.10}/setup.cfg +0 -0
  608. {pyglet-2.0.8 → pyglet-2.0.10}/setup.py +0 -0
  609. {pyglet-2.0.8 → pyglet-2.0.10}/tests/__init__.py +0 -0
  610. {pyglet-2.0.8 → pyglet-2.0.10}/tests/annotations.py +0 -0
  611. {pyglet-2.0.8 → pyglet-2.0.10}/tests/base/__init__.py +0 -0
  612. {pyglet-2.0.8 → pyglet-2.0.10}/tests/base/data.py +0 -0
  613. {pyglet-2.0.8 → pyglet-2.0.10}/tests/base/event_loop.py +0 -0
  614. {pyglet-2.0.8 → pyglet-2.0.10}/tests/base/interactive.py +0 -0
  615. {pyglet-2.0.8 → pyglet-2.0.10}/tests/base/performance.py +0 -0
  616. {pyglet-2.0.8 → pyglet-2.0.10}/tests/base/test_interactive_test_base.py +0 -0
  617. {pyglet-2.0.8 → pyglet-2.0.10}/tests/conftest.py +0 -0
  618. {pyglet-2.0.8 → pyglet-2.0.10}/tests/data/fonts/README +0 -0
  619. {pyglet-2.0.8 → pyglet-2.0.10}/tests/data/fonts/action_man.ttf +0 -0
  620. {pyglet-2.0.8 → pyglet-2.0.10}/tests/data/fonts/action_man_bold.ttf +0 -0
  621. {pyglet-2.0.8 → pyglet-2.0.10}/tests/data/fonts/action_man_bold_italic.ttf +0 -0
  622. {pyglet-2.0.8 → pyglet-2.0.10}/tests/data/fonts/action_man_italic.ttf +0 -0
  623. {pyglet-2.0.8 → pyglet-2.0.10}/tests/data/fonts/courR12-ISO8859-1.pcf +0 -0
  624. {pyglet-2.0.8 → pyglet-2.0.10}/tests/data/images/8bpp.gif +0 -0
  625. {pyglet-2.0.8 → pyglet-2.0.10}/tests/data/images/cursor.png +0 -0
  626. {pyglet-2.0.8 → pyglet-2.0.10}/tests/data/images/dinosaur.gif +0 -0
  627. {pyglet-2.0.8 → pyglet-2.0.10}/tests/data/images/gdk_close.png +0 -0
  628. {pyglet-2.0.8 → pyglet-2.0.10}/tests/data/images/grey_background.png +0 -0
  629. {pyglet-2.0.8 → pyglet-2.0.10}/tests/data/images/icon1.png +0 -0
  630. {pyglet-2.0.8 → pyglet-2.0.10}/tests/data/images/icon_size1.png +0 -0
  631. {pyglet-2.0.8 → pyglet-2.0.10}/tests/data/images/icon_size2.png +0 -0
  632. {pyglet-2.0.8 → pyglet-2.0.10}/tests/data/images/icon_size3.png +0 -0
  633. {pyglet-2.0.8 → pyglet-2.0.10}/tests/data/images/icon_size4.png +0 -0
  634. {pyglet-2.0.8 → pyglet-2.0.10}/tests/data/images/icon_size5.png +0 -0
  635. {pyglet-2.0.8 → pyglet-2.0.10}/tests/data/images/l.png +0 -0
  636. {pyglet-2.0.8 → pyglet-2.0.10}/tests/data/images/la.png +0 -0
  637. {pyglet-2.0.8 → pyglet-2.0.10}/tests/data/images/multitexture.png +0 -0
  638. {pyglet-2.0.8 → pyglet-2.0.10}/tests/data/images/rgb.png +0 -0
  639. {pyglet-2.0.8 → pyglet-2.0.10}/tests/data/images/rgb_16bpp.bmp +0 -0
  640. {pyglet-2.0.8 → pyglet-2.0.10}/tests/data/images/rgb_1bpp.bmp +0 -0
  641. {pyglet-2.0.8 → pyglet-2.0.10}/tests/data/images/rgb_24bpp.bmp +0 -0
  642. {pyglet-2.0.8 → pyglet-2.0.10}/tests/data/images/rgb_32bpp.bmp +0 -0
  643. {pyglet-2.0.8 → pyglet-2.0.10}/tests/data/images/rgb_4bpp.bmp +0 -0
  644. {pyglet-2.0.8 → pyglet-2.0.10}/tests/data/images/rgb_8bpp.bmp +0 -0
  645. {pyglet-2.0.8 → pyglet-2.0.10}/tests/data/images/rgb_8bpp.png +0 -0
  646. {pyglet-2.0.8 → pyglet-2.0.10}/tests/data/images/rgb_8bpp_trans.png +0 -0
  647. {pyglet-2.0.8 → pyglet-2.0.10}/tests/data/images/rgb_dxt1.dds +0 -0
  648. {pyglet-2.0.8 → pyglet-2.0.10}/tests/data/images/rgba.png +0 -0
  649. {pyglet-2.0.8 → pyglet-2.0.10}/tests/data/images/rgba_32bpp.bmp +0 -0
  650. {pyglet-2.0.8 → pyglet-2.0.10}/tests/data/images/rgba_dxt1.dds +0 -0
  651. {pyglet-2.0.8 → pyglet-2.0.10}/tests/data/images/rgba_dxt3.dds +0 -0
  652. {pyglet-2.0.8 → pyglet-2.0.10}/tests/data/images/rgba_dxt5.dds +0 -0
  653. {pyglet-2.0.8 → pyglet-2.0.10}/tests/data/images/tests.interactive.test_interactive_test_base._Test.test_1.001.png +0 -0
  654. {pyglet-2.0.8 → pyglet-2.0.10}/tests/data/media/README +0 -0
  655. {pyglet-2.0.8 → pyglet-2.0.10}/tests/data/media/alert.wav +0 -0
  656. {pyglet-2.0.8 → pyglet-2.0.10}/tests/data/media/login.wav +0 -0
  657. {pyglet-2.0.8 → pyglet-2.0.10}/tests/data/media/logout.wav +0 -0
  658. {pyglet-2.0.8 → pyglet-2.0.10}/tests/data/media/receive.wav +0 -0
  659. {pyglet-2.0.8 → pyglet-2.0.10}/tests/data/media/send.wav +0 -0
  660. {pyglet-2.0.8 → pyglet-2.0.10}/tests/data/media/synthesis_sawtooth_16_11025_1ch.wav +0 -0
  661. {pyglet-2.0.8 → pyglet-2.0.10}/tests/data/media/synthesis_sawtooth_16_44800_1ch.wav +0 -0
  662. {pyglet-2.0.8 → pyglet-2.0.10}/tests/data/media/synthesis_silence_16_11025_1ch.wav +0 -0
  663. {pyglet-2.0.8 → pyglet-2.0.10}/tests/data/media/synthesis_silence_16_44800_1ch.wav +0 -0
  664. {pyglet-2.0.8 → pyglet-2.0.10}/tests/data/media/synthesis_simplefm_16_11025_1ch.wav +0 -0
  665. {pyglet-2.0.8 → pyglet-2.0.10}/tests/data/media/synthesis_simplefm_16_44800_1ch.wav +0 -0
  666. {pyglet-2.0.8 → pyglet-2.0.10}/tests/data/media/synthesis_sine_16_11025_1ch.wav +0 -0
  667. {pyglet-2.0.8 → pyglet-2.0.10}/tests/data/media/synthesis_sine_16_44800_1ch.wav +0 -0
  668. {pyglet-2.0.8 → pyglet-2.0.10}/tests/data/media/synthesis_square_16_11025_1ch.wav +0 -0
  669. {pyglet-2.0.8 → pyglet-2.0.10}/tests/data/media/synthesis_square_16_44800_1ch.wav +0 -0
  670. {pyglet-2.0.8 → pyglet-2.0.10}/tests/data/media/synthesis_triangle_16_11025_1ch.wav +0 -0
  671. {pyglet-2.0.8 → pyglet-2.0.10}/tests/data/media/synthesis_triangle_16_44800_1ch.wav +0 -0
  672. {pyglet-2.0.8 → pyglet-2.0.10}/tests/data/models/logo3d.mtl +0 -0
  673. {pyglet-2.0.8 → pyglet-2.0.10}/tests/data/models/logo3d.obj +0 -0
  674. {pyglet-2.0.8 → pyglet-2.0.10}/tests/integration/__init__.py +0 -0
  675. {pyglet-2.0.8 → pyglet-2.0.10}/tests/integration/app/__init__.py +0 -0
  676. {pyglet-2.0.8 → pyglet-2.0.10}/tests/integration/font/test_fontconfig.py +0 -0
  677. {pyglet-2.0.8 → pyglet-2.0.10}/tests/integration/font/test_freetype_face.py +0 -0
  678. {pyglet-2.0.8 → pyglet-2.0.10}/tests/integration/graphics/__init__.py +0 -0
  679. {pyglet-2.0.8 → pyglet-2.0.10}/tests/integration/graphics/test_allocation.py +0 -0
  680. {pyglet-2.0.8 → pyglet-2.0.10}/tests/integration/image/__init__.py +0 -0
  681. {pyglet-2.0.8 → pyglet-2.0.10}/tests/integration/image/test_gdkpixbuf2.py +0 -0
  682. {pyglet-2.0.8 → pyglet-2.0.10}/tests/integration/media/__init__.py +0 -0
  683. {pyglet-2.0.8 → pyglet-2.0.10}/tests/integration/media/mock_player.py +0 -0
  684. {pyglet-2.0.8 → pyglet-2.0.10}/tests/integration/media/test_directsound.py +0 -0
  685. {pyglet-2.0.8 → pyglet-2.0.10}/tests/integration/media/test_openal.py +0 -0
  686. {pyglet-2.0.8 → pyglet-2.0.10}/tests/integration/media/test_player.py +0 -0
  687. {pyglet-2.0.8 → pyglet-2.0.10}/tests/integration/media/test_pulse.py +0 -0
  688. {pyglet-2.0.8 → pyglet-2.0.10}/tests/integration/model/__init__.py +0 -0
  689. {pyglet-2.0.8 → pyglet-2.0.10}/tests/integration/model/test_loading.py +0 -0
  690. {pyglet-2.0.8 → pyglet-2.0.10}/tests/integration/platform/__init__.py +0 -0
  691. {pyglet-2.0.8 → pyglet-2.0.10}/tests/integration/platform/test_linux_fontconfig.py +0 -0
  692. {pyglet-2.0.8 → pyglet-2.0.10}/tests/integration/platform/test_win_context_managers.py +0 -0
  693. {pyglet-2.0.8 → pyglet-2.0.10}/tests/integration/platform/test_win_multicore_clock.py +0 -0
  694. {pyglet-2.0.8 → pyglet-2.0.10}/tests/integration/resource/__init__.py +0 -0
  695. {pyglet-2.0.8 → pyglet-2.0.10}/tests/integration/resource/dir1/dir1/f3.txt +0 -0
  696. {pyglet-2.0.8 → pyglet-2.0.10}/tests/integration/resource/dir1/f2.txt +0 -0
  697. {pyglet-2.0.8 → pyglet-2.0.10}/tests/integration/resource/dir1/res.zip +0 -0
  698. {pyglet-2.0.8 → pyglet-2.0.10}/tests/integration/resource/dir2/f6.txt +0 -0
  699. {pyglet-2.0.8 → pyglet-2.0.10}/tests/integration/resource/f1.txt +0 -0
  700. {pyglet-2.0.8 → pyglet-2.0.10}/tests/integration/resource/rgbm.png +0 -0
  701. {pyglet-2.0.8 → pyglet-2.0.10}/tests/integration/resource/test_resource_image_loading.py +0 -0
  702. {pyglet-2.0.8 → pyglet-2.0.10}/tests/integration/resource/test_resource_loading.py +0 -0
  703. {pyglet-2.0.8 → pyglet-2.0.10}/tests/integration/text/__init__.py +0 -0
  704. {pyglet-2.0.8 → pyglet-2.0.10}/tests/integration/text/test_empty_document.py +0 -0
  705. {pyglet-2.0.8 → pyglet-2.0.10}/tests/integration/window/__init__.py +0 -0
  706. {pyglet-2.0.8 → pyglet-2.0.10}/tests/integration/window/test_context_share.py +0 -0
  707. {pyglet-2.0.8 → pyglet-2.0.10}/tests/integration/window/test_event_sequence.py +0 -0
  708. {pyglet-2.0.8 → pyglet-2.0.10}/tests/integration/window/test_window_caption.py +0 -0
  709. {pyglet-2.0.8 → pyglet-2.0.10}/tests/interactive/__init__.py +0 -0
  710. {pyglet-2.0.8 → pyglet-2.0.10}/tests/interactive/conftest.py +0 -0
  711. {pyglet-2.0.8 → pyglet-2.0.10}/tests/interactive/graphics/__init__.py +0 -0
  712. {pyglet-2.0.8 → pyglet-2.0.10}/tests/interactive/graphics/test_multitexture.py +0 -0
  713. {pyglet-2.0.8 → pyglet-2.0.10}/tests/interactive/image/__init__.py +0 -0
  714. {pyglet-2.0.8 → pyglet-2.0.10}/tests/interactive/image/test_image.py +0 -0
  715. {pyglet-2.0.8 → pyglet-2.0.10}/tests/interactive/media/__init__.py +0 -0
  716. {pyglet-2.0.8 → pyglet-2.0.10}/tests/interactive/media/test_player.py +0 -0
  717. {pyglet-2.0.8 → pyglet-2.0.10}/tests/interactive/screenshots/committed/README +0 -0
  718. /pyglet-2.0.8/tests/interactive/screenshots/session/tests.interactive.graphics.test_multitexture.test_multitexture.001.png → /pyglet-2.0.10/tests/interactive/screenshots/committed/tests.interactive.image.test_image.test_pil_saving[rgb.png].001.png +0 -0
  719. /pyglet-2.0.8/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_bmp_loading[rgb_16bpp.bmp].001.png → /pyglet-2.0.10/tests/interactive/screenshots/committed/tests.interactive.image.test_image.test_pil_saving[rgba.png].001.png +0 -0
  720. {pyglet-2.0.8 → pyglet-2.0.10}/tests/interactive/screenshots/session/README +0 -0
  721. /pyglet-2.0.8/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_bmp_loading[rgb_1bpp.bmp].001.png → /pyglet-2.0.10/tests/interactive/screenshots/session/tests.interactive.graphics.test_multitexture.test_multitexture.001.png +0 -0
  722. {pyglet-2.0.8 → pyglet-2.0.10}/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_pil_loading[l.png].001.png +0 -0
  723. {pyglet-2.0.8 → pyglet-2.0.10}/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_pypng_loading[l.png].001.png +0 -0
  724. {pyglet-2.0.8 → pyglet-2.0.10}/tests/interactive/text/__init__.py +0 -0
  725. {pyglet-2.0.8 → pyglet-2.0.10}/tests/interactive/text/test_caret_color.py +0 -0
  726. {pyglet-2.0.8 → pyglet-2.0.10}/tests/interactive/text/test_content_valign.py +0 -0
  727. {pyglet-2.0.8 → pyglet-2.0.10}/tests/interactive/text/test_html.py +0 -0
  728. {pyglet-2.0.8 → pyglet-2.0.10}/tests/interactive/window/__init__.py +0 -0
  729. {pyglet-2.0.8 → pyglet-2.0.10}/tests/interactive/window/test_window_events.py +0 -0
  730. {pyglet-2.0.8 → pyglet-2.0.10}/tests/interactive/window/test_window_fullscreen.py +0 -0
  731. {pyglet-2.0.8 → pyglet-2.0.10}/tests/interactive/window/test_window_modes.py +0 -0
  732. {pyglet-2.0.8 → pyglet-2.0.10}/tests/interactive/window/test_window_multisample.py +0 -0
  733. {pyglet-2.0.8 → pyglet-2.0.10}/tests/interactive/window/test_window_open.py +0 -0
  734. {pyglet-2.0.8 → pyglet-2.0.10}/tests/interactive/window/test_window_settings.py +0 -0
  735. {pyglet-2.0.8 → pyglet-2.0.10}/tests/interactive/window/test_window_styles.py +0 -0
  736. {pyglet-2.0.8 → pyglet-2.0.10}/tests/interactive/window/window_util.py +0 -0
  737. {pyglet-2.0.8 → pyglet-2.0.10}/tests/interactive/windowed_test_base.py +0 -0
  738. {pyglet-2.0.8 → pyglet-2.0.10}/tests/requirements.txt +0 -0
  739. {pyglet-2.0.8 → pyglet-2.0.10}/tests/unit/__init__.py +0 -0
  740. {pyglet-2.0.8 → pyglet-2.0.10}/tests/unit/media/__init__.py +0 -0
  741. {pyglet-2.0.8 → pyglet-2.0.10}/tests/unit/media/test_listener.py +0 -0
  742. {pyglet-2.0.8 → pyglet-2.0.10}/tests/unit/media/test_player.py +0 -0
  743. {pyglet-2.0.8 → pyglet-2.0.10}/tests/unit/media/test_sources.py +0 -0
  744. {pyglet-2.0.8 → pyglet-2.0.10}/tests/unit/media/test_synthesis.py +0 -0
  745. {pyglet-2.0.8 → pyglet-2.0.10}/tests/unit/shapes/__init__.py +0 -0
  746. {pyglet-2.0.8 → pyglet-2.0.10}/tests/unit/shapes/conftest.py +0 -0
  747. {pyglet-2.0.8 → pyglet-2.0.10}/tests/unit/shapes/test_bordered_rectangle.py +0 -0
  748. {pyglet-2.0.8 → pyglet-2.0.10}/tests/unit/test_atlas.py +0 -0
  749. {pyglet-2.0.8 → pyglet-2.0.10}/tests/unit/test_clock.py +0 -0
  750. {pyglet-2.0.8 → pyglet-2.0.10}/tests/unit/test_clock_freq.py +0 -0
  751. {pyglet-2.0.8 → pyglet-2.0.10}/tests/unit/test_font.py +0 -0
  752. {pyglet-2.0.8 → pyglet-2.0.10}/tests/unit/test_input.py +0 -0
  753. {pyglet-2.0.8 → pyglet-2.0.10}/tests/unit/test_math.py +0 -0
  754. {pyglet-2.0.8 → pyglet-2.0.10}/tests/unit/test_resource_path.py +0 -0
  755. {pyglet-2.0.8 → pyglet-2.0.10}/tests/unit/test_sprite.py +0 -0
  756. {pyglet-2.0.8 → pyglet-2.0.10}/tests/unit/test_text.py +0 -0
  757. {pyglet-2.0.8 → pyglet-2.0.10}/tests/unit/text/__init__.py +0 -0
  758. {pyglet-2.0.8 → pyglet-2.0.10}/tests/unit/text/test_caret.py +0 -0
  759. {pyglet-2.0.8 → pyglet-2.0.10}/tests/unit/text/test_layout.py +0 -0
  760. {pyglet-2.0.8 → pyglet-2.0.10}/tools/al_info.py +0 -0
  761. {pyglet-2.0.8 → pyglet-2.0.10}/tools/ffmpeg/bokeh_timeline.py +0 -0
  762. {pyglet-2.0.8 → pyglet-2.0.10}/tools/ffmpeg/compare.py +0 -0
  763. {pyglet-2.0.8 → pyglet-2.0.10}/tools/ffmpeg/configure.py +0 -0
  764. {pyglet-2.0.8 → pyglet-2.0.10}/tools/ffmpeg/extractors.py +0 -0
  765. {pyglet-2.0.8 → pyglet-2.0.10}/tools/ffmpeg/fs.py +0 -0
  766. {pyglet-2.0.8 → pyglet-2.0.10}/tools/ffmpeg/mp.py +0 -0
  767. {pyglet-2.0.8 → pyglet-2.0.10}/tools/ffmpeg/mpexceptions.py +0 -0
  768. {pyglet-2.0.8 → pyglet-2.0.10}/tools/ffmpeg/playmany.py +0 -0
  769. {pyglet-2.0.8 → pyglet-2.0.10}/tools/ffmpeg/readme_ffmpeg_debbuging_branch.txt +0 -0
  770. {pyglet-2.0.8 → pyglet-2.0.10}/tools/ffmpeg/readme_run_tests.txt +0 -0
  771. {pyglet-2.0.8 → pyglet-2.0.10}/tools/ffmpeg/report.py +0 -0
  772. {pyglet-2.0.8 → pyglet-2.0.10}/tools/ffmpeg/reports.py +0 -0
  773. {pyglet-2.0.8 → pyglet-2.0.10}/tools/ffmpeg/retry_crashed.py +0 -0
  774. {pyglet-2.0.8 → pyglet-2.0.10}/tools/ffmpeg/run_test_suite.py +0 -0
  775. {pyglet-2.0.8 → pyglet-2.0.10}/tools/ffmpeg/summarize.py +0 -0
  776. {pyglet-2.0.8 → pyglet-2.0.10}/tools/ffmpeg/test_instrumentation.py +0 -0
  777. {pyglet-2.0.8 → pyglet-2.0.10}/tools/ffmpeg/timeline.py +0 -0
  778. {pyglet-2.0.8 → pyglet-2.0.10}/tools/gendist.sh +0 -0
  779. {pyglet-2.0.8 → pyglet-2.0.10}/tools/gengl.py +0 -0
  780. {pyglet-2.0.8 → pyglet-2.0.10}/tools/gengl_old.py +0 -0
  781. {pyglet-2.0.8 → pyglet-2.0.10}/tools/genwrappers.py +0 -0
  782. {pyglet-2.0.8 → pyglet-2.0.10}/tools/gl.template +0 -0
  783. {pyglet-2.0.8 → pyglet-2.0.10}/tools/gl.xml +0 -0
  784. {pyglet-2.0.8 → pyglet-2.0.10}/tools/gl_info.py +0 -0
  785. {pyglet-2.0.8 → pyglet-2.0.10}/tools/inspect_font.py +0 -0
  786. {pyglet-2.0.8 → pyglet-2.0.10}/tools/requirements.txt +0 -0
  787. {pyglet-2.0.8 → pyglet-2.0.10}/tools/wgl.h +0 -0
  788. {pyglet-2.0.8 → pyglet-2.0.10}/tools/wraptypes/__init__.py +0 -0
  789. {pyglet-2.0.8 → pyglet-2.0.10}/tools/wraptypes/cparser.py +0 -0
  790. {pyglet-2.0.8 → pyglet-2.0.10}/tools/wraptypes/ctypesparser.py +0 -0
  791. {pyglet-2.0.8 → pyglet-2.0.10}/tools/wraptypes/lex.py +0 -0
  792. {pyglet-2.0.8 → pyglet-2.0.10}/tools/wraptypes/preprocessor.py +0 -0
  793. {pyglet-2.0.8 → pyglet-2.0.10}/tools/wraptypes/wrap.py +0 -0
  794. {pyglet-2.0.8 → pyglet-2.0.10}/tools/wraptypes/yacc.py +0 -0
  795. {pyglet-2.0.8 → pyglet-2.0.10}/website/LICENSE.txt +0 -0
  796. {pyglet-2.0.8 → pyglet-2.0.10}/website/README.rst +0 -0
  797. {pyglet-2.0.8 → pyglet-2.0.10}/website/assets/favicon.ico +0 -0
  798. {pyglet-2.0.8 → pyglet-2.0.10}/website/assets/static/css/example-custom-styles.css +0 -0
  799. {pyglet-2.0.8 → pyglet-2.0.10}/website/assets/static/images/pyglet.png +0 -0
  800. {pyglet-2.0.8 → pyglet-2.0.10}/website/content/404.html/contents.lr +0 -0
  801. {pyglet-2.0.8 → pyglet-2.0.10}/website/content/404.html/ngc-5793.jpg +0 -0
  802. {pyglet-2.0.8 → pyglet-2.0.10}/website/content/authors/benjamin/contents.lr +0 -0
  803. {pyglet-2.0.8 → pyglet-2.0.10}/website/content/authors/benjamin/pyglet.png +0 -0
  804. {pyglet-2.0.8 → pyglet-2.0.10}/website/content/authors/contents.lr +0 -0
  805. {pyglet-2.0.8 → pyglet-2.0.10}/website/content/blog/contents.lr +0 -0
  806. {pyglet-2.0.8 → pyglet-2.0.10}/website/content/blog/welcome-blog/contents.lr +0 -0
  807. {pyglet-2.0.8 → pyglet-2.0.10}/website/content/contents.lr +0 -0
  808. {pyglet-2.0.8 → pyglet-2.0.10}/website/content/eclipse.jpg +0 -0
  809. {pyglet-2.0.8 → pyglet-2.0.10}/website/pyglet.lektorproject +0 -0
  810. {pyglet-2.0.8 → pyglet-2.0.10}/website/themes/lektor-icon/AUTHORS.txt +0 -0
  811. {pyglet-2.0.8 → pyglet-2.0.10}/website/themes/lektor-icon/CHANGELOG.md +0 -0
  812. {pyglet-2.0.8 → pyglet-2.0.10}/website/themes/lektor-icon/CONTRIBUTING.md +0 -0
  813. {pyglet-2.0.8 → pyglet-2.0.10}/website/themes/lektor-icon/LICENSE.txt +0 -0
  814. {pyglet-2.0.8 → pyglet-2.0.10}/website/themes/lektor-icon/NOTICE.txt +0 -0
  815. {pyglet-2.0.8 → pyglet-2.0.10}/website/themes/lektor-icon/README.md +0 -0
  816. {pyglet-2.0.8 → pyglet-2.0.10}/website/themes/lektor-icon/assets/static/css/bootstrap.css +0 -0
  817. {pyglet-2.0.8 → pyglet-2.0.10}/website/themes/lektor-icon/assets/static/css/icomoon.css +0 -0
  818. {pyglet-2.0.8 → pyglet-2.0.10}/website/themes/lektor-icon/assets/static/css/magnific-popup.css +0 -0
  819. {pyglet-2.0.8 → pyglet-2.0.10}/website/themes/lektor-icon/assets/static/css/style.css +0 -0
  820. {pyglet-2.0.8 → pyglet-2.0.10}/website/themes/lektor-icon/assets/static/fonts/bootstrap/glyphicons-halflings-regular.ttf +0 -0
  821. {pyglet-2.0.8 → pyglet-2.0.10}/website/themes/lektor-icon/assets/static/fonts/bootstrap/glyphicons-halflings-regular.woff +0 -0
  822. {pyglet-2.0.8 → pyglet-2.0.10}/website/themes/lektor-icon/assets/static/fonts/bootstrap/glyphicons-halflings-regular.woff2 +0 -0
  823. {pyglet-2.0.8 → pyglet-2.0.10}/website/themes/lektor-icon/assets/static/fonts/icomoon/icomoon.ttf +0 -0
  824. {pyglet-2.0.8 → pyglet-2.0.10}/website/themes/lektor-icon/assets/static/fonts/icomoon/icomoon.woff +0 -0
  825. {pyglet-2.0.8 → pyglet-2.0.10}/website/themes/lektor-icon/assets/static/images/Preloader_2.gif +0 -0
  826. {pyglet-2.0.8 → pyglet-2.0.10}/website/themes/lektor-icon/assets/static/images/placeholder_person.png +0 -0
  827. {pyglet-2.0.8 → pyglet-2.0.10}/website/themes/lektor-icon/assets/static/js/jquery-3.3.1.min.js +0 -0
  828. {pyglet-2.0.8 → pyglet-2.0.10}/website/themes/lektor-icon/assets/static/js/jquery.easing.min.js +0 -0
  829. {pyglet-2.0.8 → pyglet-2.0.10}/website/themes/lektor-icon/assets/static/js/jquery.magnific-popup.min.js +0 -0
  830. {pyglet-2.0.8 → pyglet-2.0.10}/website/themes/lektor-icon/assets/static/js/jquery.stellar.js +0 -0
  831. {pyglet-2.0.8 → pyglet-2.0.10}/website/themes/lektor-icon/assets/static/js/jquery.stellar.min.js +0 -0
  832. {pyglet-2.0.8 → pyglet-2.0.10}/website/themes/lektor-icon/assets/static/js/jquery.waypoints.min.js +0 -0
  833. {pyglet-2.0.8 → pyglet-2.0.10}/website/themes/lektor-icon/assets/static/js/magnific-popup-options.js +0 -0
  834. {pyglet-2.0.8 → pyglet-2.0.10}/website/themes/lektor-icon/assets/static/js/main-singlelayout.js +0 -0
  835. {pyglet-2.0.8 → pyglet-2.0.10}/website/themes/lektor-icon/assets/static/js/main.js +0 -0
  836. {pyglet-2.0.8 → pyglet-2.0.10}/website/themes/lektor-icon/flowblocks/content.ini +0 -0
  837. {pyglet-2.0.8 → pyglet-2.0.10}/website/themes/lektor-icon/flowblocks/gallery.ini +0 -0
  838. {pyglet-2.0.8 → pyglet-2.0.10}/website/themes/lektor-icon/flowblocks/gallery_item.ini +0 -0
  839. {pyglet-2.0.8 → pyglet-2.0.10}/website/themes/lektor-icon/flowblocks/member.ini +0 -0
  840. {pyglet-2.0.8 → pyglet-2.0.10}/website/themes/lektor-icon/flowblocks/mission.ini +0 -0
  841. {pyglet-2.0.8 → pyglet-2.0.10}/website/themes/lektor-icon/flowblocks/mission_tab.ini +0 -0
  842. {pyglet-2.0.8 → pyglet-2.0.10}/website/themes/lektor-icon/flowblocks/service.ini +0 -0
  843. {pyglet-2.0.8 → pyglet-2.0.10}/website/themes/lektor-icon/flowblocks/services.ini +0 -0
  844. {pyglet-2.0.8 → pyglet-2.0.10}/website/themes/lektor-icon/flowblocks/team.ini +0 -0
  845. {pyglet-2.0.8 → pyglet-2.0.10}/website/themes/lektor-icon/images/blog-index.png +0 -0
  846. {pyglet-2.0.8 → pyglet-2.0.10}/website/themes/lektor-icon/images/full-blog.png +0 -0
  847. {pyglet-2.0.8 → pyglet-2.0.10}/website/themes/lektor-icon/images/full-page.png +0 -0
  848. {pyglet-2.0.8 → pyglet-2.0.10}/website/themes/lektor-icon/images/gallery-404.png +0 -0
  849. {pyglet-2.0.8 → pyglet-2.0.10}/website/themes/lektor-icon/images/gallery-singlepage.png +0 -0
  850. {pyglet-2.0.8 → pyglet-2.0.10}/website/themes/lektor-icon/images/mainpage-screenshots.png +0 -0
  851. {pyglet-2.0.8 → pyglet-2.0.10}/website/themes/lektor-icon/images/responsive-layout.png +0 -0
  852. {pyglet-2.0.8 → pyglet-2.0.10}/website/themes/lektor-icon/models/404.ini +0 -0
  853. {pyglet-2.0.8 → pyglet-2.0.10}/website/themes/lektor-icon/models/author.ini +0 -0
  854. {pyglet-2.0.8 → pyglet-2.0.10}/website/themes/lektor-icon/models/authors.ini +0 -0
  855. {pyglet-2.0.8 → pyglet-2.0.10}/website/themes/lektor-icon/models/blog-post.ini +0 -0
  856. {pyglet-2.0.8 → pyglet-2.0.10}/website/themes/lektor-icon/models/blog.ini +0 -0
  857. {pyglet-2.0.8 → pyglet-2.0.10}/website/themes/lektor-icon/models/page.ini +0 -0
  858. {pyglet-2.0.8 → pyglet-2.0.10}/website/themes/lektor-icon/models/single-layout.ini +0 -0
  859. {pyglet-2.0.8 → pyglet-2.0.10}/website/themes/lektor-icon/templates/404.html +0 -0
  860. {pyglet-2.0.8 → pyglet-2.0.10}/website/themes/lektor-icon/templates/author.html +0 -0
  861. {pyglet-2.0.8 → pyglet-2.0.10}/website/themes/lektor-icon/templates/authors.html +0 -0
  862. {pyglet-2.0.8 → pyglet-2.0.10}/website/themes/lektor-icon/templates/blocks/content.html +0 -0
  863. {pyglet-2.0.8 → pyglet-2.0.10}/website/themes/lektor-icon/templates/blocks/gallery.html +0 -0
  864. {pyglet-2.0.8 → pyglet-2.0.10}/website/themes/lektor-icon/templates/blocks/mission.html +0 -0
  865. {pyglet-2.0.8 → pyglet-2.0.10}/website/themes/lektor-icon/templates/blocks/services.html +0 -0
  866. {pyglet-2.0.8 → pyglet-2.0.10}/website/themes/lektor-icon/templates/blocks/team.html +0 -0
  867. {pyglet-2.0.8 → pyglet-2.0.10}/website/themes/lektor-icon/templates/blog-layout.html +0 -0
  868. {pyglet-2.0.8 → pyglet-2.0.10}/website/themes/lektor-icon/templates/blog-post.html +0 -0
  869. {pyglet-2.0.8 → pyglet-2.0.10}/website/themes/lektor-icon/templates/blog.html +0 -0
  870. {pyglet-2.0.8 → pyglet-2.0.10}/website/themes/lektor-icon/templates/layout.html +0 -0
  871. {pyglet-2.0.8 → pyglet-2.0.10}/website/themes/lektor-icon/templates/macros/blog.html +0 -0
  872. {pyglet-2.0.8 → pyglet-2.0.10}/website/themes/lektor-icon/templates/macros/pagination.html +0 -0
  873. {pyglet-2.0.8 → pyglet-2.0.10}/website/themes/lektor-icon/templates/none.html +0 -0
  874. {pyglet-2.0.8 → pyglet-2.0.10}/website/themes/lektor-icon/templates/page.html +0 -0
  875. {pyglet-2.0.8 → pyglet-2.0.10}/website/themes/lektor-icon/templates/single-layout.html +0 -0
  876. {pyglet-2.0.8 → pyglet-2.0.10}/website/themes/lektor-icon/theme.ini +0 -0
@@ -0,0 +1,247 @@
1
+ """Experimental networking
2
+
3
+ This module contains experiments in making user-friendly Server and Client
4
+ classes that integrate with pyglet's event system. These are very basic,
5
+ socket server/client examples, and are not ready to be used in production.
6
+ They are included here to solicit feedback, and possibly spark further
7
+ development. Basic Server usage::
8
+
9
+ server = net.Server(address='0.0.0.0', port=1234)
10
+ active_connections = weakref.WeakSet()
11
+
12
+ def pong(connection, message):
13
+ print(f"Received '{message}' from '{connection}'")
14
+ connection.send(b'pong')
15
+
16
+ @server.event
17
+ def on_connection(connection):
18
+ print(f"New client connected: {connection}")
19
+ connection.set_handler('on_receive', pong)
20
+ active_connections.add(connection)
21
+
22
+ @server.event
23
+ def on_disconnect(connection):
24
+ print(f"Client disconnected: {connection}")
25
+ active_connections.discard(connection)
26
+
27
+
28
+ Basic Client example::
29
+
30
+ client = net.Client(address='localhost', port=1234)
31
+
32
+ @client.event
33
+ def on_receive(client, message):
34
+ print(f"Received: {message}")
35
+
36
+ @client.event
37
+ def on_disconnect(client):
38
+ print(f"Disconnected: {client}")
39
+
40
+ client.send(b'ping')
41
+
42
+ """
43
+
44
+
45
+ import queue as _queue
46
+ import struct as _struct
47
+ import socket as _socket
48
+ import asyncio as _asyncio
49
+ import threading as _threading
50
+
51
+ from pyglet.event import EventDispatcher as _EventDispatcher
52
+
53
+ from pyglet.util import debug_print
54
+
55
+ _debug_net = debug_print(True)
56
+
57
+
58
+ class Client(_EventDispatcher):
59
+ def __init__(self, address, port):
60
+ """Create a Client connection to a Server."""
61
+ self._socket = _socket.create_connection((address, port))
62
+ self._address = address
63
+ self._port = port
64
+
65
+ self._terminate = _threading.Event()
66
+ self._queue = _queue.Queue()
67
+
68
+ _threading.Thread(target=self._recv, daemon=True).start()
69
+ _threading.Thread(target=self._send, daemon=True).start()
70
+
71
+ self._sentinal = object() # poison pill
72
+
73
+ def close(self):
74
+ """Close the connection."""
75
+ self._queue.put(self._sentinal)
76
+ self._socket.shutdown(1)
77
+ if not self._terminate.is_set():
78
+ self._terminate.set()
79
+ self.dispatch_event('on_disconnect', self)
80
+
81
+ def send(self, message):
82
+ """Queue a message to send.
83
+
84
+ Put a string of bytes into the queue to send.
85
+ raises a `ConnectionError` if the connection
86
+ has been closed or dropped.
87
+
88
+ :Parameters:
89
+ `message` : bytes
90
+ A string of bytes to send.
91
+ """
92
+ if self._terminate.is_set():
93
+ raise ConnectionError("Connection is closed.")
94
+ self._queue.put(message)
95
+
96
+ def _send(self): # Thread
97
+ """Background Thread to send messages from the queue."""
98
+ while not self._terminate.is_set():
99
+ message = self._queue.get()
100
+ if message == self._sentinal: # bail out on poison pill
101
+ break
102
+ try:
103
+ # Attach a 4byte header to the front of the message:
104
+ packet = _struct.pack('I', len(message)) + message
105
+ self._socket.sendall(packet)
106
+ except (ConnectionError, OSError):
107
+ self.close()
108
+ break
109
+
110
+ assert _debug_net("Exiting _send thread")
111
+
112
+
113
+ def _recv(self): # Thread
114
+ socket = self._socket
115
+
116
+ while not self._terminate.is_set():
117
+ try:
118
+ header = socket.recv(4)
119
+ while len(header) < 4:
120
+ header += socket.recv(4 - len(header))
121
+ size = _struct.unpack('I', header)[0]
122
+
123
+ message = socket.recv(size)
124
+ while len(message) < size:
125
+ message += socket.recv(size)
126
+ self.dispatch_event('on_receive', self, message)
127
+ except (ConnectionError, OSError):
128
+ self.close()
129
+ break
130
+
131
+ assert _debug_net("Exiting _recv thread")
132
+
133
+ def on_receive(self, connection, message):
134
+ """Event for received messages."""
135
+
136
+ def on_disconnect(self, connection):
137
+ """Event for disconnection. """
138
+
139
+ def __repr__(self):
140
+ return f"Client(address={self._address}, port={self._port})"
141
+
142
+
143
+ Client.register_event_type('on_receive')
144
+ Client.register_event_type('on_disconnect')
145
+
146
+
147
+ class ClientConnection(_EventDispatcher):
148
+
149
+ def __init__(self, reader, writer):
150
+ self._reader = reader
151
+ self._writer = writer
152
+ self._closed = False
153
+ self._loop = _asyncio.get_event_loop()
154
+ _asyncio.run_coroutine_threadsafe(self._recv(), self._loop)
155
+
156
+ def close(self):
157
+ if not self._closed:
158
+ self._writer.transport.close()
159
+ self._closed = True
160
+ self.dispatch_event('on_disconnect', self)
161
+
162
+ async def _recv(self):
163
+ while not self._closed:
164
+ try:
165
+ header = await self._reader.readexactly(4)
166
+ size = _struct.unpack('I', header)[0]
167
+ message = await self._reader.readexactly(size)
168
+ self._loop.call_soon(self.dispatch_event, 'on_receive', self, message)
169
+
170
+ except _asyncio.IncompleteReadError:
171
+ self.close()
172
+ break
173
+
174
+ async def _send(self, message):
175
+ try:
176
+ packet = _struct.pack('I', len(message)) + message
177
+ self._writer.write(packet)
178
+ await self._writer.drain()
179
+ except ConnectionResetError:
180
+ self.close()
181
+
182
+ def send(self, message):
183
+ # Synchrounously send a message in an async coroutine.
184
+ if self._writer.transport is None or self._writer.transport.is_closing():
185
+ self.close()
186
+ return
187
+ _future = _asyncio.run_coroutine_threadsafe(self._send(message), self._loop)
188
+
189
+ def on_receive(self, connection, message):
190
+ """Event for received messages."""
191
+
192
+ def on_disconnect(self, connection):
193
+ """Event for disconnection. """
194
+
195
+ def __del__(self):
196
+ assert _debug_net(f"Connection garbage collected: {self}")
197
+
198
+ def __repr__(self):
199
+ return f"{self.__class__.__name__}({id(self)})"
200
+
201
+
202
+ ClientConnection.register_event_type('on_receive')
203
+ ClientConnection.register_event_type('on_disconnect')
204
+
205
+
206
+ class Server(_EventDispatcher):
207
+
208
+ def __init__(self, address, port):
209
+ self._address = address
210
+ self._port = port
211
+
212
+ self._server = None
213
+
214
+ self._thread = _threading.Thread(target=self._run, daemon=True)
215
+ self._thread.start()
216
+
217
+ blurb = f"Server listening on {address}:{port}"
218
+ assert _debug_net(f"{'-' * len(blurb)}\n{blurb}\n{'-' * len(blurb)}")
219
+
220
+
221
+ async def handle_connection(self, reader, writer):
222
+ connection = ClientConnection(reader, writer)
223
+ self.dispatch_event('on_connection', connection)
224
+
225
+ async def _start_server(self):
226
+ self._server = await _asyncio.start_server(self.handle_connection, self._address, self._port)
227
+ async with self._server:
228
+ await self._server.serve_forever()
229
+
230
+ def _run(self):
231
+ try:
232
+ _asyncio.run(self._start_server())
233
+ except KeyboardInterrupt:
234
+ self._server.close()
235
+
236
+ def on_connection(self, connection):
237
+ """Event for new Client connections."""
238
+ assert _debug_net("Connected <---", connection)
239
+ connection.set_handler('on_disconnect', self.on_disconnect)
240
+
241
+ def on_disconnect(self, connection):
242
+ """Event for disconnected Clients."""
243
+ assert _debug_net("Disconnected --->", connection)
244
+
245
+
246
+ Server.register_event_type('on_connection')
247
+ Server.register_event_type('on_disconnect')
@@ -266,30 +266,29 @@ class DWRITE_CLUSTER_METRICS(ctypes.Structure):
266
266
  class IDWriteFontFileStream(com.IUnknown):
267
267
  _methods_ = [
268
268
  ('ReadFileFragment',
269
- com.STDMETHOD(c_void_p, POINTER(c_void_p), UINT64, UINT64, POINTER(c_void_p))),
269
+ com.STDMETHOD(POINTER(c_void_p), UINT64, UINT64, POINTER(c_void_p))),
270
270
  ('ReleaseFileFragment',
271
- com.STDMETHOD(c_void_p, c_void_p)),
271
+ com.STDMETHOD(c_void_p)),
272
272
  ('GetFileSize',
273
- com.STDMETHOD(c_void_p, POINTER(UINT64))),
273
+ com.STDMETHOD(POINTER(UINT64))),
274
274
  ('GetLastWriteTime',
275
- com.STDMETHOD(c_void_p, POINTER(UINT64))),
275
+ com.STDMETHOD(POINTER(UINT64))),
276
276
  ]
277
277
 
278
278
 
279
279
  class IDWriteFontFileLoader_LI(com.IUnknown): # Local implementation use only.
280
280
  _methods_ = [
281
281
  ('CreateStreamFromKey',
282
- com.STDMETHOD(c_void_p, c_void_p, UINT32, POINTER(POINTER(IDWriteFontFileStream))))
282
+ com.STDMETHOD(c_void_p, UINT32, POINTER(POINTER(IDWriteFontFileStream))))
283
283
  ]
284
284
 
285
285
 
286
286
  class IDWriteFontFileLoader(com.pIUnknown):
287
287
  _methods_ = [
288
288
  ('CreateStreamFromKey',
289
- com.STDMETHOD(c_void_p, c_void_p, UINT32, POINTER(POINTER(IDWriteFontFileStream))))
289
+ com.STDMETHOD(c_void_p, UINT32, POINTER(POINTER(IDWriteFontFileStream))))
290
290
  ]
291
291
 
292
-
293
292
  class IDWriteLocalFontFileLoader(IDWriteFontFileLoader, com.pIUnknown):
294
293
  _methods_ = [
295
294
  ('GetFilePathLengthFromKey',
@@ -452,13 +451,13 @@ DWRITE_READING_DIRECTION_LEFT_TO_RIGHT = 0
452
451
  class IDWriteTextAnalysisSource(com.IUnknown):
453
452
  _methods_ = [
454
453
  ('GetTextAtPosition',
455
- com.METHOD(HRESULT, c_void_p, UINT32, POINTER(c_wchar_p), POINTER(UINT32))),
454
+ com.STDMETHOD(UINT32, POINTER(c_wchar_p), POINTER(UINT32))),
456
455
  ('GetTextBeforePosition',
457
- com.STDMETHOD(UINT32, c_wchar_p, POINTER(UINT32))),
456
+ com.STDMETHOD(UINT32, POINTER(c_wchar_p), POINTER(UINT32))),
458
457
  ('GetParagraphReadingDirection',
459
458
  com.METHOD(DWRITE_READING_DIRECTION)),
460
459
  ('GetLocaleName',
461
- com.STDMETHOD(c_void_p, UINT32, POINTER(UINT32), POINTER(c_wchar_p))),
460
+ com.STDMETHOD(UINT32, POINTER(UINT32), POINTER(c_wchar_p))),
462
461
  ('GetNumberSubstitution',
463
462
  com.STDMETHOD(UINT32, POINTER(UINT32), c_void_p)),
464
463
  ]
@@ -467,7 +466,7 @@ class IDWriteTextAnalysisSource(com.IUnknown):
467
466
  class IDWriteTextAnalysisSink(com.IUnknown):
468
467
  _methods_ = [
469
468
  ('SetScriptAnalysis',
470
- com.STDMETHOD(c_void_p, UINT32, UINT32, POINTER(DWRITE_SCRIPT_ANALYSIS))),
469
+ com.STDMETHOD(UINT32, UINT32, POINTER(DWRITE_SCRIPT_ANALYSIS))),
471
470
  ('SetLineBreakpoints',
472
471
  com.STDMETHOD(UINT32, UINT32, c_void_p)),
473
472
  ('SetBidiLevel',
@@ -524,7 +523,7 @@ class TextAnalysis(com.COMObject):
524
523
 
525
524
  analyzer.AnalyzeScript(self, 0, text_length, self)
526
525
 
527
- def SetScriptAnalysis(self, this, textPosition, textLength, scriptAnalysis):
526
+ def SetScriptAnalysis(self, textPosition, textLength, scriptAnalysis):
528
527
  # textPosition - The index of the first character in the string that the result applies to
529
528
  # textLength - How many characters of the string from the index that the result applies to
530
529
  # scriptAnalysis - The analysis information for all glyphs starting at position for length.
@@ -542,10 +541,10 @@ class TextAnalysis(com.COMObject):
542
541
  return 0
543
542
  # return 0x80004001
544
543
 
545
- def GetTextBeforePosition(self, this, textPosition, textString, textLength):
544
+ def GetTextBeforePosition(self, textPosition, textString, textLength):
546
545
  raise Exception("Currently not implemented.")
547
546
 
548
- def GetTextAtPosition(self, this, textPosition, textString, textLength):
547
+ def GetTextAtPosition(self, textPosition, textString, textLength):
549
548
  # This method will retrieve a substring of the text in this layout
550
549
  # to be used in an analysis step.
551
550
  # Arguments:
@@ -568,7 +567,7 @@ class TextAnalysis(com.COMObject):
568
567
  def GetParagraphReadingDirection(self):
569
568
  return 0
570
569
 
571
- def GetLocaleName(self, this, textPosition, textLength, localeName):
570
+ def GetLocaleName(self, textPosition, textLength, localeName):
572
571
  self.__local_name = c_wchar_p("") # TODO: Add more locales.
573
572
  localeName[0] = self.__local_name
574
573
  textLength[0] = self._textlength - textPosition
@@ -954,16 +953,16 @@ class IDWriteTextLayout1(IDWriteTextLayout, IDWriteTextFormat, com.pIUnknown):
954
953
  class IDWriteFontFileEnumerator(com.IUnknown):
955
954
  _methods_ = [
956
955
  ('MoveNext',
957
- com.STDMETHOD(c_void_p, POINTER(BOOL))),
956
+ com.STDMETHOD(POINTER(BOOL))),
958
957
  ('GetCurrentFontFile',
959
- com.STDMETHOD(c_void_p, c_void_p)),
958
+ com.STDMETHOD(c_void_p)),
960
959
  ]
961
960
 
962
961
 
963
962
  class IDWriteFontCollectionLoader(com.IUnknown):
964
963
  _methods_ = [
965
964
  ('CreateEnumeratorFromKey',
966
- com.STDMETHOD(c_void_p, c_void_p, c_void_p, UINT32, POINTER(POINTER(IDWriteFontFileEnumerator)))),
965
+ com.STDMETHOD(c_void_p, c_void_p, UINT32, POINTER(POINTER(IDWriteFontFileEnumerator)))),
967
966
  ]
968
967
 
969
968
 
@@ -971,20 +970,12 @@ class MyFontFileStream(com.COMObject):
971
970
  _interfaces_ = [IDWriteFontFileStream]
972
971
 
973
972
  def __init__(self, data):
973
+ super().__init__()
974
974
  self._data = data
975
975
  self._size = len(data)
976
976
  self._ptrs = []
977
977
 
978
- def AddRef(self, this):
979
- return 1
980
-
981
- def Release(self, this):
982
- return 1
983
-
984
- def QueryInterface(self, this, refiid, tester):
985
- return 0
986
-
987
- def ReadFileFragment(self, this, fragmentStart, fileOffset, fragmentSize, fragmentContext):
978
+ def ReadFileFragment(self, fragmentStart, fileOffset, fragmentSize, fragmentContext):
988
979
  if fileOffset + fragmentSize > self._size:
989
980
  return 0x80004005 # E_FAIL
990
981
 
@@ -997,14 +988,14 @@ class MyFontFileStream(com.COMObject):
997
988
  fragmentContext[0] = None
998
989
  return 0
999
990
 
1000
- def ReleaseFileFragment(self, this, fragmentContext):
991
+ def ReleaseFileFragment(self, fragmentContext):
1001
992
  return 0
1002
993
 
1003
- def GetFileSize(self, this, fileSize):
994
+ def GetFileSize(self, fileSize):
1004
995
  fileSize[0] = self._size
1005
996
  return 0
1006
997
 
1007
- def GetLastWriteTime(self, this, lastWriteTime):
998
+ def GetLastWriteTime(self, lastWriteTime):
1008
999
  return 0x80004001 # E_NOTIMPL
1009
1000
 
1010
1001
 
@@ -1012,21 +1003,13 @@ class LegacyFontFileLoader(com.COMObject):
1012
1003
  _interfaces_ = [IDWriteFontFileLoader_LI]
1013
1004
 
1014
1005
  def __init__(self):
1006
+ super().__init__()
1015
1007
  self._streams = {}
1016
1008
 
1017
- def QueryInterface(self, this, refiid, tester):
1018
- return 0
1019
-
1020
- def AddRef(self, this):
1021
- return 1
1022
-
1023
- def Release(self, this):
1024
- return 1
1025
-
1026
- def CreateStreamFromKey(self, this, fontfileReferenceKey, fontFileReferenceKeySize, fontFileStream):
1009
+ def CreateStreamFromKey(self, fontfileReferenceKey, fontFileReferenceKeySize, fontFileStream):
1027
1010
  convert_index = cast(fontfileReferenceKey, POINTER(c_uint32))
1028
1011
 
1029
- self._ptr = ctypes.cast(self._streams[convert_index.contents.value]._pointers[IDWriteFontFileStream],
1012
+ self._ptr = ctypes.cast(self._streams[convert_index.contents.value].as_interface(IDWriteFontFileStream),
1030
1013
  POINTER(IDWriteFontFileStream))
1031
1014
  fontFileStream[0] = self._ptr
1032
1015
  return 0
@@ -1039,6 +1022,7 @@ class MyEnumerator(com.COMObject):
1039
1022
  _interfaces_ = [IDWriteFontFileEnumerator]
1040
1023
 
1041
1024
  def __init__(self, factory, loader):
1025
+ super().__init__()
1042
1026
  self.factory = cast(factory, IDWriteFactory)
1043
1027
  self.key = "pyglet_dwrite"
1044
1028
  self.size = len(self.key)
@@ -1057,7 +1041,7 @@ class MyEnumerator(com.COMObject):
1057
1041
  def AddFontData(self, fonts):
1058
1042
  self._font_data = fonts
1059
1043
 
1060
- def MoveNext(self, this, hasCurrentFile):
1044
+ def MoveNext(self, hasCurrentFile):
1061
1045
 
1062
1046
  self.current_index += 1
1063
1047
  if self.current_index != len(self._font_data):
@@ -1087,7 +1071,7 @@ class MyEnumerator(com.COMObject):
1087
1071
 
1088
1072
  pass
1089
1073
 
1090
- def GetCurrentFontFile(self, this, fontFile):
1074
+ def GetCurrentFontFile(self, fontFile):
1091
1075
  fontFile = cast(fontFile, POINTER(IDWriteFontFile))
1092
1076
  fontFile[0] = self._font_files[self.current_index]
1093
1077
  return 0
@@ -1097,24 +1081,14 @@ class LegacyCollectionLoader(com.COMObject):
1097
1081
  _interfaces_ = [IDWriteFontCollectionLoader]
1098
1082
 
1099
1083
  def __init__(self, factory, loader):
1084
+ super().__init__()
1100
1085
  self._enumerator = MyEnumerator(factory, loader)
1101
1086
 
1102
1087
  def AddFontData(self, fonts):
1103
1088
  self._enumerator.AddFontData(fonts)
1104
1089
 
1105
- def AddRef(self, this):
1106
- self._i = 1
1107
- return 1
1108
-
1109
- def Release(self, this):
1110
- self._i = 0
1111
- return 1
1112
-
1113
- def QueryInterface(self, this, refiid, tester):
1114
- return 0
1115
-
1116
- def CreateEnumeratorFromKey(self, this, factory, key, key_size, enumerator):
1117
- self._ptr = ctypes.cast(self._enumerator._pointers[IDWriteFontFileEnumerator],
1090
+ def CreateEnumeratorFromKey(self, factory, key, key_size, enumerator):
1091
+ self._ptr = ctypes.cast(self._enumerator.as_interface(IDWriteFontFileEnumerator),
1118
1092
  POINTER(IDWriteFontFileEnumerator))
1119
1093
 
1120
1094
  enumerator[0] = self._ptr
@@ -2418,7 +2392,7 @@ class Win32DirectWriteFont(base.Font):
2418
2392
 
2419
2393
  # Note: RegisterFontLoader takes a pointer. However, for legacy we implement our own callback interface.
2420
2394
  # Therefore we need to pass to the actual pointer directly.
2421
- cls._write_factory.RegisterFontFileLoader(cls._font_loader.pointers[IDWriteFontFileLoader_LI])
2395
+ cls._write_factory.RegisterFontFileLoader(cls._font_loader.as_interface(IDWriteFontFileLoader_LI))
2422
2396
 
2423
2397
  cls._font_collection_loader = LegacyCollectionLoader(cls._write_factory, cls._font_loader)
2424
2398
  cls._write_factory.RegisterFontCollectionLoader(cls._font_collection_loader)
@@ -2472,7 +2446,7 @@ class Win32DirectWriteFont(base.Font):
2472
2446
  cls._font_collection_loader = LegacyCollectionLoader(cls._write_factory, cls._font_loader)
2473
2447
 
2474
2448
  cls._write_factory.RegisterFontCollectionLoader(cls._font_collection_loader)
2475
- cls._write_factory.RegisterFontFileLoader(cls._font_loader.pointers[IDWriteFontFileLoader_LI])
2449
+ cls._write_factory.RegisterFontFileLoader(cls._font_loader.as_interface(IDWriteFontFileLoader_LI))
2476
2450
 
2477
2451
  cls._font_collection_loader.AddFontData(cls._font_cache)
2478
2452