pyglet 2.0.9__zip → 2.0.10__zip
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {pyglet-2.0.9 → pyglet-2.0.10}/.github/workflows/unittests.yml +1 -5
- {pyglet-2.0.9 → pyglet-2.0.10}/.readthedocs.yml +5 -1
- {pyglet-2.0.9 → pyglet-2.0.10}/PKG-INFO +3 -2
- {pyglet-2.0.9 → pyglet-2.0.10}/README.md +2 -1
- {pyglet-2.0.9 → pyglet-2.0.10}/RELEASE_NOTES +36 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/contrib/qt_sprite_preview.py +774 -586
- {pyglet-2.0.9 → pyglet-2.0.10}/doc/conf.py +6 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/doc/modules/shapes.rst +8 -8
- {pyglet-2.0.9 → pyglet-2.0.10}/doc/modules/window_key.rst +9 -1
- {pyglet-2.0.9 → pyglet-2.0.10}/doc/programming_guide/eventloop.rst +27 -26
- {pyglet-2.0.9 → pyglet-2.0.10}/doc/programming_guide/keyboard.rst +194 -67
- {pyglet-2.0.9 → pyglet-2.0.10}/doc/programming_guide/media.rst +297 -67
- {pyglet-2.0.9 → pyglet-2.0.10}/doc/programming_guide/quickstart.rst +1 -0
- pyglet-2.0.10/examples/clipboard.py +18 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/examples/media/media_info.py +1 -9
- pyglet-2.0.10/examples/media/soundspace/README +38 -0
- pyglet-2.0.10/examples/media/soundspace/reader.py +117 -0
- pyglet-2.0.10/examples/media/soundspace/res/bass.wav +0 -0
- pyglet-2.0.10/examples/media/soundspace/res/drums.wav +0 -0
- pyglet-2.0.10/examples/media/soundspace/res/guitar.wav +0 -0
- pyglet-2.0.10/examples/media/soundspace/res/piano.wav +0 -0
- pyglet-2.0.10/examples/media/soundspace/res/space.txt +24 -0
- pyglet-2.0.10/examples/media/soundspace/soundspace.py +660 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/examples/model/fpscamera.py +50 -38
- pyglet-2.0.10/examples/net/client.py +18 -0
- pyglet-2.0.10/examples/net/server.py +25 -0
- {pyglet-2.0.9/examples/graphics → pyglet-2.0.10/examples}/shapes.py +3 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/examples/window/fixed_resolution.py +37 -34
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/__init__.py +19 -10
- pyglet-2.0.10/pyglet/experimental/README.md +6 -0
- {pyglet-2.0.9 → pyglet-2.0.10/pyglet}/experimental/geoshader_sprite.py +29 -33
- pyglet-2.0.10/pyglet/experimental/net.py +247 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/font/directwrite.py +33 -59
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/font/win32.py +10 -1
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/gl/base.py +195 -46
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/gl/gl_info.py +4 -2
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/gl/lib.py +1 -2
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/gl/win32.py +30 -30
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/graphics/__init__.py +9 -21
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/graphics/shader.py +53 -50
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/graphics/vertexarray.py +8 -9
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/graphics/vertexbuffer.py +50 -74
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/graphics/vertexdomain.py +54 -97
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/gui/widgets.py +28 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/image/__init__.py +19 -5
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/image/buffer.py +19 -16
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/image/codecs/wic.py +1 -1
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/input/controller_db.py +19 -23
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/input/linux/evdev.py +3 -2
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/input/win32/xinput.py +2 -2
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/libs/darwin/cocoapy/cocoalibs.py +1 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/libs/win32/__init__.py +12 -1
- pyglet-2.0.10/pyglet/libs/win32/com.py +397 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/libs/win32/types.py +8 -1
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/media/codecs/wmf.py +16 -22
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/media/devices/base.py +1 -2
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/media/devices/win32.py +10 -10
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/media/drivers/base.py +2 -3
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/media/drivers/directsound/lib_dsound.py +0 -1
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/media/drivers/listener.py +1 -3
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/media/drivers/xaudio2/lib_xaudio2.py +16 -34
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/media/player.py +8 -3
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/model/__init__.py +4 -17
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/shapes.py +154 -125
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/sprite.py +4 -17
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/text/__init__.py +2 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/text/caret.py +2 -1
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/text/layout.py +171 -189
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/util.py +0 -31
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/window/__init__.py +46 -18
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/window/cocoa/__init__.py +28 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/window/key.py +10 -1
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/window/win32/__init__.py +37 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/window/xlib/__init__.py +142 -5
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet.egg-info/PKG-INFO +3 -2
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet.egg-info/SOURCES.txt +66 -2
- {pyglet-2.0.9 → pyglet-2.0.10}/tests/integration/app/test_eventloop.py +1 -2
- {pyglet-2.0.9 → pyglet-2.0.10}/tests/integration/image/test_imagegrid.py +3 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tests/integration/image/test_texture3d.py +3 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tests/integration/media/test_driver.py +15 -12
- pyglet-2.0.10/tests/interactive/screenshots/committed/tests.interactive.image.test_image.test_bmp_loading[rgb_16bpp.bmp].001.png +0 -0
- pyglet-2.0.10/tests/interactive/screenshots/committed/tests.interactive.image.test_image.test_bmp_loading[rgb_1bpp.bmp].001.png +0 -0
- pyglet-2.0.10/tests/interactive/screenshots/committed/tests.interactive.image.test_image.test_bmp_loading[rgb_24bpp.bmp].001.png +0 -0
- pyglet-2.0.10/tests/interactive/screenshots/committed/tests.interactive.image.test_image.test_bmp_loading[rgb_32bpp.bmp].001.png +0 -0
- pyglet-2.0.10/tests/interactive/screenshots/committed/tests.interactive.image.test_image.test_bmp_loading[rgb_4bpp.bmp].001.png +0 -0
- pyglet-2.0.10/tests/interactive/screenshots/committed/tests.interactive.image.test_image.test_bmp_loading[rgb_8bpp.bmp].001.png +0 -0
- pyglet-2.0.10/tests/interactive/screenshots/committed/tests.interactive.image.test_image.test_bmp_loading[rgba_32bpp.bmp].001.png +0 -0
- pyglet-2.0.10/tests/interactive/screenshots/committed/tests.interactive.image.test_image.test_buffer_copy.001.png +0 -0
- pyglet-2.0.10/tests/interactive/screenshots/committed/tests.interactive.image.test_image.test_buffer_saving.001.png +0 -0
- pyglet-2.0.10/tests/interactive/screenshots/committed/tests.interactive.image.test_image.test_checkerboard.001.png +0 -0
- pyglet-2.0.10/tests/interactive/screenshots/committed/tests.interactive.image.test_image.test_dds_loading[rgb_dxt1.dds].001.png +0 -0
- pyglet-2.0.10/tests/interactive/screenshots/committed/tests.interactive.image.test_image.test_dds_loading[rgba_dxt1.dds].001.png +0 -0
- pyglet-2.0.10/tests/interactive/screenshots/committed/tests.interactive.image.test_image.test_dds_loading[rgba_dxt3.dds].001.png +0 -0
- pyglet-2.0.10/tests/interactive/screenshots/committed/tests.interactive.image.test_image.test_dds_loading[rgba_dxt5.dds].001.png +0 -0
- pyglet-2.0.10/tests/interactive/screenshots/committed/tests.interactive.image.test_image.test_depth_buffer_saving.001.png +0 -0
- pyglet-2.0.10/tests/interactive/screenshots/committed/tests.interactive.image.test_image.test_gdkpixbuf2_loading[8bpp.gif].001.png +0 -0
- pyglet-2.0.10/tests/interactive/screenshots/committed/tests.interactive.image.test_image.test_gdkpixbuf2_loading[l.png].001.png +0 -0
- pyglet-2.0.10/tests/interactive/screenshots/committed/tests.interactive.image.test_image.test_gdkpixbuf2_loading[la.png].001.png +0 -0
- pyglet-2.0.10/tests/interactive/screenshots/committed/tests.interactive.image.test_image.test_gdkpixbuf2_loading[rgb.png].001.png +0 -0
- pyglet-2.0.10/tests/interactive/screenshots/committed/tests.interactive.image.test_image.test_gdkpixbuf2_loading[rgba.png].001.png +0 -0
- pyglet-2.0.10/tests/interactive/screenshots/committed/tests.interactive.image.test_image.test_pil_loading[la.png].001.png +0 -0
- pyglet-2.0.10/tests/interactive/screenshots/committed/tests.interactive.image.test_image.test_pil_loading[rgb.png].001.png +0 -0
- pyglet-2.0.10/tests/interactive/screenshots/committed/tests.interactive.image.test_image.test_pil_loading[rgba.png].001.png +0 -0
- pyglet-2.0.10/tests/interactive/screenshots/committed/tests.interactive.image.test_image.test_pil_saving[l.png].001.png +0 -0
- pyglet-2.0.10/tests/interactive/screenshots/committed/tests.interactive.image.test_image.test_pil_saving[la.png].001.png +0 -0
- pyglet-2.0.10/tests/interactive/screenshots/committed/tests.interactive.image.test_image.test_pypng_loading[la.png].001.png +0 -0
- pyglet-2.0.10/tests/interactive/screenshots/committed/tests.interactive.image.test_image.test_pypng_loading[rgb.png].001.png +0 -0
- pyglet-2.0.10/tests/interactive/screenshots/committed/tests.interactive.image.test_image.test_pypng_loading[rgb_8bpp.png].001.png +0 -0
- pyglet-2.0.10/tests/interactive/screenshots/committed/tests.interactive.image.test_image.test_pypng_loading[rgb_8bpp_trans.png].001.png +0 -0
- pyglet-2.0.10/tests/interactive/screenshots/committed/tests.interactive.image.test_image.test_pypng_loading[rgba.png].001.png +0 -0
- pyglet-2.0.10/tests/interactive/screenshots/committed/tests.interactive.image.test_image.test_pypng_saving[l.png].001.png +0 -0
- pyglet-2.0.10/tests/interactive/screenshots/committed/tests.interactive.image.test_image.test_pypng_saving[la.png].001.png +0 -0
- pyglet-2.0.10/tests/interactive/screenshots/committed/tests.interactive.image.test_image.test_pypng_saving[rgb.png].001.png +0 -0
- pyglet-2.0.10/tests/interactive/screenshots/committed/tests.interactive.image.test_image.test_pypng_saving[rgba.png].001.png +0 -0
- pyglet-2.0.10/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_bmp_loading[rgb_16bpp.bmp].001.png +0 -0
- pyglet-2.0.10/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_bmp_loading[rgb_1bpp.bmp].001.png +0 -0
- pyglet-2.0.10/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_bmp_loading[rgb_24bpp.bmp].001.png +0 -0
- pyglet-2.0.10/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_bmp_loading[rgb_32bpp.bmp].001.png +0 -0
- pyglet-2.0.10/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_bmp_loading[rgb_4bpp.bmp].001.png +0 -0
- pyglet-2.0.10/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_bmp_loading[rgb_8bpp.bmp].001.png +0 -0
- pyglet-2.0.10/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_bmp_loading[rgba_32bpp.bmp].001.png +0 -0
- pyglet-2.0.10/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_buffer_copy.001.png +0 -0
- pyglet-2.0.10/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_buffer_saving.001.png +0 -0
- pyglet-2.0.10/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_checkerboard.001.png +0 -0
- pyglet-2.0.10/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_dds_loading[rgb_dxt1.dds].001.png +0 -0
- pyglet-2.0.10/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_dds_loading[rgba_dxt1.dds].001.png +0 -0
- pyglet-2.0.10/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_dds_loading[rgba_dxt3.dds].001.png +0 -0
- pyglet-2.0.10/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_dds_loading[rgba_dxt5.dds].001.png +0 -0
- pyglet-2.0.10/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_depth_buffer_saving.001.png +0 -0
- pyglet-2.0.10/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_gdkpixbuf2_loading[8bpp.gif].001.png +0 -0
- pyglet-2.0.10/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_gdkpixbuf2_loading[l.png].001.png +0 -0
- pyglet-2.0.10/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_gdkpixbuf2_loading[la.png].001.png +0 -0
- pyglet-2.0.10/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_gdkpixbuf2_loading[rgb.png].001.png +0 -0
- pyglet-2.0.10/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_gdkpixbuf2_loading[rgba.png].001.png +0 -0
- pyglet-2.0.10/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_pil_loading[la.png].001.png +0 -0
- pyglet-2.0.10/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_pil_loading[rgb.png].001.png +0 -0
- pyglet-2.0.10/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_pil_loading[rgba.png].001.png +0 -0
- pyglet-2.0.10/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_pil_saving[l.png].001.png +0 -0
- pyglet-2.0.10/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_pil_saving[la.png].001.png +0 -0
- pyglet-2.0.10/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_pil_saving[rgb.png].001.png +0 -0
- pyglet-2.0.10/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_pil_saving[rgba.png].001.png +0 -0
- pyglet-2.0.10/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_pypng_loading[la.png].001.png +0 -0
- pyglet-2.0.10/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_pypng_loading[rgb.png].001.png +0 -0
- pyglet-2.0.10/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_pypng_loading[rgb_8bpp.png].001.png +0 -0
- pyglet-2.0.10/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_pypng_loading[rgb_8bpp_trans.png].001.png +0 -0
- pyglet-2.0.10/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_pypng_loading[rgba.png].001.png +0 -0
- pyglet-2.0.10/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_pypng_saving[l.png].001.png +0 -0
- pyglet-2.0.10/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_pypng_saving[la.png].001.png +0 -0
- pyglet-2.0.10/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_pypng_saving[rgb.png].001.png +0 -0
- pyglet-2.0.10/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_pypng_saving[rgba.png].001.png +0 -0
- pyglet-2.0.10/tests/interactive/shapes/test_shapes.py +179 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tests/interactive/text/test_inline_elements.py +20 -17
- {pyglet-2.0.9 → pyglet-2.0.10}/tests/interactive/text/test_inline_elements_style_change.py +15 -14
- {pyglet-2.0.9 → pyglet-2.0.10}/tests/interactive/text/test_multiline_wrap.py +18 -18
- {pyglet-2.0.9 → pyglet-2.0.10}/tests/interactive/text/test_plain.py +5 -5
- {pyglet-2.0.9 → pyglet-2.0.10}/tests/interactive/text/test_style.py +5 -5
- {pyglet-2.0.9 → pyglet-2.0.10}/tests/unit/conftest.py +5 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tests/unit/shapes/test_shapes.py +24 -2
- {pyglet-2.0.9 → pyglet-2.0.10}/tests/unit/test_events.py +31 -21
- {pyglet-2.0.9 → pyglet-2.0.10}/tools/gencontrollerdb.py +3 -3
- pyglet-2.0.9/pyglet/libs/win32/com.py +0 -340
- pyglet-2.0.9/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_bmp_loading[rgb_24bpp.bmp].001.png +0 -0
- pyglet-2.0.9/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_bmp_loading[rgb_32bpp.bmp].001.png +0 -0
- pyglet-2.0.9/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_bmp_loading[rgb_4bpp.bmp].001.png +0 -0
- pyglet-2.0.9/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_bmp_loading[rgb_8bpp.bmp].001.png +0 -0
- pyglet-2.0.9/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_bmp_loading[rgba_32bpp.bmp].001.png +0 -0
- pyglet-2.0.9/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_checkerboard.001.png +0 -0
- pyglet-2.0.9/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_dds_loading[rgb_dxt1.dds].001.png +0 -0
- pyglet-2.0.9/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_dds_loading[rgba_dxt1.dds].001.png +0 -0
- pyglet-2.0.9/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_dds_loading[rgba_dxt3.dds].001.png +0 -0
- pyglet-2.0.9/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_dds_loading[rgba_dxt5.dds].001.png +0 -0
- pyglet-2.0.9/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_gdkpixbuf2_loading[8bpp.gif].001.png +0 -0
- pyglet-2.0.9/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_gdkpixbuf2_loading[l.png].001.png +0 -0
- pyglet-2.0.9/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_gdkpixbuf2_loading[la.png].001.png +0 -0
- pyglet-2.0.9/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_gdkpixbuf2_loading[rgb.png].001.png +0 -0
- pyglet-2.0.9/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_gdkpixbuf2_loading[rgba.png].001.png +0 -0
- pyglet-2.0.9/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_pil_loading[la.png].001.png +0 -0
- pyglet-2.0.9/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_pil_loading[rgb.png].001.png +0 -0
- pyglet-2.0.9/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_pil_loading[rgba.png].001.png +0 -0
- pyglet-2.0.9/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_pypng_loading[la.png].001.png +0 -0
- pyglet-2.0.9/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_pypng_loading[rgba.png].001.png +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/.coveragerc +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/.github/ISSUE_TEMPLATE/questions--or-other.md +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/.github/workflows/codeql.yml +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/.gitignore +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/LICENSE +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/MANIFEST.in +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/contrib/aseprite_codec/README +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/contrib/aseprite_codec/asedemo.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/contrib/aseprite_codec/aseprite.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/contrib/aseprite_codec/running.ase +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/contrib/logo3d/logo3d.jpg +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/contrib/logo3d/logo3d.obj.zip +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/contrib/logo3d/logo3d.wings +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/contrib/scenemanager.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/contrib/toys/follow_mouse.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/doc/Makefile +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/doc/README.md +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/doc/_static/favicon.ico +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/doc/_static/logo.png +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/doc/_static/logo5.svg +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/doc/_static/relatedlogo.png +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/doc/external_resources.rst +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/doc/index.rst +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/doc/internal/contributing.rst +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/doc/internal/dist.rst +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/doc/internal/doc.rst +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/doc/internal/generated.rst +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/doc/internal/gl.rst +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/doc/internal/media_logging_manual.rst +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/doc/internal/media_manual.rst +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/doc/internal/testing.rst +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/doc/internal/virtualenv.rst +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/doc/internal/wraptypes-class.svg +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/doc/internal/wraptypes.rst +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/doc/make.bat +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/doc/modules/app.rst +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/doc/modules/canvas.rst +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/doc/modules/clock.rst +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/doc/modules/event.rst +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/doc/modules/font.rst +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/doc/modules/gl.rst +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/doc/modules/graphics/allocation.rst +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/doc/modules/graphics/index.rst +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/doc/modules/graphics/shader.rst +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/doc/modules/graphics/vertexbuffer.rst +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/doc/modules/graphics/vertexdomain.rst +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/doc/modules/gui.rst +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/doc/modules/image/animation.rst +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/doc/modules/image/atlas.rst +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/doc/modules/image/index.rst +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/doc/modules/info.rst +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/doc/modules/input.rst +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/doc/modules/math.rst +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/doc/modules/media.rst +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/doc/modules/media_synthesis.rst +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/doc/modules/pyglet.rst +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/doc/modules/resource.rst +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/doc/modules/sprite.rst +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/doc/modules/text/caret.rst +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/doc/modules/text/document.rst +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/doc/modules/text/index.rst +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/doc/modules/text/layout.rst +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/doc/modules/window.rst +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/doc/modules/window_mouse.rst +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/doc/programming_guide/context.rst +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/doc/programming_guide/debug.rst +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/doc/programming_guide/events.rst +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/doc/programming_guide/examplegame.rst +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/doc/programming_guide/gl.rst +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/doc/programming_guide/graphics.rst +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/doc/programming_guide/image.rst +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/doc/programming_guide/img/abstract_image.png +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/doc/programming_guide/img/abstract_image.svg +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/doc/programming_guide/img/buffer_image.png +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/doc/programming_guide/img/buffer_image.svg +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/doc/programming_guide/img/context_flow.png +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/doc/programming_guide/img/context_flow.svg +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/doc/programming_guide/img/cursor_mac_crosshair.png +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/doc/programming_guide/img/cursor_mac_default.png +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/doc/programming_guide/img/cursor_mac_hand.png +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/doc/programming_guide/img/cursor_mac_no.png +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/doc/programming_guide/img/cursor_mac_size_down.png +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/doc/programming_guide/img/cursor_mac_size_left.png +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/doc/programming_guide/img/cursor_mac_size_left_right.png +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/doc/programming_guide/img/cursor_mac_size_right.png +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/doc/programming_guide/img/cursor_mac_size_up.png +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/doc/programming_guide/img/cursor_mac_size_up_down.png +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/doc/programming_guide/img/cursor_mac_text.png +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/doc/programming_guide/img/cursor_mac_wait.png +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/doc/programming_guide/img/cursor_win_crosshair.png +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/doc/programming_guide/img/cursor_win_default.png +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/doc/programming_guide/img/cursor_win_hand.png +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/doc/programming_guide/img/cursor_win_help.png +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/doc/programming_guide/img/cursor_win_no.png +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/doc/programming_guide/img/cursor_win_size.png +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/doc/programming_guide/img/cursor_win_size_left_right.png +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/doc/programming_guide/img/cursor_win_size_nesw.png +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/doc/programming_guide/img/cursor_win_size_nwse.png +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/doc/programming_guide/img/cursor_win_size_up_down.png +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/doc/programming_guide/img/cursor_win_text.png +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/doc/programming_guide/img/cursor_win_wait.png +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/doc/programming_guide/img/cursor_win_wait_arrow.png +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/doc/programming_guide/img/explosion.png +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/doc/programming_guide/img/font_metrics.png +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/doc/programming_guide/img/font_metrics.svg +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/doc/programming_guide/img/image_classes.png +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/doc/programming_guide/img/image_classes.svg +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/doc/programming_guide/img/image_grid.png +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/doc/programming_guide/img/image_grid.svg +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/doc/programming_guide/img/image_sequence.png +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/doc/programming_guide/img/image_sequence.svg +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/doc/programming_guide/img/mouse_coordinates.png +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/doc/programming_guide/img/mouse_coordinates.svg +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/doc/programming_guide/img/screens.png +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/doc/programming_guide/img/screens.svg +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/doc/programming_guide/img/text_classes.png +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/doc/programming_guide/img/text_classes.svg +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/doc/programming_guide/img/window_location.png +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/doc/programming_guide/img/window_location.svg +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/doc/programming_guide/img/window_osx_borderless.png +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/doc/programming_guide/img/window_osx_default.png +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/doc/programming_guide/img/window_osx_dialog.png +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/doc/programming_guide/img/window_osx_tool.png +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/doc/programming_guide/img/window_xp_default.png +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/doc/programming_guide/img/window_xp_dialog.png +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/doc/programming_guide/img/window_xp_overlay.png +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/doc/programming_guide/img/window_xp_tool.png +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/doc/programming_guide/img/window_xp_transparent.png +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/doc/programming_guide/input.rst +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/doc/programming_guide/installation.rst +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/doc/programming_guide/math.rst +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/doc/programming_guide/migration.rst +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/doc/programming_guide/mouse.rst +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/doc/programming_guide/options.rst +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/doc/programming_guide/resources.rst +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/doc/programming_guide/shapes.rst +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/doc/programming_guide/text.rst +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/doc/programming_guide/time.rst +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/doc/programming_guide/windowing.rst +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/doc/requirements.txt +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/examples/events/events_key_state_handler.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/examples/events/register_event_type.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/examples/events/window_events.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/examples/events/window_platform_event.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/examples/file_dialog.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/examples/game/resources/asteroid.png +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/examples/game/resources/bullet.png +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/examples/game/resources/bullet.wav +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/examples/game/resources/engine_flame.png +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/examples/game/resources/player.png +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/examples/game/version1/asteroid.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/examples/game/version1/game/__init__.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/examples/game/version1/game/load.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/examples/game/version1/game/resources.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/examples/game/version2/asteroid.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/examples/game/version2/game/__init__.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/examples/game/version2/game/load.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/examples/game/version2/game/physicalobject.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/examples/game/version2/game/player.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/examples/game/version2/game/resources.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/examples/game/version3/asteroid.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/examples/game/version3/game/__init__.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/examples/game/version3/game/load.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/examples/game/version3/game/physicalobject.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/examples/game/version3/game/player.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/examples/game/version3/game/resources.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/examples/game/version3/game/util.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/examples/game/version4/asteroid.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/examples/game/version4/game/__init__.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/examples/game/version4/game/asteroid.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/examples/game/version4/game/bullet.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/examples/game/version4/game/load.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/examples/game/version4/game/physicalobject.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/examples/game/version4/game/player.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/examples/game/version4/game/resources.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/examples/game/version4/game/util.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/examples/game/version5/asteroid.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/examples/game/version5/game/__init__.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/examples/game/version5/game/asteroid.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/examples/game/version5/game/bullet.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/examples/game/version5/game/load.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/examples/game/version5/game/physicalobject.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/examples/game/version5/game/player.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/examples/game/version5/game/resources.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/examples/game/version5/game/util.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/examples/graphics/image_convert.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/examples/graphics/image_display.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/examples/gui/bar.png +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/examples/gui/button_down.png +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/examples/gui/button_hover.png +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/examples/gui/button_up.png +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/examples/gui/knob.png +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/examples/gui/widgets.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/examples/hello_world.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/examples/input/apple_remote.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/examples/input/controller.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/examples/input/input.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/examples/input/joystick.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/examples/input/tablet.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/examples/media/media_player.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/examples/media/noisy/README +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/examples/media/noisy/ball.png +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/examples/media/noisy/ball.wav +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/examples/media/noisy/noisy.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/examples/media/synthesizer.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/examples/media/video.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/examples/model/box.mtl +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/examples/model/box.obj +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/examples/model/logo3d.mtl +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/examples/model/logo3d.obj +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/examples/model/model.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/examples/model/pyglet.png +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/examples/opengl/compute_shader.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/examples/opengl/egl_context.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/examples/opengl/opengl.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/examples/opengl/opengl_context.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/examples/opengl/opengl_core.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/examples/opengl/opengl_scissor.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/examples/opengl/opengl_shader.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/examples/opengl/pyglet.png +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/examples/programming_guide/animation.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/examples/programming_guide/dinosaur.gif +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/examples/programming_guide/events.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/examples/programming_guide/hello_world.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/examples/programming_guide/image_viewer.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/examples/programming_guide/kitten.jpg +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/examples/programming_guide/window_subclass.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/examples/resources/kitten.jpg +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/examples/resources/pyglet.png +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/examples/sprite/depth_sprite.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/examples/sprite/display_sprite.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/examples/sprite/multi_texture_sprite.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/examples/sprite/sprite_batching.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/examples/text/advanced_font.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/examples/text/font_comparison.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/examples/text/html_label.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/examples/text/pyglet.png +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/examples/text/text_input.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/examples/timer.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/examples/window/camera.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/examples/window/camera_group.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/examples/window/multiple_windows.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/examples/window/overlay_window.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/examples/window/transparent_window.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/experimental/dist_field/README +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/experimental/dist_field/genfield.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/experimental/dist_field/py.df.png +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/experimental/dist_field/py.png +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/experimental/dist_field/renderfield.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/experimental/flaccodec.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/experimental/hello_world.svg +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/experimental/spritebenchmark.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/experimental/svg_test.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/experimental/wayland/gbm_egl_context.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/experimental/win32priority.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/make.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/app/__init__.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/app/base.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/app/cocoa.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/app/win32.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/app/xlib.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/canvas/__init__.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/canvas/base.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/canvas/cocoa.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/canvas/headless.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/canvas/win32.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/canvas/xlib.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/canvas/xlib_vidmoderestore.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/clock.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/customtypes.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/event.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/extlibs/__init__.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/extlibs/png.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/font/__init__.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/font/base.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/font/fontconfig.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/font/freetype.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/font/freetype_lib.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/font/quartz.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/font/ttf.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/font/user.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/font/win32query.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/gl/__init__.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/gl/agl.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/gl/cocoa.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/gl/gl.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/gl/gl_compat.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/gl/glx.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/gl/glx_info.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/gl/glxext_arb.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/gl/glxext_mesa.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/gl/glxext_nv.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/gl/headless.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/gl/lib_agl.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/gl/lib_glx.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/gl/lib_wgl.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/gl/wgl.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/gl/wgl_info.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/gl/wglext_arb.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/gl/wglext_nv.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/gl/xlib.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/graphics/allocation.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/gui/__init__.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/gui/frame.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/image/animation.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/image/atlas.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/image/codecs/__init__.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/image/codecs/bmp.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/image/codecs/dds.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/image/codecs/gdiplus.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/image/codecs/gdkpixbuf2.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/image/codecs/gif.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/image/codecs/pil.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/image/codecs/png.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/image/codecs/quartz.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/image/codecs/s3tc.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/info.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/input/__init__.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/input/base.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/input/controller.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/input/linux/__init__.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/input/linux/evdev_constants.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/input/linux/x11_xinput.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/input/linux/x11_xinput_tablet.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/input/macos/__init__.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/input/macos/darwin_hid.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/input/win32/__init__.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/input/win32/directinput.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/input/win32/wintab.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/lib.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/libs/__init__.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/libs/darwin/__init__.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/libs/darwin/cocoapy/__init__.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/libs/darwin/cocoapy/cocoatypes.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/libs/darwin/cocoapy/runtime.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/libs/darwin/coreaudio.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/libs/darwin/quartzkey.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/libs/egl/__init__.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/libs/egl/egl.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/libs/egl/eglext.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/libs/egl/lib.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/libs/wayland/__init__.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/libs/wayland/gbm.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/libs/wayland/xkbcommon.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/libs/win32/constants.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/libs/win32/context_managers.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/libs/win32/dinput.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/libs/win32/libwintab.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/libs/win32/winkey.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/libs/x11/__init__.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/libs/x11/cursorfont.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/libs/x11/xf86vmode.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/libs/x11/xinerama.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/libs/x11/xinput.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/libs/x11/xlib.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/libs/x11/xsync.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/math.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/media/__init__.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/media/buffered_logger.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/media/codecs/__init__.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/media/codecs/base.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/media/codecs/coreaudio.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/media/codecs/ffmpeg.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/media/codecs/ffmpeg_lib/__init__.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/media/codecs/ffmpeg_lib/compat.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/media/codecs/ffmpeg_lib/libavcodec.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/media/codecs/ffmpeg_lib/libavformat.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/media/codecs/ffmpeg_lib/libavutil.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/media/codecs/ffmpeg_lib/libswresample.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/media/codecs/ffmpeg_lib/libswscale.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/media/codecs/gstreamer.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/media/codecs/pyogg.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/media/codecs/wave.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/media/devices/__init__.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/media/drivers/__init__.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/media/drivers/directsound/__init__.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/media/drivers/directsound/adaptation.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/media/drivers/directsound/exceptions.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/media/drivers/directsound/interface.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/media/drivers/openal/__init__.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/media/drivers/openal/adaptation.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/media/drivers/openal/interface.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/media/drivers/openal/lib_alc.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/media/drivers/openal/lib_openal.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/media/drivers/pulse/__init__.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/media/drivers/pulse/adaptation.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/media/drivers/pulse/interface.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/media/drivers/pulse/lib_pulseaudio.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/media/drivers/silent/__init__.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/media/drivers/silent/adaptation.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/media/drivers/xaudio2/__init__.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/media/drivers/xaudio2/adaptation.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/media/drivers/xaudio2/interface.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/media/exceptions.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/media/instrumentation.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/media/mediathreads.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/media/synthesis.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/model/codecs/__init__.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/model/codecs/gltf.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/model/codecs/obj.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/resource.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/text/document.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/text/formats/__init__.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/text/formats/attributed.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/text/formats/html.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/text/formats/plaintext.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/text/formats/structured.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/text/runlist.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/window/cocoa/pyglet_delegate.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/window/cocoa/pyglet_textview.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/window/cocoa/pyglet_view.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/window/cocoa/pyglet_window.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/window/cocoa/systemcursor.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/window/event.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/window/headless/__init__.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/window/mouse.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet.egg-info/dependency_links.txt +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet.egg-info/top_level.txt +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet.egg-info/zip-safe +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyproject.toml +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pytest.ini +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/setup.cfg +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/setup.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tests/__init__.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tests/annotations.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tests/base/__init__.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tests/base/data.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tests/base/event_loop.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tests/base/interactive.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tests/base/performance.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tests/base/test_interactive_test_base.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tests/conftest.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tests/data/fonts/README +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tests/data/fonts/action_man.ttf +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tests/data/fonts/action_man_bold.ttf +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tests/data/fonts/action_man_bold_italic.ttf +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tests/data/fonts/action_man_italic.ttf +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tests/data/fonts/courR12-ISO8859-1.pcf +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tests/data/images/8bpp.gif +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tests/data/images/cursor.png +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tests/data/images/dinosaur.gif +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tests/data/images/gdk_close.png +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tests/data/images/grey_background.png +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tests/data/images/icon1.png +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tests/data/images/icon_size1.png +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tests/data/images/icon_size2.png +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tests/data/images/icon_size3.png +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tests/data/images/icon_size4.png +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tests/data/images/icon_size5.png +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tests/data/images/l.png +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tests/data/images/la.png +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tests/data/images/multitexture.png +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tests/data/images/rgb.png +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tests/data/images/rgb_16bpp.bmp +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tests/data/images/rgb_1bpp.bmp +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tests/data/images/rgb_24bpp.bmp +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tests/data/images/rgb_32bpp.bmp +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tests/data/images/rgb_4bpp.bmp +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tests/data/images/rgb_8bpp.bmp +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tests/data/images/rgb_8bpp.png +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tests/data/images/rgb_8bpp_trans.png +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tests/data/images/rgb_dxt1.dds +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tests/data/images/rgba.png +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tests/data/images/rgba_32bpp.bmp +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tests/data/images/rgba_dxt1.dds +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tests/data/images/rgba_dxt3.dds +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tests/data/images/rgba_dxt5.dds +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tests/data/images/tests.interactive.test_interactive_test_base._Test.test_1.001.png +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tests/data/media/README +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tests/data/media/alert.wav +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tests/data/media/login.wav +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tests/data/media/logout.wav +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tests/data/media/receive.wav +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tests/data/media/send.wav +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tests/data/media/synthesis_sawtooth_16_11025_1ch.wav +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tests/data/media/synthesis_sawtooth_16_44800_1ch.wav +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tests/data/media/synthesis_silence_16_11025_1ch.wav +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tests/data/media/synthesis_silence_16_44800_1ch.wav +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tests/data/media/synthesis_simplefm_16_11025_1ch.wav +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tests/data/media/synthesis_simplefm_16_44800_1ch.wav +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tests/data/media/synthesis_sine_16_11025_1ch.wav +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tests/data/media/synthesis_sine_16_44800_1ch.wav +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tests/data/media/synthesis_square_16_11025_1ch.wav +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tests/data/media/synthesis_square_16_44800_1ch.wav +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tests/data/media/synthesis_triangle_16_11025_1ch.wav +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tests/data/media/synthesis_triangle_16_44800_1ch.wav +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tests/data/models/logo3d.mtl +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tests/data/models/logo3d.obj +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tests/integration/__init__.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tests/integration/app/__init__.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tests/integration/font/test_fontconfig.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tests/integration/font/test_freetype_face.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tests/integration/graphics/__init__.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tests/integration/graphics/test_allocation.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tests/integration/image/__init__.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tests/integration/image/test_gdkpixbuf2.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tests/integration/media/__init__.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tests/integration/media/mock_player.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tests/integration/media/test_directsound.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tests/integration/media/test_openal.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tests/integration/media/test_player.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tests/integration/media/test_pulse.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tests/integration/model/__init__.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tests/integration/model/test_loading.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tests/integration/platform/__init__.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tests/integration/platform/test_linux_fontconfig.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tests/integration/platform/test_win_context_managers.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tests/integration/platform/test_win_multicore_clock.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tests/integration/resource/__init__.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tests/integration/resource/dir1/dir1/f3.txt +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tests/integration/resource/dir1/f2.txt +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tests/integration/resource/dir1/res.zip +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tests/integration/resource/dir2/f6.txt +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tests/integration/resource/f1.txt +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tests/integration/resource/rgbm.png +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tests/integration/resource/test_resource_image_loading.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tests/integration/resource/test_resource_loading.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tests/integration/text/__init__.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tests/integration/text/test_empty_document.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tests/integration/window/__init__.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tests/integration/window/test_context_share.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tests/integration/window/test_event_sequence.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tests/integration/window/test_window_caption.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tests/interactive/__init__.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tests/interactive/conftest.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tests/interactive/graphics/__init__.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tests/interactive/graphics/test_multitexture.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tests/interactive/image/__init__.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tests/interactive/image/test_image.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tests/interactive/media/__init__.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tests/interactive/media/test_player.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tests/interactive/screenshots/committed/README +0 -0
- /pyglet-2.0.9/tests/interactive/screenshots/session/tests.interactive.graphics.test_multitexture.test_multitexture.001.png → /pyglet-2.0.10/tests/interactive/screenshots/committed/tests.interactive.image.test_image.test_pil_saving[rgb.png].001.png +0 -0
- /pyglet-2.0.9/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_bmp_loading[rgb_16bpp.bmp].001.png → /pyglet-2.0.10/tests/interactive/screenshots/committed/tests.interactive.image.test_image.test_pil_saving[rgba.png].001.png +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tests/interactive/screenshots/session/README +0 -0
- /pyglet-2.0.9/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_bmp_loading[rgb_1bpp.bmp].001.png → /pyglet-2.0.10/tests/interactive/screenshots/session/tests.interactive.graphics.test_multitexture.test_multitexture.001.png +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_pil_loading[l.png].001.png +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_pypng_loading[l.png].001.png +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tests/interactive/text/__init__.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tests/interactive/text/test_caret_color.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tests/interactive/text/test_content_valign.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tests/interactive/text/test_html.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tests/interactive/window/__init__.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tests/interactive/window/test_window_events.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tests/interactive/window/test_window_fullscreen.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tests/interactive/window/test_window_modes.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tests/interactive/window/test_window_multisample.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tests/interactive/window/test_window_open.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tests/interactive/window/test_window_settings.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tests/interactive/window/test_window_styles.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tests/interactive/window/window_util.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tests/interactive/windowed_test_base.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tests/requirements.txt +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tests/unit/__init__.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tests/unit/media/__init__.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tests/unit/media/test_listener.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tests/unit/media/test_player.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tests/unit/media/test_sources.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tests/unit/media/test_synthesis.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tests/unit/shapes/__init__.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tests/unit/shapes/conftest.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tests/unit/shapes/test_bordered_rectangle.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tests/unit/test_atlas.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tests/unit/test_clock.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tests/unit/test_clock_freq.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tests/unit/test_font.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tests/unit/test_input.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tests/unit/test_math.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tests/unit/test_resource_path.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tests/unit/test_sprite.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tests/unit/test_text.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tests/unit/text/__init__.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tests/unit/text/test_caret.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tests/unit/text/test_layout.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tools/al_info.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tools/ffmpeg/bokeh_timeline.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tools/ffmpeg/compare.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tools/ffmpeg/configure.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tools/ffmpeg/extractors.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tools/ffmpeg/fs.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tools/ffmpeg/mp.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tools/ffmpeg/mpexceptions.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tools/ffmpeg/playmany.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tools/ffmpeg/readme_ffmpeg_debbuging_branch.txt +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tools/ffmpeg/readme_run_tests.txt +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tools/ffmpeg/report.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tools/ffmpeg/reports.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tools/ffmpeg/retry_crashed.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tools/ffmpeg/run_test_suite.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tools/ffmpeg/summarize.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tools/ffmpeg/test_instrumentation.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tools/ffmpeg/timeline.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tools/gendist.sh +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tools/gengl.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tools/gengl_old.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tools/genwrappers.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tools/gl.template +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tools/gl.xml +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tools/gl_info.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tools/inspect_font.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tools/requirements.txt +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tools/wgl.h +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tools/wraptypes/__init__.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tools/wraptypes/cparser.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tools/wraptypes/ctypesparser.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tools/wraptypes/lex.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tools/wraptypes/preprocessor.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tools/wraptypes/wrap.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tools/wraptypes/yacc.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/website/LICENSE.txt +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/website/README.rst +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/website/assets/favicon.ico +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/website/assets/static/css/example-custom-styles.css +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/website/assets/static/images/pyglet.png +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/website/content/404.html/contents.lr +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/website/content/404.html/ngc-5793.jpg +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/website/content/authors/benjamin/contents.lr +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/website/content/authors/benjamin/pyglet.png +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/website/content/authors/contents.lr +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/website/content/blog/contents.lr +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/website/content/blog/welcome-blog/contents.lr +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/website/content/contents.lr +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/website/content/eclipse.jpg +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/website/pyglet.lektorproject +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/website/themes/lektor-icon/AUTHORS.txt +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/website/themes/lektor-icon/CHANGELOG.md +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/website/themes/lektor-icon/CONTRIBUTING.md +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/website/themes/lektor-icon/LICENSE.txt +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/website/themes/lektor-icon/NOTICE.txt +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/website/themes/lektor-icon/README.md +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/website/themes/lektor-icon/assets/static/css/bootstrap.css +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/website/themes/lektor-icon/assets/static/css/icomoon.css +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/website/themes/lektor-icon/assets/static/css/magnific-popup.css +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/website/themes/lektor-icon/assets/static/css/style.css +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/website/themes/lektor-icon/assets/static/fonts/bootstrap/glyphicons-halflings-regular.ttf +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/website/themes/lektor-icon/assets/static/fonts/bootstrap/glyphicons-halflings-regular.woff +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/website/themes/lektor-icon/assets/static/fonts/bootstrap/glyphicons-halflings-regular.woff2 +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/website/themes/lektor-icon/assets/static/fonts/icomoon/icomoon.ttf +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/website/themes/lektor-icon/assets/static/fonts/icomoon/icomoon.woff +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/website/themes/lektor-icon/assets/static/images/Preloader_2.gif +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/website/themes/lektor-icon/assets/static/images/placeholder_person.png +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/website/themes/lektor-icon/assets/static/js/jquery-3.3.1.min.js +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/website/themes/lektor-icon/assets/static/js/jquery.easing.min.js +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/website/themes/lektor-icon/assets/static/js/jquery.magnific-popup.min.js +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/website/themes/lektor-icon/assets/static/js/jquery.stellar.js +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/website/themes/lektor-icon/assets/static/js/jquery.stellar.min.js +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/website/themes/lektor-icon/assets/static/js/jquery.waypoints.min.js +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/website/themes/lektor-icon/assets/static/js/magnific-popup-options.js +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/website/themes/lektor-icon/assets/static/js/main-singlelayout.js +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/website/themes/lektor-icon/assets/static/js/main.js +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/website/themes/lektor-icon/flowblocks/content.ini +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/website/themes/lektor-icon/flowblocks/gallery.ini +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/website/themes/lektor-icon/flowblocks/gallery_item.ini +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/website/themes/lektor-icon/flowblocks/member.ini +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/website/themes/lektor-icon/flowblocks/mission.ini +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/website/themes/lektor-icon/flowblocks/mission_tab.ini +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/website/themes/lektor-icon/flowblocks/service.ini +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/website/themes/lektor-icon/flowblocks/services.ini +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/website/themes/lektor-icon/flowblocks/team.ini +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/website/themes/lektor-icon/images/blog-index.png +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/website/themes/lektor-icon/images/full-blog.png +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/website/themes/lektor-icon/images/full-page.png +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/website/themes/lektor-icon/images/gallery-404.png +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/website/themes/lektor-icon/images/gallery-singlepage.png +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/website/themes/lektor-icon/images/mainpage-screenshots.png +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/website/themes/lektor-icon/images/responsive-layout.png +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/website/themes/lektor-icon/models/404.ini +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/website/themes/lektor-icon/models/author.ini +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/website/themes/lektor-icon/models/authors.ini +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/website/themes/lektor-icon/models/blog-post.ini +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/website/themes/lektor-icon/models/blog.ini +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/website/themes/lektor-icon/models/page.ini +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/website/themes/lektor-icon/models/single-layout.ini +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/website/themes/lektor-icon/templates/404.html +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/website/themes/lektor-icon/templates/author.html +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/website/themes/lektor-icon/templates/authors.html +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/website/themes/lektor-icon/templates/blocks/content.html +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/website/themes/lektor-icon/templates/blocks/gallery.html +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/website/themes/lektor-icon/templates/blocks/mission.html +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/website/themes/lektor-icon/templates/blocks/services.html +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/website/themes/lektor-icon/templates/blocks/team.html +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/website/themes/lektor-icon/templates/blog-layout.html +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/website/themes/lektor-icon/templates/blog-post.html +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/website/themes/lektor-icon/templates/blog.html +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/website/themes/lektor-icon/templates/layout.html +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/website/themes/lektor-icon/templates/macros/blog.html +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/website/themes/lektor-icon/templates/macros/pagination.html +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/website/themes/lektor-icon/templates/none.html +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/website/themes/lektor-icon/templates/page.html +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/website/themes/lektor-icon/templates/single-layout.html +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/website/themes/lektor-icon/theme.ini +0 -0
|
@@ -1,4 +1,10 @@
|
|
|
1
|
+
import weakref
|
|
2
|
+
|
|
1
3
|
from enum import Enum
|
|
4
|
+
import threading
|
|
5
|
+
from typing import Tuple
|
|
6
|
+
|
|
7
|
+
import pyglet
|
|
2
8
|
|
|
3
9
|
from pyglet import gl
|
|
4
10
|
from pyglet.gl import gl_info
|
|
@@ -162,7 +168,7 @@ class Config:
|
|
|
162
168
|
|
|
163
169
|
|
|
164
170
|
class CanvasConfig(Config):
|
|
165
|
-
"""OpenGL configuration for a particular canvas.
|
|
171
|
+
"""An OpenGL configuration for a particular canvas.
|
|
166
172
|
|
|
167
173
|
Use `Config.match` to obtain an instance of this class.
|
|
168
174
|
|
|
@@ -204,16 +210,16 @@ class CanvasConfig(Config):
|
|
|
204
210
|
|
|
205
211
|
class ObjectSpace:
|
|
206
212
|
def __init__(self):
|
|
207
|
-
#
|
|
208
|
-
# the next time this object space is active.
|
|
213
|
+
# Objects scheduled for deletion the next time this object space is active.
|
|
209
214
|
self.doomed_textures = []
|
|
210
215
|
self.doomed_buffers = []
|
|
211
|
-
self.doomed_vaos = []
|
|
212
216
|
self.doomed_shader_programs = []
|
|
217
|
+
self.doomed_shaders = []
|
|
218
|
+
self.doomed_renderbuffers = []
|
|
213
219
|
|
|
214
220
|
|
|
215
221
|
class Context:
|
|
216
|
-
"""OpenGL context for drawing.
|
|
222
|
+
"""An OpenGL context for drawing.
|
|
217
223
|
|
|
218
224
|
Use `CanvasConfig.create_context` to create a context.
|
|
219
225
|
|
|
@@ -231,14 +237,25 @@ class Context:
|
|
|
231
237
|
self.context_share = context_share
|
|
232
238
|
self.canvas = None
|
|
233
239
|
|
|
240
|
+
self.doomed_vaos = []
|
|
241
|
+
self.doomed_framebuffers = []
|
|
242
|
+
|
|
234
243
|
if context_share:
|
|
235
244
|
self.object_space = context_share.object_space
|
|
236
245
|
else:
|
|
237
246
|
self.object_space = ObjectSpace()
|
|
238
247
|
|
|
248
|
+
self._cached_programs = weakref.WeakValueDictionary()
|
|
249
|
+
|
|
239
250
|
def __repr__(self):
|
|
240
251
|
return f"{self.__class__.__name__}(id={id(self)}, share={self.context_share})"
|
|
241
252
|
|
|
253
|
+
def __enter__(self):
|
|
254
|
+
self.set_current()
|
|
255
|
+
|
|
256
|
+
def __exit__(self, exc_type, exc_val, exc_tb):
|
|
257
|
+
return
|
|
258
|
+
|
|
242
259
|
def attach(self, canvas):
|
|
243
260
|
if self.canvas is not None:
|
|
244
261
|
self.detach()
|
|
@@ -263,28 +280,49 @@ class Context:
|
|
|
263
280
|
self._info = gl_info.GLInfo()
|
|
264
281
|
self._info.set_active_context()
|
|
265
282
|
|
|
266
|
-
# Release Textures, Buffers, and VAOs on this context scheduled for
|
|
267
|
-
# deletion. Note that the garbage collector may introduce a race
|
|
268
|
-
# condition, so operate on a copy, and clear the list afterwards.
|
|
269
283
|
if self.object_space.doomed_textures:
|
|
270
|
-
|
|
271
|
-
textures = (gl.GLuint * len(textures))(*textures)
|
|
272
|
-
gl.glDeleteTextures(len(textures), textures)
|
|
273
|
-
self.object_space.doomed_textures.clear()
|
|
284
|
+
self._delete_objects(self.object_space.doomed_textures, gl.glDeleteTextures)
|
|
274
285
|
if self.object_space.doomed_buffers:
|
|
275
|
-
|
|
276
|
-
buffers = (gl.GLuint * len(buffers))(*buffers)
|
|
277
|
-
gl.glDeleteBuffers(len(buffers), buffers)
|
|
278
|
-
self.object_space.doomed_buffers.clear()
|
|
279
|
-
if self.object_space.doomed_vaos:
|
|
280
|
-
vaos = self.object_space.doomed_vaos[:]
|
|
281
|
-
vaos = (gl.GLuint * len(vaos))(*vaos)
|
|
282
|
-
gl.glDeleteVertexArrays(len(vaos), vaos)
|
|
283
|
-
self.object_space.doomed_vaos.clear()
|
|
286
|
+
self._delete_objects(self.object_space.doomed_buffers, gl.glDeleteBuffers)
|
|
284
287
|
if self.object_space.doomed_shader_programs:
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
+
self._delete_objects_one_by_one(self.object_space.doomed_shader_programs,
|
|
289
|
+
gl.glDeleteProgram)
|
|
290
|
+
if self.object_space.doomed_shaders:
|
|
291
|
+
self._delete_objects_one_by_one(self.object_space.doomed_shaders, gl.glDeleteShader)
|
|
292
|
+
if self.object_space.doomed_renderbuffers:
|
|
293
|
+
self._delete_objects(self.object_space.doomed_renderbuffers, gl.glDeleteRenderbuffers)
|
|
294
|
+
|
|
295
|
+
if self.doomed_vaos:
|
|
296
|
+
self._delete_objects(self.doomed_vaos, gl.glDeleteVertexArrays)
|
|
297
|
+
if self.doomed_framebuffers:
|
|
298
|
+
self._delete_objects(self.doomed_framebuffers, gl.glDeleteFramebuffers)
|
|
299
|
+
|
|
300
|
+
# For the functions below:
|
|
301
|
+
# The garbage collector introduces a race condition.
|
|
302
|
+
# The provided list might be appended to (and only appended to) while this
|
|
303
|
+
# method runs, as it's a `doomed_*` list either on the context or its
|
|
304
|
+
# object space. If `count` wasn't stored in a local, this method might
|
|
305
|
+
# leak objects.
|
|
306
|
+
def _delete_objects(self, list_, deletion_func):
|
|
307
|
+
"""Release all OpenGL objects in the given list using the supplied
|
|
308
|
+
deletion function with the signature ``(GLuint count, GLuint *names)``.
|
|
309
|
+
"""
|
|
310
|
+
count = len(list_)
|
|
311
|
+
to_delete = list_[:count]
|
|
312
|
+
del list_[:count]
|
|
313
|
+
|
|
314
|
+
deletion_func(count, (gl.GLuint * count)(*to_delete))
|
|
315
|
+
|
|
316
|
+
def _delete_objects_one_by_one(self, list_, deletion_func):
|
|
317
|
+
"""Similar to ``_delete_objects``, but assumes the deletion functions's
|
|
318
|
+
signature to be ``(GLuint name)``, calling it once for each object.
|
|
319
|
+
"""
|
|
320
|
+
count = len(list_)
|
|
321
|
+
to_delete = list_[:count]
|
|
322
|
+
del list_[:count]
|
|
323
|
+
|
|
324
|
+
for name in to_delete:
|
|
325
|
+
deletion_func(gl.GLuint(name))
|
|
288
326
|
|
|
289
327
|
def destroy(self):
|
|
290
328
|
"""Release the context.
|
|
@@ -304,26 +342,80 @@ class Context:
|
|
|
304
342
|
if gl._shadow_window is not None:
|
|
305
343
|
gl._shadow_window.switch_to()
|
|
306
344
|
|
|
345
|
+
def _safe_to_operate_on_object_space(self):
|
|
346
|
+
"""Return whether it is safe to interact with this context's object
|
|
347
|
+
space.
|
|
348
|
+
|
|
349
|
+
This is considered to be the case if the currently active context's
|
|
350
|
+
object space is the same as this context's object space and this
|
|
351
|
+
method is called from the main thread.
|
|
352
|
+
"""
|
|
353
|
+
return (
|
|
354
|
+
self.object_space is gl.current_context.object_space and
|
|
355
|
+
threading.current_thread() is threading.main_thread()
|
|
356
|
+
)
|
|
357
|
+
|
|
358
|
+
def _safe_to_operate_on(self):
|
|
359
|
+
"""Return whether it is safe to interact with this context.
|
|
360
|
+
|
|
361
|
+
This is considered to be the case if it's the current context and this
|
|
362
|
+
method is called from the main thread.
|
|
363
|
+
"""
|
|
364
|
+
return gl.current_context is self and threading.current_thread() is threading.main_thread()
|
|
365
|
+
|
|
366
|
+
def create_program(self, *sources: Tuple[str, str], program_class=None):
|
|
367
|
+
"""Create a ShaderProgram from OpenGL GLSL source.
|
|
368
|
+
|
|
369
|
+
This is a convenience method that takes one or more tuples of
|
|
370
|
+
(source_string, shader_type), and returns a
|
|
371
|
+
:py:class:`~pyglet.graphics.shader.ShaderProgram` instance.
|
|
372
|
+
|
|
373
|
+
`source_string` is OpenGL GLSL source code as a str, and `shader_type`
|
|
374
|
+
is the OpenGL shader type, such as "vertex" or "fragment". See
|
|
375
|
+
:py:class:`~pyglet.graphics.shader.Shader` for more information.
|
|
376
|
+
|
|
377
|
+
.. note:: This method is cached. Given the same shader sources, the
|
|
378
|
+
same ShaderProgram instance will be returned. For more
|
|
379
|
+
control over the ShaderProgram lifecycle, it is recommended
|
|
380
|
+
to manually create Shaders and link ShaderPrograms.
|
|
381
|
+
|
|
382
|
+
.. versionadded:: 2.0.10
|
|
383
|
+
"""
|
|
384
|
+
if program := self._cached_programs.get(str(sources)):
|
|
385
|
+
return program
|
|
386
|
+
|
|
387
|
+
program_class = program_class or pyglet.graphics.shader.ShaderProgram
|
|
388
|
+
shaders = (pyglet.graphics.shader.Shader(src, srctype) for (src, srctype) in sources)
|
|
389
|
+
program = program_class(*shaders)
|
|
390
|
+
self._cached_programs[str(sources)] = program
|
|
391
|
+
|
|
392
|
+
return program
|
|
393
|
+
|
|
307
394
|
def delete_texture(self, texture_id):
|
|
308
|
-
"""Safely delete a Texture belonging to this context.
|
|
395
|
+
"""Safely delete a Texture belonging to this context's object space.
|
|
309
396
|
|
|
310
|
-
|
|
311
|
-
``glDeleteTextures
|
|
312
|
-
this context's object space is
|
|
313
|
-
|
|
397
|
+
This method will delete the texture immediately via
|
|
398
|
+
``glDeleteTextures`` if the current context's object space is the same
|
|
399
|
+
as this context's object space and it is called from the main thread.
|
|
400
|
+
|
|
401
|
+
Otherwise, the texture will only be marked for deletion, postponing
|
|
402
|
+
it until any context with the same object space becomes active again.
|
|
403
|
+
|
|
404
|
+
This makes it safe to call from anywhere, including other threads.
|
|
314
405
|
|
|
315
406
|
:Parameters:
|
|
316
407
|
`texture_id` : int
|
|
317
408
|
The OpenGL name of the Texture to delete.
|
|
318
409
|
|
|
319
410
|
"""
|
|
320
|
-
if self.
|
|
411
|
+
if self._safe_to_operate_on_object_space():
|
|
321
412
|
gl.glDeleteTextures(1, gl.GLuint(texture_id))
|
|
322
413
|
else:
|
|
323
414
|
self.object_space.doomed_textures.append(texture_id)
|
|
324
415
|
|
|
325
416
|
def delete_buffer(self, buffer_id):
|
|
326
|
-
"""Safely delete a Buffer object belonging to this context
|
|
417
|
+
"""Safely delete a Buffer object belonging to this context's object
|
|
418
|
+
space.
|
|
327
419
|
|
|
328
420
|
This method behaves similarly to `delete_texture`, though for
|
|
329
421
|
``glDeleteBuffers`` instead of ``glDeleteTextures``.
|
|
@@ -334,16 +426,73 @@ class Context:
|
|
|
334
426
|
|
|
335
427
|
.. versionadded:: 1.1
|
|
336
428
|
"""
|
|
337
|
-
if self.
|
|
429
|
+
if self._safe_to_operate_on_object_space():
|
|
338
430
|
gl.glDeleteBuffers(1, gl.GLuint(buffer_id))
|
|
339
431
|
else:
|
|
340
432
|
self.object_space.doomed_buffers.append(buffer_id)
|
|
341
433
|
|
|
434
|
+
def delete_shader_program(self, program_id):
|
|
435
|
+
"""Safely delete a Shader Program belonging to this context's
|
|
436
|
+
object space.
|
|
437
|
+
|
|
438
|
+
This method behaves similarly to `delete_texture`, though for
|
|
439
|
+
``glDeleteProgram`` instead of ``glDeleteTextures``.
|
|
440
|
+
|
|
441
|
+
:Parameters:
|
|
442
|
+
`program_id` : int
|
|
443
|
+
The OpenGL name of the Shader Program to delete.
|
|
444
|
+
|
|
445
|
+
.. versionadded:: 2.0
|
|
446
|
+
"""
|
|
447
|
+
if self._safe_to_operate_on_object_space():
|
|
448
|
+
gl.glDeleteProgram(gl.GLuint(program_id))
|
|
449
|
+
else:
|
|
450
|
+
self.object_space.doomed_shader_programs.append(program_id)
|
|
451
|
+
|
|
452
|
+
def delete_shader(self, shader_id):
|
|
453
|
+
"""Safely delete a Shader belonging to this context's object space.
|
|
454
|
+
|
|
455
|
+
This method behaves similarly to `delete_texture`, though for
|
|
456
|
+
``glDeleteShader`` instead of ``glDeleteTextures``.
|
|
457
|
+
|
|
458
|
+
:Parameters:
|
|
459
|
+
`shader_id` : int
|
|
460
|
+
The OpenGL name of the Shader to delete.
|
|
461
|
+
|
|
462
|
+
.. versionadded:: 2.0.10
|
|
463
|
+
"""
|
|
464
|
+
if self._safe_to_operate_on_object_space():
|
|
465
|
+
gl.glDeleteShader(gl.GLuint(shader_id))
|
|
466
|
+
else:
|
|
467
|
+
self.object_space.doomed_shaders.append(shader_id)
|
|
468
|
+
|
|
469
|
+
def delete_renderbuffer(self, rbo_id):
|
|
470
|
+
"""Safely delete a Renderbuffer Object belonging to this context's
|
|
471
|
+
object space.
|
|
472
|
+
|
|
473
|
+
This method behaves similarly to `delete_texture`, though for
|
|
474
|
+
``glDeleteRenderbuffers`` instead of ``glDeleteTextures``.
|
|
475
|
+
|
|
476
|
+
:Parameters:
|
|
477
|
+
`rbo_id` : int
|
|
478
|
+
The OpenGL name of the Shader Program to delete.
|
|
479
|
+
|
|
480
|
+
.. versionadded:: 2.0.10
|
|
481
|
+
"""
|
|
482
|
+
if self._safe_to_operate_on_object_space():
|
|
483
|
+
gl.glDeleteRenderbuffers(1, gl.GLuint(rbo_id))
|
|
484
|
+
else:
|
|
485
|
+
self.object_space.doomed_renderbuffers.append(rbo_id)
|
|
486
|
+
|
|
342
487
|
def delete_vao(self, vao_id):
|
|
343
488
|
"""Safely delete a Vertex Array Object belonging to this context.
|
|
344
489
|
|
|
345
|
-
|
|
346
|
-
|
|
490
|
+
If this context is not the current context or this method is not
|
|
491
|
+
called from the main thread, its deletion will be postponed until
|
|
492
|
+
this context is next made active again.
|
|
493
|
+
|
|
494
|
+
Otherwise, this method will immediately delete the VAO via
|
|
495
|
+
``glDeleteVertexArrays``.
|
|
347
496
|
|
|
348
497
|
:Parameters:
|
|
349
498
|
`vao_id` : int
|
|
@@ -351,27 +500,27 @@ class Context:
|
|
|
351
500
|
|
|
352
501
|
.. versionadded:: 2.0
|
|
353
502
|
"""
|
|
354
|
-
if
|
|
503
|
+
if self._safe_to_operate_on():
|
|
355
504
|
gl.glDeleteVertexArrays(1, gl.GLuint(vao_id))
|
|
356
505
|
else:
|
|
357
|
-
self.
|
|
506
|
+
self.doomed_vaos.append(vao_id)
|
|
358
507
|
|
|
359
|
-
def
|
|
360
|
-
"""Safely delete a
|
|
508
|
+
def delete_framebuffer(self, fbo_id):
|
|
509
|
+
"""Safely delete a Framebuffer Object belonging to this context.
|
|
361
510
|
|
|
362
|
-
This method behaves similarly to `
|
|
363
|
-
``
|
|
511
|
+
This method behaves similarly to `delete_vao`, though for
|
|
512
|
+
``glDeleteFramebuffers`` instead of ``glDeleteVertexArrays``.
|
|
364
513
|
|
|
365
514
|
:Parameters:
|
|
366
|
-
`
|
|
367
|
-
The OpenGL name of the
|
|
515
|
+
`fbo_id` : int
|
|
516
|
+
The OpenGL name of the Framebuffer Object to delete.
|
|
368
517
|
|
|
369
|
-
.. versionadded:: 2.0
|
|
518
|
+
.. versionadded:: 2.0.10
|
|
370
519
|
"""
|
|
371
|
-
if
|
|
372
|
-
gl.
|
|
520
|
+
if self._safe_to_operate_on():
|
|
521
|
+
gl.glDeleteFramebuffers(1, gl.GLuint(fbo_id))
|
|
373
522
|
else:
|
|
374
|
-
self.
|
|
523
|
+
self.doomed_framebuffers.append(fbo_id)
|
|
375
524
|
|
|
376
525
|
def get_info(self):
|
|
377
526
|
"""Get the OpenGL information for this context.
|
|
@@ -63,10 +63,12 @@ class GLInfo:
|
|
|
63
63
|
|
|
64
64
|
This method is called automatically for the default context.
|
|
65
65
|
"""
|
|
66
|
-
from pyglet.gl.gl import glGetString, glGetStringi, GL_NUM_EXTENSIONS
|
|
67
|
-
|
|
68
66
|
self._have_context = True
|
|
67
|
+
|
|
69
68
|
if not self._have_info:
|
|
69
|
+
|
|
70
|
+
from pyglet.gl.gl import glGetString, glGetStringi, GL_NUM_EXTENSIONS
|
|
71
|
+
|
|
70
72
|
self.vendor = asstr(cast(glGetString(GL_VENDOR), c_char_p).value)
|
|
71
73
|
self.renderer = asstr(cast(glGetString(GL_RENDERER), c_char_p).value)
|
|
72
74
|
self.version = asstr(cast(glGetString(GL_VERSION), c_char_p).value)
|
|
@@ -62,8 +62,7 @@ def errcheck(result, func, arguments):
|
|
|
62
62
|
print(name)
|
|
63
63
|
|
|
64
64
|
from pyglet import gl
|
|
65
|
-
|
|
66
|
-
if not context:
|
|
65
|
+
if not gl.current_context:
|
|
67
66
|
raise GLException('No GL context; create a Window first')
|
|
68
67
|
error = gl.glGetError()
|
|
69
68
|
if error:
|
|
@@ -68,12 +68,12 @@ class Win32Config(Config):
|
|
|
68
68
|
if pf:
|
|
69
69
|
return [Win32CanvasConfig(canvas, pf, self)]
|
|
70
70
|
else:
|
|
71
|
-
return []
|
|
71
|
+
return []
|
|
72
72
|
|
|
73
73
|
def _get_arb_pixel_format_matching_configs(self, canvas):
|
|
74
74
|
"""Get configs using the WGL_ARB_pixel_format extension.
|
|
75
75
|
This method assumes a (dummy) GL context is already created."""
|
|
76
|
-
|
|
76
|
+
|
|
77
77
|
# Check for required extensions
|
|
78
78
|
if self.sample_buffers or self.samples:
|
|
79
79
|
if not gl_info.have_extension('GL_ARB_multisample'):
|
|
@@ -85,7 +85,7 @@ class Win32Config(Config):
|
|
|
85
85
|
attr = Win32CanvasConfigARB.attribute_ids.get(name, None)
|
|
86
86
|
if attr and value is not None:
|
|
87
87
|
attrs.extend([attr, int(value)])
|
|
88
|
-
attrs.append(0)
|
|
88
|
+
attrs.append(0)
|
|
89
89
|
attrs = (c_int * len(attrs))(*attrs)
|
|
90
90
|
|
|
91
91
|
pformats = (c_int * 16)()
|
|
@@ -98,7 +98,7 @@ class Win32Config(Config):
|
|
|
98
98
|
|
|
99
99
|
class Win32CanvasConfig(CanvasConfig):
|
|
100
100
|
def __init__(self, canvas, pf, config):
|
|
101
|
-
super(
|
|
101
|
+
super().__init__(canvas, config)
|
|
102
102
|
self._pf = pf
|
|
103
103
|
self._pfd = PIXELFORMATDESCRIPTOR()
|
|
104
104
|
|
|
@@ -153,14 +153,14 @@ class Win32CanvasConfigARB(CanvasConfig):
|
|
|
153
153
|
}
|
|
154
154
|
|
|
155
155
|
def __init__(self, canvas, pf, config):
|
|
156
|
-
super(
|
|
156
|
+
super().__init__(canvas, config)
|
|
157
157
|
self._pf = pf
|
|
158
|
-
|
|
158
|
+
|
|
159
159
|
names = list(self.attribute_ids.keys())
|
|
160
160
|
attrs = list(self.attribute_ids.values())
|
|
161
161
|
attrs = (c_int * len(attrs))(*attrs)
|
|
162
162
|
values = (c_int * len(attrs))()
|
|
163
|
-
|
|
163
|
+
|
|
164
164
|
wglext_arb.wglGetPixelFormatAttribivARB(canvas.hdc, pf, 0, len(attrs), attrs, values)
|
|
165
165
|
|
|
166
166
|
for name, value in zip(names, values):
|
|
@@ -182,35 +182,21 @@ class Win32CanvasConfigARB(CanvasConfig):
|
|
|
182
182
|
_gdi32.SetPixelFormat(canvas.hdc, self._pf, None)
|
|
183
183
|
|
|
184
184
|
|
|
185
|
-
class
|
|
185
|
+
class _BaseWin32Context(Context):
|
|
186
186
|
def __init__(self, config, share):
|
|
187
|
-
super(
|
|
187
|
+
super().__init__(config, share)
|
|
188
188
|
self._context = None
|
|
189
189
|
|
|
190
|
-
def attach(self, canvas):
|
|
191
|
-
super(Win32Context, self).attach(canvas)
|
|
192
|
-
|
|
193
|
-
if not self._context:
|
|
194
|
-
self.config._set_pixel_format(canvas)
|
|
195
|
-
self._context = wgl.wglCreateContext(canvas.hdc)
|
|
196
|
-
|
|
197
|
-
share = self.context_share
|
|
198
|
-
if share:
|
|
199
|
-
if not share.canvas:
|
|
200
|
-
raise RuntimeError('Share context has no canvas.')
|
|
201
|
-
if not wgl.wglShareLists(share._context, self._context):
|
|
202
|
-
raise gl.ContextException('Unable to share contexts.')
|
|
203
|
-
|
|
204
190
|
def set_current(self):
|
|
205
191
|
if self._context is not None and self != gl.current_context:
|
|
206
192
|
wgl.wglMakeCurrent(self.canvas.hdc, self._context)
|
|
207
|
-
super(
|
|
193
|
+
super().set_current()
|
|
208
194
|
|
|
209
195
|
def detach(self):
|
|
210
196
|
if self.canvas:
|
|
211
197
|
wgl.wglDeleteContext(self._context)
|
|
212
198
|
self._context = None
|
|
213
|
-
super(
|
|
199
|
+
super().detach()
|
|
214
200
|
|
|
215
201
|
def flip(self):
|
|
216
202
|
_gdi32.SwapBuffers(self.canvas.hdc)
|
|
@@ -224,9 +210,23 @@ class Win32Context(Context):
|
|
|
224
210
|
wglext_arb.wglSwapIntervalEXT(int(vsync))
|
|
225
211
|
|
|
226
212
|
|
|
227
|
-
class
|
|
228
|
-
def
|
|
229
|
-
super(
|
|
213
|
+
class Win32Context(_BaseWin32Context):
|
|
214
|
+
def attach(self, canvas):
|
|
215
|
+
super().attach(canvas)
|
|
216
|
+
|
|
217
|
+
if not self._context:
|
|
218
|
+
self.config._set_pixel_format(canvas)
|
|
219
|
+
self._context = wgl.wglCreateContext(canvas.hdc)
|
|
220
|
+
|
|
221
|
+
share = self.context_share
|
|
222
|
+
if share:
|
|
223
|
+
if not share.canvas:
|
|
224
|
+
raise RuntimeError('Share context has no canvas.')
|
|
225
|
+
if not wgl.wglShareLists(share._context, self._context):
|
|
226
|
+
raise gl.ContextException('Unable to share contexts.')
|
|
227
|
+
|
|
228
|
+
|
|
229
|
+
class Win32ARBContext(_BaseWin32Context):
|
|
230
230
|
|
|
231
231
|
def attach(self, canvas):
|
|
232
232
|
share = self.context_share
|
|
@@ -244,7 +244,7 @@ class Win32ARBContext(Win32Context):
|
|
|
244
244
|
if self.config.forward_compatible:
|
|
245
245
|
flags |= wglext_arb.WGL_CONTEXT_FORWARD_COMPATIBLE_BIT_ARB
|
|
246
246
|
if self.config.debug:
|
|
247
|
-
flags |= wglext_arb.
|
|
247
|
+
flags |= wglext_arb.WGL_CONTEXT_DEBUG_BIT_ARB
|
|
248
248
|
if flags:
|
|
249
249
|
attribs.extend([wglext_arb.WGL_CONTEXT_FLAGS_ARB, flags])
|
|
250
250
|
attribs.append(0)
|
|
@@ -252,4 +252,4 @@ class Win32ARBContext(Win32Context):
|
|
|
252
252
|
|
|
253
253
|
self.config._set_pixel_format(canvas)
|
|
254
254
|
self._context = wglext_arb.wglCreateContextAttribsARB(canvas.hdc, share, attribs)
|
|
255
|
-
super(
|
|
255
|
+
super().attach(canvas)
|
|
@@ -55,10 +55,11 @@ def draw(size, mode, **data):
|
|
|
55
55
|
assert size == len(array) // attribute.count, 'Data for %s is incorrect length' % fmt
|
|
56
56
|
|
|
57
57
|
buffer = BufferObject(size * attribute.stride)
|
|
58
|
-
attribute.
|
|
58
|
+
data = (attribute.c_type * len(array))(*array)
|
|
59
|
+
buffer.set_data(data)
|
|
60
|
+
|
|
59
61
|
attribute.enable()
|
|
60
62
|
attribute.set_pointer(buffer.ptr)
|
|
61
|
-
|
|
62
63
|
buffers.append(buffer) # Don't garbage collect it.
|
|
63
64
|
|
|
64
65
|
glDrawArrays(mode, 0, size)
|
|
@@ -108,10 +109,12 @@ def draw_indexed(size, mode, indices, **data):
|
|
|
108
109
|
assert size == len(array) // attribute.count, 'Data for %s is incorrect length' % fmt
|
|
109
110
|
|
|
110
111
|
buffer = BufferObject(size * attribute.stride)
|
|
111
|
-
attribute.
|
|
112
|
+
data = (attribute.c_type * len(array))(*array)
|
|
113
|
+
buffer.set_data(data)
|
|
114
|
+
|
|
112
115
|
attribute.enable()
|
|
113
116
|
attribute.set_pointer(buffer.ptr)
|
|
114
|
-
buffers.append(buffer)
|
|
117
|
+
buffers.append(buffer) # Don't garbage collect it.
|
|
115
118
|
|
|
116
119
|
if size <= 0xff:
|
|
117
120
|
index_type = GL_UNSIGNED_BYTE
|
|
@@ -188,24 +191,9 @@ def get_default_batch():
|
|
|
188
191
|
return pyglet.gl.current_context.pyglet_graphics_default_batch
|
|
189
192
|
|
|
190
193
|
|
|
191
|
-
def get_default_group():
|
|
192
|
-
try:
|
|
193
|
-
return pyglet.gl.current_context.pyglet_graphics_default_group
|
|
194
|
-
except AttributeError:
|
|
195
|
-
pyglet.gl.current_context.pyglet_graphics_default_group = ShaderGroup(get_default_shader())
|
|
196
|
-
return pyglet.gl.current_context.pyglet_graphics_default_group
|
|
197
|
-
|
|
198
|
-
|
|
199
194
|
def get_default_shader():
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
except AttributeError:
|
|
203
|
-
_default_vert_shader = pyglet.graphics.shader.Shader(_vertex_source, 'vertex')
|
|
204
|
-
_default_frag_shader = pyglet.graphics.shader.Shader(_fragment_source, 'fragment')
|
|
205
|
-
default_shader_program = pyglet.graphics.shader.ShaderProgram(_default_vert_shader, _default_frag_shader)
|
|
206
|
-
pyglet.gl.current_context.pyglet_graphics_default_shader = default_shader_program
|
|
207
|
-
return pyglet.gl.current_context.pyglet_graphics_default_shader
|
|
208
|
-
|
|
195
|
+
return pyglet.gl.current_context.create_program((_vertex_source, 'vertex'),
|
|
196
|
+
(_fragment_source, 'fragment'))
|
|
209
197
|
|
|
210
198
|
class Batch:
|
|
211
199
|
"""Manage a collection of drawables for batched rendering.
|