pyglet 2.0.8__zip → 2.0.10__zip
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {pyglet-2.0.8 → pyglet-2.0.10}/.github/workflows/unittests.yml +1 -5
- {pyglet-2.0.8 → pyglet-2.0.10}/.gitignore +3 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/.readthedocs.yml +5 -1
- {pyglet-2.0.8 → pyglet-2.0.10}/PKG-INFO +3 -2
- {pyglet-2.0.8 → pyglet-2.0.10}/README.md +2 -1
- {pyglet-2.0.8 → pyglet-2.0.10}/RELEASE_NOTES +55 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/contrib/qt_sprite_preview.py +774 -586
- {pyglet-2.0.8 → pyglet-2.0.10}/doc/conf.py +6 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/doc/modules/shapes.rst +8 -8
- {pyglet-2.0.8 → pyglet-2.0.10}/doc/modules/window_key.rst +9 -1
- {pyglet-2.0.8 → pyglet-2.0.10}/doc/programming_guide/eventloop.rst +57 -53
- {pyglet-2.0.8 → pyglet-2.0.10}/doc/programming_guide/keyboard.rst +194 -67
- {pyglet-2.0.8 → pyglet-2.0.10}/doc/programming_guide/media.rst +297 -67
- {pyglet-2.0.8 → pyglet-2.0.10}/doc/programming_guide/quickstart.rst +1 -0
- pyglet-2.0.10/examples/clipboard.py +18 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/examples/input/controller.py +4 -0
- {pyglet-2.0.8 → 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.8 → 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.10/examples/opengl/compute_shader.py +39 -0
- {pyglet-2.0.8/examples/graphics → pyglet-2.0.10/examples}/shapes.py +3 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/examples/window/fixed_resolution.py +37 -34
- {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/__init__.py +21 -10
- {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/app/base.py +13 -1
- {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/canvas/cocoa.py +6 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/clock.py +47 -116
- pyglet-2.0.10/pyglet/customtypes.py +12 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/event.py +16 -16
- pyglet-2.0.10/pyglet/experimental/README.md +6 -0
- pyglet-2.0.10/pyglet/experimental/geoshader_sprite.py +792 -0
- pyglet-2.0.10/pyglet/experimental/net.py +247 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/font/directwrite.py +33 -59
- {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/font/win32.py +85 -25
- {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/gl/base.py +195 -46
- {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/gl/gl_info.py +4 -2
- {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/gl/lib.py +1 -2
- {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/gl/win32.py +30 -30
- {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/graphics/__init__.py +9 -21
- {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/graphics/shader.py +53 -50
- {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/graphics/vertexarray.py +8 -9
- {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/graphics/vertexbuffer.py +50 -74
- {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/graphics/vertexdomain.py +54 -97
- {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/gui/frame.py +2 -2
- {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/gui/widgets.py +31 -3
- {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/image/__init__.py +35 -14
- {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/image/atlas.py +9 -9
- {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/image/buffer.py +19 -16
- {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/image/codecs/wic.py +8 -10
- {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/input/controller_db.py +19 -23
- {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/input/linux/evdev.py +3 -2
- {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/input/win32/xinput.py +2 -2
- {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/libs/darwin/cocoapy/cocoalibs.py +1 -0
- {pyglet-2.0.8 → 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.8 → pyglet-2.0.10}/pyglet/libs/win32/types.py +9 -1
- {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/math.py +18 -43
- {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/media/codecs/wmf.py +16 -22
- {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/media/devices/base.py +28 -24
- {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/media/devices/win32.py +93 -47
- {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/media/drivers/base.py +6 -4
- {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/media/drivers/directsound/adaptation.py +13 -8
- {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/media/drivers/directsound/lib_dsound.py +0 -1
- {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/media/drivers/listener.py +1 -3
- {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/media/drivers/openal/adaptation.py +17 -7
- {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/media/drivers/xaudio2/adaptation.py +2 -1
- {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/media/drivers/xaudio2/interface.py +12 -9
- {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/media/drivers/xaudio2/lib_xaudio2.py +16 -34
- pyglet-2.0.10/pyglet/media/mediathreads.py +129 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/media/player.py +8 -3
- {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/model/__init__.py +4 -17
- {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/model/codecs/obj.py +1 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/shapes.py +194 -143
- {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/sprite.py +4 -17
- {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/text/__init__.py +2 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/text/caret.py +2 -1
- {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/text/layout.py +171 -189
- {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/util.py +6 -35
- {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/window/__init__.py +75 -35
- {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/window/cocoa/__init__.py +28 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/window/cocoa/pyglet_textview.py +11 -4
- {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/window/key.py +10 -1
- {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/window/win32/__init__.py +37 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/window/xlib/__init__.py +142 -5
- {pyglet-2.0.8 → pyglet-2.0.10}/pyglet.egg-info/PKG-INFO +3 -2
- {pyglet-2.0.8 → pyglet-2.0.10}/pyglet.egg-info/SOURCES.txt +68 -2
- {pyglet-2.0.8 → pyglet-2.0.10}/tests/integration/app/test_eventloop.py +1 -2
- {pyglet-2.0.8 → pyglet-2.0.10}/tests/integration/image/test_imagegrid.py +3 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/tests/integration/image/test_texture3d.py +3 -0
- {pyglet-2.0.8 → 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.8 → pyglet-2.0.10}/tests/interactive/text/test_inline_elements.py +20 -17
- {pyglet-2.0.8 → pyglet-2.0.10}/tests/interactive/text/test_inline_elements_style_change.py +15 -14
- {pyglet-2.0.8 → pyglet-2.0.10}/tests/interactive/text/test_multiline_wrap.py +18 -18
- {pyglet-2.0.8 → pyglet-2.0.10}/tests/interactive/text/test_plain.py +5 -5
- {pyglet-2.0.8 → pyglet-2.0.10}/tests/interactive/text/test_style.py +5 -5
- {pyglet-2.0.8 → pyglet-2.0.10}/tests/unit/conftest.py +5 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/tests/unit/shapes/test_shapes.py +24 -2
- {pyglet-2.0.8 → pyglet-2.0.10}/tests/unit/test_events.py +31 -21
- {pyglet-2.0.8 → pyglet-2.0.10}/tools/gencontrollerdb.py +3 -3
- pyglet-2.0.8/experimental/geoshader_sprite.py +0 -367
- pyglet-2.0.8/pyglet/libs/win32/com.py +0 -340
- pyglet-2.0.8/pyglet/media/mediathreads.py +0 -152
- pyglet-2.0.8/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_bmp_loading[rgb_24bpp.bmp].001.png +0 -0
- pyglet-2.0.8/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_bmp_loading[rgb_32bpp.bmp].001.png +0 -0
- pyglet-2.0.8/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_bmp_loading[rgb_4bpp.bmp].001.png +0 -0
- pyglet-2.0.8/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_bmp_loading[rgb_8bpp.bmp].001.png +0 -0
- pyglet-2.0.8/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_bmp_loading[rgba_32bpp.bmp].001.png +0 -0
- pyglet-2.0.8/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_checkerboard.001.png +0 -0
- pyglet-2.0.8/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_dds_loading[rgb_dxt1.dds].001.png +0 -0
- pyglet-2.0.8/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_dds_loading[rgba_dxt1.dds].001.png +0 -0
- pyglet-2.0.8/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_dds_loading[rgba_dxt3.dds].001.png +0 -0
- pyglet-2.0.8/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_dds_loading[rgba_dxt5.dds].001.png +0 -0
- pyglet-2.0.8/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_gdkpixbuf2_loading[8bpp.gif].001.png +0 -0
- pyglet-2.0.8/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_gdkpixbuf2_loading[l.png].001.png +0 -0
- pyglet-2.0.8/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_gdkpixbuf2_loading[la.png].001.png +0 -0
- pyglet-2.0.8/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_gdkpixbuf2_loading[rgb.png].001.png +0 -0
- pyglet-2.0.8/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_gdkpixbuf2_loading[rgba.png].001.png +0 -0
- pyglet-2.0.8/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_pil_loading[la.png].001.png +0 -0
- pyglet-2.0.8/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_pil_loading[rgb.png].001.png +0 -0
- pyglet-2.0.8/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_pil_loading[rgba.png].001.png +0 -0
- pyglet-2.0.8/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_pypng_loading[la.png].001.png +0 -0
- pyglet-2.0.8/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_pypng_loading[rgba.png].001.png +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/.coveragerc +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/.github/ISSUE_TEMPLATE/questions--or-other.md +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/.github/workflows/codeql.yml +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/LICENSE +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/MANIFEST.in +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/contrib/aseprite_codec/README +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/contrib/aseprite_codec/asedemo.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/contrib/aseprite_codec/aseprite.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/contrib/aseprite_codec/running.ase +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/contrib/logo3d/logo3d.jpg +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/contrib/logo3d/logo3d.obj.zip +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/contrib/logo3d/logo3d.wings +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/contrib/scenemanager.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/contrib/toys/follow_mouse.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/doc/Makefile +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/doc/README.md +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/doc/_static/favicon.ico +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/doc/_static/logo.png +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/doc/_static/logo5.svg +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/doc/_static/relatedlogo.png +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/doc/external_resources.rst +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/doc/index.rst +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/doc/internal/contributing.rst +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/doc/internal/dist.rst +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/doc/internal/doc.rst +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/doc/internal/generated.rst +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/doc/internal/gl.rst +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/doc/internal/media_logging_manual.rst +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/doc/internal/media_manual.rst +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/doc/internal/testing.rst +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/doc/internal/virtualenv.rst +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/doc/internal/wraptypes-class.svg +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/doc/internal/wraptypes.rst +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/doc/make.bat +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/doc/modules/app.rst +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/doc/modules/canvas.rst +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/doc/modules/clock.rst +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/doc/modules/event.rst +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/doc/modules/font.rst +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/doc/modules/gl.rst +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/doc/modules/graphics/allocation.rst +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/doc/modules/graphics/index.rst +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/doc/modules/graphics/shader.rst +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/doc/modules/graphics/vertexbuffer.rst +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/doc/modules/graphics/vertexdomain.rst +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/doc/modules/gui.rst +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/doc/modules/image/animation.rst +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/doc/modules/image/atlas.rst +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/doc/modules/image/index.rst +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/doc/modules/info.rst +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/doc/modules/input.rst +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/doc/modules/math.rst +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/doc/modules/media.rst +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/doc/modules/media_synthesis.rst +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/doc/modules/pyglet.rst +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/doc/modules/resource.rst +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/doc/modules/sprite.rst +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/doc/modules/text/caret.rst +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/doc/modules/text/document.rst +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/doc/modules/text/index.rst +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/doc/modules/text/layout.rst +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/doc/modules/window.rst +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/doc/modules/window_mouse.rst +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/doc/programming_guide/context.rst +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/doc/programming_guide/debug.rst +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/doc/programming_guide/events.rst +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/doc/programming_guide/examplegame.rst +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/doc/programming_guide/gl.rst +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/doc/programming_guide/graphics.rst +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/doc/programming_guide/image.rst +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/doc/programming_guide/img/abstract_image.png +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/doc/programming_guide/img/abstract_image.svg +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/doc/programming_guide/img/buffer_image.png +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/doc/programming_guide/img/buffer_image.svg +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/doc/programming_guide/img/context_flow.png +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/doc/programming_guide/img/context_flow.svg +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/doc/programming_guide/img/cursor_mac_crosshair.png +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/doc/programming_guide/img/cursor_mac_default.png +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/doc/programming_guide/img/cursor_mac_hand.png +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/doc/programming_guide/img/cursor_mac_no.png +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/doc/programming_guide/img/cursor_mac_size_down.png +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/doc/programming_guide/img/cursor_mac_size_left.png +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/doc/programming_guide/img/cursor_mac_size_left_right.png +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/doc/programming_guide/img/cursor_mac_size_right.png +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/doc/programming_guide/img/cursor_mac_size_up.png +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/doc/programming_guide/img/cursor_mac_size_up_down.png +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/doc/programming_guide/img/cursor_mac_text.png +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/doc/programming_guide/img/cursor_mac_wait.png +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/doc/programming_guide/img/cursor_win_crosshair.png +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/doc/programming_guide/img/cursor_win_default.png +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/doc/programming_guide/img/cursor_win_hand.png +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/doc/programming_guide/img/cursor_win_help.png +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/doc/programming_guide/img/cursor_win_no.png +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/doc/programming_guide/img/cursor_win_size.png +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/doc/programming_guide/img/cursor_win_size_left_right.png +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/doc/programming_guide/img/cursor_win_size_nesw.png +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/doc/programming_guide/img/cursor_win_size_nwse.png +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/doc/programming_guide/img/cursor_win_size_up_down.png +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/doc/programming_guide/img/cursor_win_text.png +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/doc/programming_guide/img/cursor_win_wait.png +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/doc/programming_guide/img/cursor_win_wait_arrow.png +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/doc/programming_guide/img/explosion.png +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/doc/programming_guide/img/font_metrics.png +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/doc/programming_guide/img/font_metrics.svg +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/doc/programming_guide/img/image_classes.png +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/doc/programming_guide/img/image_classes.svg +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/doc/programming_guide/img/image_grid.png +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/doc/programming_guide/img/image_grid.svg +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/doc/programming_guide/img/image_sequence.png +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/doc/programming_guide/img/image_sequence.svg +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/doc/programming_guide/img/mouse_coordinates.png +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/doc/programming_guide/img/mouse_coordinates.svg +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/doc/programming_guide/img/screens.png +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/doc/programming_guide/img/screens.svg +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/doc/programming_guide/img/text_classes.png +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/doc/programming_guide/img/text_classes.svg +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/doc/programming_guide/img/window_location.png +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/doc/programming_guide/img/window_location.svg +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/doc/programming_guide/img/window_osx_borderless.png +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/doc/programming_guide/img/window_osx_default.png +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/doc/programming_guide/img/window_osx_dialog.png +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/doc/programming_guide/img/window_osx_tool.png +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/doc/programming_guide/img/window_xp_default.png +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/doc/programming_guide/img/window_xp_dialog.png +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/doc/programming_guide/img/window_xp_overlay.png +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/doc/programming_guide/img/window_xp_tool.png +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/doc/programming_guide/img/window_xp_transparent.png +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/doc/programming_guide/input.rst +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/doc/programming_guide/installation.rst +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/doc/programming_guide/math.rst +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/doc/programming_guide/migration.rst +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/doc/programming_guide/mouse.rst +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/doc/programming_guide/options.rst +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/doc/programming_guide/resources.rst +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/doc/programming_guide/shapes.rst +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/doc/programming_guide/text.rst +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/doc/programming_guide/time.rst +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/doc/programming_guide/windowing.rst +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/doc/requirements.txt +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/examples/events/events_key_state_handler.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/examples/events/register_event_type.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/examples/events/window_events.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/examples/events/window_platform_event.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/examples/file_dialog.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/examples/game/resources/asteroid.png +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/examples/game/resources/bullet.png +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/examples/game/resources/bullet.wav +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/examples/game/resources/engine_flame.png +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/examples/game/resources/player.png +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/examples/game/version1/asteroid.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/examples/game/version1/game/__init__.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/examples/game/version1/game/load.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/examples/game/version1/game/resources.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/examples/game/version2/asteroid.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/examples/game/version2/game/__init__.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/examples/game/version2/game/load.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/examples/game/version2/game/physicalobject.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/examples/game/version2/game/player.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/examples/game/version2/game/resources.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/examples/game/version3/asteroid.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/examples/game/version3/game/__init__.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/examples/game/version3/game/load.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/examples/game/version3/game/physicalobject.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/examples/game/version3/game/player.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/examples/game/version3/game/resources.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/examples/game/version3/game/util.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/examples/game/version4/asteroid.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/examples/game/version4/game/__init__.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/examples/game/version4/game/asteroid.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/examples/game/version4/game/bullet.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/examples/game/version4/game/load.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/examples/game/version4/game/physicalobject.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/examples/game/version4/game/player.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/examples/game/version4/game/resources.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/examples/game/version4/game/util.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/examples/game/version5/asteroid.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/examples/game/version5/game/__init__.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/examples/game/version5/game/asteroid.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/examples/game/version5/game/bullet.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/examples/game/version5/game/load.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/examples/game/version5/game/physicalobject.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/examples/game/version5/game/player.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/examples/game/version5/game/resources.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/examples/game/version5/game/util.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/examples/graphics/image_convert.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/examples/graphics/image_display.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/examples/gui/bar.png +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/examples/gui/button_down.png +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/examples/gui/button_hover.png +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/examples/gui/button_up.png +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/examples/gui/knob.png +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/examples/gui/widgets.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/examples/hello_world.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/examples/input/apple_remote.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/examples/input/input.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/examples/input/joystick.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/examples/input/tablet.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/examples/media/media_player.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/examples/media/noisy/README +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/examples/media/noisy/ball.png +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/examples/media/noisy/ball.wav +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/examples/media/noisy/noisy.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/examples/media/synthesizer.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/examples/media/video.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/examples/model/box.mtl +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/examples/model/box.obj +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/examples/model/logo3d.mtl +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/examples/model/logo3d.obj +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/examples/model/model.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/examples/model/pyglet.png +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/examples/opengl/egl_context.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/examples/opengl/opengl.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/examples/opengl/opengl_context.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/examples/opengl/opengl_core.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/examples/opengl/opengl_scissor.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/examples/opengl/opengl_shader.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/examples/opengl/pyglet.png +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/examples/programming_guide/animation.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/examples/programming_guide/dinosaur.gif +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/examples/programming_guide/events.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/examples/programming_guide/hello_world.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/examples/programming_guide/image_viewer.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/examples/programming_guide/kitten.jpg +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/examples/programming_guide/window_subclass.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/examples/resources/kitten.jpg +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/examples/resources/pyglet.png +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/examples/sprite/depth_sprite.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/examples/sprite/display_sprite.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/examples/sprite/multi_texture_sprite.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/examples/sprite/sprite_batching.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/examples/text/advanced_font.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/examples/text/font_comparison.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/examples/text/html_label.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/examples/text/pyglet.png +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/examples/text/text_input.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/examples/timer.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/examples/window/camera.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/examples/window/camera_group.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/examples/window/multiple_windows.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/examples/window/overlay_window.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/examples/window/transparent_window.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/experimental/dist_field/README +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/experimental/dist_field/genfield.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/experimental/dist_field/py.df.png +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/experimental/dist_field/py.png +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/experimental/dist_field/renderfield.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/experimental/flaccodec.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/experimental/hello_world.svg +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/experimental/spritebenchmark.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/experimental/svg_test.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/experimental/wayland/gbm_egl_context.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/experimental/win32priority.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/make.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/app/__init__.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/app/cocoa.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/app/win32.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/app/xlib.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/canvas/__init__.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/canvas/base.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/canvas/headless.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/canvas/win32.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/canvas/xlib.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/canvas/xlib_vidmoderestore.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/extlibs/__init__.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/extlibs/png.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/font/__init__.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/font/base.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/font/fontconfig.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/font/freetype.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/font/freetype_lib.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/font/quartz.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/font/ttf.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/font/user.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/font/win32query.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/gl/__init__.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/gl/agl.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/gl/cocoa.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/gl/gl.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/gl/gl_compat.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/gl/glx.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/gl/glx_info.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/gl/glxext_arb.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/gl/glxext_mesa.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/gl/glxext_nv.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/gl/headless.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/gl/lib_agl.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/gl/lib_glx.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/gl/lib_wgl.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/gl/wgl.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/gl/wgl_info.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/gl/wglext_arb.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/gl/wglext_nv.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/gl/xlib.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/graphics/allocation.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/gui/__init__.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/image/animation.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/image/codecs/__init__.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/image/codecs/bmp.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/image/codecs/dds.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/image/codecs/gdiplus.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/image/codecs/gdkpixbuf2.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/image/codecs/gif.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/image/codecs/pil.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/image/codecs/png.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/image/codecs/quartz.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/image/codecs/s3tc.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/info.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/input/__init__.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/input/base.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/input/controller.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/input/linux/__init__.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/input/linux/evdev_constants.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/input/linux/x11_xinput.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/input/linux/x11_xinput_tablet.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/input/macos/__init__.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/input/macos/darwin_hid.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/input/win32/__init__.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/input/win32/directinput.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/input/win32/wintab.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/lib.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/libs/__init__.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/libs/darwin/__init__.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/libs/darwin/cocoapy/__init__.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/libs/darwin/cocoapy/cocoatypes.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/libs/darwin/cocoapy/runtime.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/libs/darwin/coreaudio.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/libs/darwin/quartzkey.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/libs/egl/__init__.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/libs/egl/egl.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/libs/egl/eglext.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/libs/egl/lib.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/libs/wayland/__init__.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/libs/wayland/gbm.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/libs/wayland/xkbcommon.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/libs/win32/constants.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/libs/win32/context_managers.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/libs/win32/dinput.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/libs/win32/libwintab.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/libs/win32/winkey.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/libs/x11/__init__.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/libs/x11/cursorfont.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/libs/x11/xf86vmode.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/libs/x11/xinerama.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/libs/x11/xinput.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/libs/x11/xlib.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/libs/x11/xsync.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/media/__init__.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/media/buffered_logger.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/media/codecs/__init__.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/media/codecs/base.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/media/codecs/coreaudio.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/media/codecs/ffmpeg.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/media/codecs/ffmpeg_lib/__init__.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/media/codecs/ffmpeg_lib/compat.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/media/codecs/ffmpeg_lib/libavcodec.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/media/codecs/ffmpeg_lib/libavformat.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/media/codecs/ffmpeg_lib/libavutil.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/media/codecs/ffmpeg_lib/libswresample.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/media/codecs/ffmpeg_lib/libswscale.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/media/codecs/gstreamer.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/media/codecs/pyogg.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/media/codecs/wave.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/media/devices/__init__.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/media/drivers/__init__.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/media/drivers/directsound/__init__.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/media/drivers/directsound/exceptions.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/media/drivers/directsound/interface.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/media/drivers/openal/__init__.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/media/drivers/openal/interface.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/media/drivers/openal/lib_alc.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/media/drivers/openal/lib_openal.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/media/drivers/pulse/__init__.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/media/drivers/pulse/adaptation.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/media/drivers/pulse/interface.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/media/drivers/pulse/lib_pulseaudio.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/media/drivers/silent/__init__.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/media/drivers/silent/adaptation.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/media/drivers/xaudio2/__init__.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/media/exceptions.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/media/instrumentation.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/media/synthesis.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/model/codecs/__init__.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/model/codecs/gltf.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/resource.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/text/document.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/text/formats/__init__.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/text/formats/attributed.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/text/formats/html.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/text/formats/plaintext.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/text/formats/structured.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/text/runlist.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/window/cocoa/pyglet_delegate.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/window/cocoa/pyglet_view.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/window/cocoa/pyglet_window.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/window/cocoa/systemcursor.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/window/event.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/window/headless/__init__.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/pyglet/window/mouse.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/pyglet.egg-info/dependency_links.txt +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/pyglet.egg-info/top_level.txt +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/pyglet.egg-info/zip-safe +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/pyproject.toml +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/pytest.ini +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/setup.cfg +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/setup.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/tests/__init__.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/tests/annotations.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/tests/base/__init__.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/tests/base/data.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/tests/base/event_loop.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/tests/base/interactive.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/tests/base/performance.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/tests/base/test_interactive_test_base.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/tests/conftest.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/tests/data/fonts/README +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/tests/data/fonts/action_man.ttf +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/tests/data/fonts/action_man_bold.ttf +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/tests/data/fonts/action_man_bold_italic.ttf +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/tests/data/fonts/action_man_italic.ttf +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/tests/data/fonts/courR12-ISO8859-1.pcf +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/tests/data/images/8bpp.gif +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/tests/data/images/cursor.png +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/tests/data/images/dinosaur.gif +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/tests/data/images/gdk_close.png +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/tests/data/images/grey_background.png +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/tests/data/images/icon1.png +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/tests/data/images/icon_size1.png +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/tests/data/images/icon_size2.png +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/tests/data/images/icon_size3.png +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/tests/data/images/icon_size4.png +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/tests/data/images/icon_size5.png +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/tests/data/images/l.png +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/tests/data/images/la.png +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/tests/data/images/multitexture.png +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/tests/data/images/rgb.png +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/tests/data/images/rgb_16bpp.bmp +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/tests/data/images/rgb_1bpp.bmp +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/tests/data/images/rgb_24bpp.bmp +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/tests/data/images/rgb_32bpp.bmp +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/tests/data/images/rgb_4bpp.bmp +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/tests/data/images/rgb_8bpp.bmp +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/tests/data/images/rgb_8bpp.png +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/tests/data/images/rgb_8bpp_trans.png +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/tests/data/images/rgb_dxt1.dds +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/tests/data/images/rgba.png +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/tests/data/images/rgba_32bpp.bmp +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/tests/data/images/rgba_dxt1.dds +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/tests/data/images/rgba_dxt3.dds +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/tests/data/images/rgba_dxt5.dds +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/tests/data/images/tests.interactive.test_interactive_test_base._Test.test_1.001.png +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/tests/data/media/README +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/tests/data/media/alert.wav +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/tests/data/media/login.wav +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/tests/data/media/logout.wav +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/tests/data/media/receive.wav +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/tests/data/media/send.wav +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/tests/data/media/synthesis_sawtooth_16_11025_1ch.wav +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/tests/data/media/synthesis_sawtooth_16_44800_1ch.wav +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/tests/data/media/synthesis_silence_16_11025_1ch.wav +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/tests/data/media/synthesis_silence_16_44800_1ch.wav +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/tests/data/media/synthesis_simplefm_16_11025_1ch.wav +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/tests/data/media/synthesis_simplefm_16_44800_1ch.wav +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/tests/data/media/synthesis_sine_16_11025_1ch.wav +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/tests/data/media/synthesis_sine_16_44800_1ch.wav +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/tests/data/media/synthesis_square_16_11025_1ch.wav +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/tests/data/media/synthesis_square_16_44800_1ch.wav +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/tests/data/media/synthesis_triangle_16_11025_1ch.wav +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/tests/data/media/synthesis_triangle_16_44800_1ch.wav +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/tests/data/models/logo3d.mtl +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/tests/data/models/logo3d.obj +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/tests/integration/__init__.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/tests/integration/app/__init__.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/tests/integration/font/test_fontconfig.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/tests/integration/font/test_freetype_face.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/tests/integration/graphics/__init__.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/tests/integration/graphics/test_allocation.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/tests/integration/image/__init__.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/tests/integration/image/test_gdkpixbuf2.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/tests/integration/media/__init__.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/tests/integration/media/mock_player.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/tests/integration/media/test_directsound.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/tests/integration/media/test_openal.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/tests/integration/media/test_player.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/tests/integration/media/test_pulse.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/tests/integration/model/__init__.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/tests/integration/model/test_loading.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/tests/integration/platform/__init__.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/tests/integration/platform/test_linux_fontconfig.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/tests/integration/platform/test_win_context_managers.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/tests/integration/platform/test_win_multicore_clock.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/tests/integration/resource/__init__.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/tests/integration/resource/dir1/dir1/f3.txt +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/tests/integration/resource/dir1/f2.txt +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/tests/integration/resource/dir1/res.zip +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/tests/integration/resource/dir2/f6.txt +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/tests/integration/resource/f1.txt +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/tests/integration/resource/rgbm.png +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/tests/integration/resource/test_resource_image_loading.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/tests/integration/resource/test_resource_loading.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/tests/integration/text/__init__.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/tests/integration/text/test_empty_document.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/tests/integration/window/__init__.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/tests/integration/window/test_context_share.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/tests/integration/window/test_event_sequence.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/tests/integration/window/test_window_caption.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/tests/interactive/__init__.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/tests/interactive/conftest.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/tests/interactive/graphics/__init__.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/tests/interactive/graphics/test_multitexture.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/tests/interactive/image/__init__.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/tests/interactive/image/test_image.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/tests/interactive/media/__init__.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/tests/interactive/media/test_player.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/tests/interactive/screenshots/committed/README +0 -0
- /pyglet-2.0.8/tests/interactive/screenshots/session/tests.interactive.graphics.test_multitexture.test_multitexture.001.png → /pyglet-2.0.10/tests/interactive/screenshots/committed/tests.interactive.image.test_image.test_pil_saving[rgb.png].001.png +0 -0
- /pyglet-2.0.8/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_bmp_loading[rgb_16bpp.bmp].001.png → /pyglet-2.0.10/tests/interactive/screenshots/committed/tests.interactive.image.test_image.test_pil_saving[rgba.png].001.png +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/tests/interactive/screenshots/session/README +0 -0
- /pyglet-2.0.8/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_bmp_loading[rgb_1bpp.bmp].001.png → /pyglet-2.0.10/tests/interactive/screenshots/session/tests.interactive.graphics.test_multitexture.test_multitexture.001.png +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_pil_loading[l.png].001.png +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_pypng_loading[l.png].001.png +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/tests/interactive/text/__init__.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/tests/interactive/text/test_caret_color.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/tests/interactive/text/test_content_valign.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/tests/interactive/text/test_html.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/tests/interactive/window/__init__.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/tests/interactive/window/test_window_events.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/tests/interactive/window/test_window_fullscreen.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/tests/interactive/window/test_window_modes.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/tests/interactive/window/test_window_multisample.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/tests/interactive/window/test_window_open.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/tests/interactive/window/test_window_settings.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/tests/interactive/window/test_window_styles.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/tests/interactive/window/window_util.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/tests/interactive/windowed_test_base.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/tests/requirements.txt +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/tests/unit/__init__.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/tests/unit/media/__init__.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/tests/unit/media/test_listener.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/tests/unit/media/test_player.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/tests/unit/media/test_sources.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/tests/unit/media/test_synthesis.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/tests/unit/shapes/__init__.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/tests/unit/shapes/conftest.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/tests/unit/shapes/test_bordered_rectangle.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/tests/unit/test_atlas.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/tests/unit/test_clock.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/tests/unit/test_clock_freq.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/tests/unit/test_font.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/tests/unit/test_input.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/tests/unit/test_math.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/tests/unit/test_resource_path.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/tests/unit/test_sprite.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/tests/unit/test_text.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/tests/unit/text/__init__.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/tests/unit/text/test_caret.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/tests/unit/text/test_layout.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/tools/al_info.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/tools/ffmpeg/bokeh_timeline.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/tools/ffmpeg/compare.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/tools/ffmpeg/configure.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/tools/ffmpeg/extractors.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/tools/ffmpeg/fs.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/tools/ffmpeg/mp.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/tools/ffmpeg/mpexceptions.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/tools/ffmpeg/playmany.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/tools/ffmpeg/readme_ffmpeg_debbuging_branch.txt +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/tools/ffmpeg/readme_run_tests.txt +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/tools/ffmpeg/report.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/tools/ffmpeg/reports.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/tools/ffmpeg/retry_crashed.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/tools/ffmpeg/run_test_suite.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/tools/ffmpeg/summarize.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/tools/ffmpeg/test_instrumentation.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/tools/ffmpeg/timeline.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/tools/gendist.sh +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/tools/gengl.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/tools/gengl_old.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/tools/genwrappers.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/tools/gl.template +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/tools/gl.xml +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/tools/gl_info.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/tools/inspect_font.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/tools/requirements.txt +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/tools/wgl.h +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/tools/wraptypes/__init__.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/tools/wraptypes/cparser.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/tools/wraptypes/ctypesparser.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/tools/wraptypes/lex.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/tools/wraptypes/preprocessor.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/tools/wraptypes/wrap.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/tools/wraptypes/yacc.py +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/website/LICENSE.txt +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/website/README.rst +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/website/assets/favicon.ico +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/website/assets/static/css/example-custom-styles.css +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/website/assets/static/images/pyglet.png +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/website/content/404.html/contents.lr +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/website/content/404.html/ngc-5793.jpg +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/website/content/authors/benjamin/contents.lr +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/website/content/authors/benjamin/pyglet.png +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/website/content/authors/contents.lr +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/website/content/blog/contents.lr +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/website/content/blog/welcome-blog/contents.lr +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/website/content/contents.lr +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/website/content/eclipse.jpg +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/website/pyglet.lektorproject +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/website/themes/lektor-icon/AUTHORS.txt +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/website/themes/lektor-icon/CHANGELOG.md +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/website/themes/lektor-icon/CONTRIBUTING.md +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/website/themes/lektor-icon/LICENSE.txt +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/website/themes/lektor-icon/NOTICE.txt +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/website/themes/lektor-icon/README.md +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/website/themes/lektor-icon/assets/static/css/bootstrap.css +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/website/themes/lektor-icon/assets/static/css/icomoon.css +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/website/themes/lektor-icon/assets/static/css/magnific-popup.css +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/website/themes/lektor-icon/assets/static/css/style.css +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/website/themes/lektor-icon/assets/static/fonts/bootstrap/glyphicons-halflings-regular.ttf +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/website/themes/lektor-icon/assets/static/fonts/bootstrap/glyphicons-halflings-regular.woff +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/website/themes/lektor-icon/assets/static/fonts/bootstrap/glyphicons-halflings-regular.woff2 +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/website/themes/lektor-icon/assets/static/fonts/icomoon/icomoon.ttf +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/website/themes/lektor-icon/assets/static/fonts/icomoon/icomoon.woff +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/website/themes/lektor-icon/assets/static/images/Preloader_2.gif +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/website/themes/lektor-icon/assets/static/images/placeholder_person.png +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/website/themes/lektor-icon/assets/static/js/jquery-3.3.1.min.js +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/website/themes/lektor-icon/assets/static/js/jquery.easing.min.js +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/website/themes/lektor-icon/assets/static/js/jquery.magnific-popup.min.js +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/website/themes/lektor-icon/assets/static/js/jquery.stellar.js +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/website/themes/lektor-icon/assets/static/js/jquery.stellar.min.js +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/website/themes/lektor-icon/assets/static/js/jquery.waypoints.min.js +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/website/themes/lektor-icon/assets/static/js/magnific-popup-options.js +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/website/themes/lektor-icon/assets/static/js/main-singlelayout.js +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/website/themes/lektor-icon/assets/static/js/main.js +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/website/themes/lektor-icon/flowblocks/content.ini +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/website/themes/lektor-icon/flowblocks/gallery.ini +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/website/themes/lektor-icon/flowblocks/gallery_item.ini +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/website/themes/lektor-icon/flowblocks/member.ini +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/website/themes/lektor-icon/flowblocks/mission.ini +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/website/themes/lektor-icon/flowblocks/mission_tab.ini +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/website/themes/lektor-icon/flowblocks/service.ini +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/website/themes/lektor-icon/flowblocks/services.ini +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/website/themes/lektor-icon/flowblocks/team.ini +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/website/themes/lektor-icon/images/blog-index.png +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/website/themes/lektor-icon/images/full-blog.png +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/website/themes/lektor-icon/images/full-page.png +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/website/themes/lektor-icon/images/gallery-404.png +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/website/themes/lektor-icon/images/gallery-singlepage.png +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/website/themes/lektor-icon/images/mainpage-screenshots.png +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/website/themes/lektor-icon/images/responsive-layout.png +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/website/themes/lektor-icon/models/404.ini +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/website/themes/lektor-icon/models/author.ini +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/website/themes/lektor-icon/models/authors.ini +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/website/themes/lektor-icon/models/blog-post.ini +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/website/themes/lektor-icon/models/blog.ini +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/website/themes/lektor-icon/models/page.ini +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/website/themes/lektor-icon/models/single-layout.ini +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/website/themes/lektor-icon/templates/404.html +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/website/themes/lektor-icon/templates/author.html +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/website/themes/lektor-icon/templates/authors.html +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/website/themes/lektor-icon/templates/blocks/content.html +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/website/themes/lektor-icon/templates/blocks/gallery.html +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/website/themes/lektor-icon/templates/blocks/mission.html +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/website/themes/lektor-icon/templates/blocks/services.html +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/website/themes/lektor-icon/templates/blocks/team.html +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/website/themes/lektor-icon/templates/blog-layout.html +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/website/themes/lektor-icon/templates/blog-post.html +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/website/themes/lektor-icon/templates/blog.html +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/website/themes/lektor-icon/templates/layout.html +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/website/themes/lektor-icon/templates/macros/blog.html +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/website/themes/lektor-icon/templates/macros/pagination.html +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/website/themes/lektor-icon/templates/none.html +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/website/themes/lektor-icon/templates/page.html +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/website/themes/lektor-icon/templates/single-layout.html +0 -0
- {pyglet-2.0.8 → pyglet-2.0.10}/website/themes/lektor-icon/theme.ini +0 -0
|
@@ -1,33 +1,45 @@
|
|
|
1
|
+
.. _guide-media:
|
|
2
|
+
|
|
1
3
|
Playing Sound and Video
|
|
2
4
|
=======================
|
|
3
5
|
|
|
4
|
-
pyglet can play many audio and video formats
|
|
5
|
-
|
|
6
|
-
mixing and surround-sound 3D positioning. Video is played into OpenGL
|
|
7
|
-
textures, and so can be easily manipulated in real-time by applications
|
|
8
|
-
and incorporated into 3D environments.
|
|
6
|
+
pyglet can load and play many audio and video formats, often with
|
|
7
|
+
support for surround sound and video effects.
|
|
9
8
|
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
9
|
+
WAV and MP3 files are the most commonly supported across platforms. The
|
|
10
|
+
formats a specific computer can play are determined by which of the
|
|
11
|
+
following are available:
|
|
13
12
|
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
small number of short sounds, in which case those applications need not distribute FFmpeg.
|
|
13
|
+
#. The built-in pyglet WAV file decoder (always available)
|
|
14
|
+
#. Platform-specific APIs and libraries
|
|
15
|
+
#. PyOgg
|
|
16
|
+
#. :ref:`guide-supportedmedia-ffmpeg` version 4, 5, or 6
|
|
19
17
|
|
|
20
|
-
|
|
18
|
+
Video is played into OpenGL textures, allowing real-time manipulation
|
|
19
|
+
by applications. Examples include use in 3D environments or shader-based
|
|
20
|
+
effects. To play video, :ref:`guide-supportedmedia-ffmpeg` must be
|
|
21
|
+
installed.
|
|
22
|
+
|
|
23
|
+
Audio is played back with one of the following: OpenAL, XAudio2,
|
|
24
|
+
DirectSound, or PulseAudio. Hardware-accelerated mixing is available
|
|
25
|
+
on all of them. 3D positional audio and surround sound features are
|
|
26
|
+
available on all back-ends other than PulseAudio.
|
|
21
27
|
|
|
28
|
+
.. _FFmpeg: https://www.ffmpeg.org/download.html
|
|
22
29
|
.. _openal.org: https://www.openal.org/downloads
|
|
23
30
|
|
|
24
31
|
Audio drivers
|
|
25
32
|
-------------
|
|
26
33
|
|
|
27
|
-
pyglet can use OpenAL, XAudio2, DirectSound, or
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
34
|
+
pyglet can use OpenAL, XAudio2, DirectSound, or PulseAudio to play
|
|
35
|
+
sound. Only one driver can be used at a time, but the selection can
|
|
36
|
+
be changed by altering the configuration and restarting the program.
|
|
37
|
+
|
|
38
|
+
The default driver preference order works well for most users. However,
|
|
39
|
+
you may override it by setting a different preference sequence before
|
|
40
|
+
the :py:mod:`pyglet.media` module is loaded. See
|
|
41
|
+
:ref:`guide-audio-driver-order` to learn more.
|
|
42
|
+
|
|
31
43
|
The available drivers depend on your operating system:
|
|
32
44
|
|
|
33
45
|
.. list-table::
|
|
@@ -44,43 +56,69 @@ The available drivers depend on your operating system:
|
|
|
44
56
|
-
|
|
45
57
|
* - XAudio2
|
|
46
58
|
-
|
|
47
|
-
-
|
|
59
|
+
- PulseAudio [#pulseaudiof]_
|
|
60
|
+
|
|
61
|
+
.. [#pulseaudiof] The :ref:`guide-audio-driver-pulseaudio` driver has
|
|
62
|
+
limitations. For audio-intensive programs, consider using
|
|
63
|
+
:ref:`guide-audio-driver-openal`.
|
|
64
|
+
|
|
65
|
+
.. [#openalf] OpenAL does not come preinstalled on Windows and some
|
|
66
|
+
Linux distributions.
|
|
67
|
+
|
|
68
|
+
.. _guide-audio-driver-order:
|
|
69
|
+
|
|
70
|
+
Choosing the audio driver
|
|
71
|
+
^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
72
|
+
|
|
73
|
+
The ``'audio'`` key of the :py:data:`pyglet.options` dictionary
|
|
74
|
+
specifies the audio driver preference order.
|
|
75
|
+
|
|
76
|
+
On import, the :mod:`pyglet.media` will try each entry from first to
|
|
77
|
+
last until it either finds a working driver or runs out of entries. For
|
|
78
|
+
example, the default is equivalent to setting the following value::
|
|
48
79
|
|
|
49
|
-
|
|
50
|
-
|
|
80
|
+
pyglet.options['audio'] = ('xaudio2', 'directsound', 'openal', 'pulse', 'silent')
|
|
81
|
+
|
|
82
|
+
You can also set a custom preference order. For example, we could add
|
|
83
|
+
this line before importing the media module::
|
|
51
84
|
|
|
52
85
|
pyglet.options['audio'] = ('openal', 'pulse', 'xaudio2', 'directsound', 'silent')
|
|
53
86
|
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
no driver will be instantiated
|
|
57
|
-
|
|
87
|
+
It tells pyglet to try using the OpenAL driver first. If is not
|
|
88
|
+
available, try Pulseaudio, XAudio2, and DirectSound in that order.
|
|
89
|
+
If all else fails, no driver will be instantiated and the game will
|
|
90
|
+
run silently.
|
|
91
|
+
|
|
92
|
+
The value for the ``'audio'`` key can be a list or tuple which contains
|
|
93
|
+
one or more of the following strings:
|
|
58
94
|
|
|
59
95
|
.. list-table::
|
|
60
96
|
:header-rows: 1
|
|
61
97
|
|
|
62
98
|
* - String
|
|
63
99
|
- Audio driver
|
|
64
|
-
* - ``openal``
|
|
100
|
+
* - ``'openal'``
|
|
65
101
|
- OpenAL
|
|
66
|
-
* - ``directsound``
|
|
102
|
+
* - ``'directsound'``
|
|
67
103
|
- DirectSound
|
|
68
|
-
* - ``xaudio2``
|
|
104
|
+
* - ``'xaudio2'``
|
|
69
105
|
- XAudio2
|
|
70
|
-
* - ``pulse``
|
|
71
|
-
-
|
|
72
|
-
* - ``silent``
|
|
106
|
+
* - ``'pulse'``
|
|
107
|
+
- PulseAudio
|
|
108
|
+
* - ``'silent'``
|
|
73
109
|
- No audio output
|
|
74
110
|
|
|
75
|
-
You must set
|
|
76
|
-
|
|
111
|
+
You must set any custom ``'audio'`` preference order before importing
|
|
112
|
+
:mod:`pyglet.media`. This can also be set through an environment variable;
|
|
77
113
|
see :ref:`guide_environment-settings`.
|
|
78
114
|
|
|
79
115
|
The following sections describe the requirements and limitations of each audio
|
|
80
116
|
driver.
|
|
81
117
|
|
|
118
|
+
.. _guide-audio-driver-xaudio2:
|
|
119
|
+
|
|
82
120
|
XAudio2
|
|
83
|
-
|
|
121
|
+
^^^^^^^
|
|
84
122
|
XAudio2 is only available on Windows Vista and above and is the replacement of
|
|
85
123
|
DirectSound. This provides hardware accelerated audio support for newer operating
|
|
86
124
|
systems.
|
|
@@ -88,6 +126,8 @@ systems.
|
|
|
88
126
|
Note that in some stripped down versions of Windows 10, XAudio2 may not be available
|
|
89
127
|
until the required DLL's are installed.
|
|
90
128
|
|
|
129
|
+
.. _guide-audio-driver-directsound:
|
|
130
|
+
|
|
91
131
|
DirectSound
|
|
92
132
|
^^^^^^^^^^^
|
|
93
133
|
|
|
@@ -95,25 +135,120 @@ DirectSound is available only on Windows, and is installed by default.
|
|
|
95
135
|
pyglet uses only DirectX 7 features. On Windows Vista, DirectSound does not
|
|
96
136
|
support hardware audio mixing or surround sound.
|
|
97
137
|
|
|
138
|
+
.. _guide-audio-driver-openal:
|
|
139
|
+
|
|
98
140
|
OpenAL
|
|
99
141
|
^^^^^^
|
|
100
142
|
|
|
101
|
-
|
|
102
|
-
from `openal.org`_, or from their sound device's manufacturer. Most Linux
|
|
103
|
-
distributions will have OpenAL available in the repositories for download.
|
|
104
|
-
For example, Arch users can ``pacman -S openal`` and Ubuntu users can ``apt install libopenal1``.
|
|
143
|
+
The favored driver for Mac OS X, but also available on other systems.
|
|
105
144
|
|
|
106
|
-
|
|
107
|
-
|
|
145
|
+
This driver has the following advantages:
|
|
146
|
+
|
|
147
|
+
* Either preinstalled or easy to install on supported platforms.
|
|
148
|
+
* Implements features which may be absent from other drivers or
|
|
149
|
+
OS-specific versions of their backing APIs.
|
|
150
|
+
|
|
151
|
+
Its main downsides are:
|
|
152
|
+
|
|
153
|
+
* Not guaranteed to be installed on platforms other than Mac OS X
|
|
154
|
+
* On recent Windows versions, the :ref:`guide-audio-driver-xaudio2` and
|
|
155
|
+
:ref:`guide-audio-driver-directsound` backends may support more
|
|
156
|
+
features.
|
|
157
|
+
|
|
158
|
+
Windows users can download an OpenAL implementation from `openal.org`_
|
|
159
|
+
or their sound device's manufacturer.
|
|
160
|
+
|
|
161
|
+
On Linux, the following apply:
|
|
162
|
+
|
|
163
|
+
* It can usually be installed through your distro's package manager.
|
|
164
|
+
* It may already be installed as a dependency of other packages.
|
|
165
|
+
* It lacks the limitations of the :ref:`guide-audio-driver-pulseaudio`
|
|
166
|
+
driver.
|
|
167
|
+
|
|
168
|
+
The commands below should install OpenAL on the most common Linux
|
|
169
|
+
distros:
|
|
170
|
+
|
|
171
|
+
.. list-table::
|
|
172
|
+
:header-rows: 1
|
|
173
|
+
|
|
174
|
+
* - Common Linux Distros
|
|
175
|
+
- Install Command
|
|
176
|
+
|
|
177
|
+
* - Ubuntu, Pop!_OS, Debian
|
|
178
|
+
- ``apt install libopenal1``
|
|
179
|
+
|
|
180
|
+
* - Arch, Manjaro
|
|
181
|
+
- ``pacman -S openal``
|
|
182
|
+
|
|
183
|
+
* - Fedora, Nobara
|
|
184
|
+
- ``dnf install openal-soft``
|
|
185
|
+
|
|
186
|
+
You may need to prefix these commands with either ``sudo`` or another
|
|
187
|
+
command. Consult your distro's documentation for more information.
|
|
188
|
+
|
|
189
|
+
.. _guide-audio-driver-pulseaudio:
|
|
190
|
+
|
|
191
|
+
PulseAudio
|
|
192
|
+
^^^^^^^^^^
|
|
193
|
+
|
|
194
|
+
The backend for this driver is nearly universally supported.
|
|
195
|
+
|
|
196
|
+
Even distros using PipeWire often come with a PulseAudio compatibility
|
|
197
|
+
layer preinstalled. If this driver fails to initialize, consult your
|
|
198
|
+
distro's documentation to learn which audio back-ends you can install.
|
|
199
|
+
|
|
200
|
+
This driver has the following downsides:
|
|
201
|
+
|
|
202
|
+
#. Limited features compared to other drivers
|
|
203
|
+
#. A bug which can crash your program under certain conditions.
|
|
204
|
+
|
|
205
|
+
Missing features
|
|
206
|
+
""""""""""""""""
|
|
207
|
+
|
|
208
|
+
Although PulseAudio can theoretically support advanced multi-channel
|
|
209
|
+
audio, the pyglet driver does not. The following features will not
|
|
210
|
+
work properly:
|
|
211
|
+
|
|
212
|
+
#. Positional audio: automatically changing the volume for individual
|
|
213
|
+
audio channels based on the position of the sound source
|
|
214
|
+
#. Integration with surround sound
|
|
215
|
+
|
|
216
|
+
Switching to :ref:`guide-audio-driver-openal` should automatically enable them.
|
|
217
|
+
|
|
218
|
+
The bug
|
|
219
|
+
"""""""
|
|
220
|
+
|
|
221
|
+
.. _pulse-bug: https://github.com/pyglet/pyglet/issues/952
|
|
222
|
+
|
|
223
|
+
The driver will initialize correctly, but pyglet will crash
|
|
224
|
+
during execution.
|
|
108
225
|
|
|
109
|
-
|
|
110
|
-
with most modern Linux distributions. Pulseaudio does not support positional
|
|
111
|
-
audio, and is limited to stereo. It is recommended to use OpenAL if positional
|
|
112
|
-
audio is required.
|
|
226
|
+
The traceback will contain a message like the one below:
|
|
113
227
|
|
|
114
|
-
..
|
|
115
|
-
|
|
116
|
-
|
|
228
|
+
.. code-block:: console
|
|
229
|
+
|
|
230
|
+
Assertion 'q->front' failed at pulsecore/queue.c:81, function pa_queue_push(). Aborting.
|
|
231
|
+
|
|
232
|
+
The following conditions can trigger the crash:
|
|
233
|
+
|
|
234
|
+
#. A debugger paused or resumed the program while audio is playing
|
|
235
|
+
#. Unpredictably when 2 or more sounds are playing
|
|
236
|
+
|
|
237
|
+
The easiest fix is to :ref:`install OpenAL <guide-audio-driver-openal>`
|
|
238
|
+
and restart the program.
|
|
239
|
+
|
|
240
|
+
See `the GitHub issue <pulse-bug_>`_ for more information. The following
|
|
241
|
+
are currently unclear:
|
|
242
|
+
|
|
243
|
+
#. How different PulseAudio implementations affect the bug (PipeWire vs original)
|
|
244
|
+
#. How often the bug occurs for users on less common distros
|
|
245
|
+
#. Its full details; it is believed to be an unpredictable
|
|
246
|
+
`concurrency issue involving locks <https://github.com/pyglet/pyglet/issues/952#issuecomment-1716821550>`_.
|
|
247
|
+
#. Whether it is worth fixing; the workarounds are easy and PulseAudio
|
|
248
|
+
is being replaced by PipeWire.
|
|
249
|
+
|
|
250
|
+
|
|
251
|
+
.. _guide-supportedmedia:
|
|
117
252
|
|
|
118
253
|
Supported media types
|
|
119
254
|
---------------------
|
|
@@ -126,6 +261,8 @@ unnecessarily large dependency when only simple audio playback is needed.
|
|
|
126
261
|
|
|
127
262
|
These formats are supported natively under the following systems and codecs:
|
|
128
263
|
|
|
264
|
+
.. _guide-supportedmedia-wmf:
|
|
265
|
+
|
|
129
266
|
Windows Media Foundation
|
|
130
267
|
^^^^^^^^^^^^^^^^^^^^^^^^
|
|
131
268
|
Supported on Windows operating systems.
|
|
@@ -145,6 +282,7 @@ The following is undocumented but known to work on **Windows 10**:
|
|
|
145
282
|
|
|
146
283
|
* FLAC
|
|
147
284
|
|
|
285
|
+
.. _guide-supportedmedia-gstreamer:
|
|
148
286
|
|
|
149
287
|
GStreamer
|
|
150
288
|
^^^^^^^^^
|
|
@@ -157,6 +295,7 @@ but will often already be installed along with GStreamer.
|
|
|
157
295
|
* OGG
|
|
158
296
|
* M4A
|
|
159
297
|
|
|
298
|
+
.. _guide-supportedmedia-coreaudio:
|
|
160
299
|
|
|
161
300
|
CoreAudio
|
|
162
301
|
^^^^^^^^^
|
|
@@ -172,9 +311,13 @@ Supported on Mac operating systems.
|
|
|
172
311
|
* SND
|
|
173
312
|
* SD2
|
|
174
313
|
|
|
314
|
+
.. _guide-supportedmedia-pyogg:
|
|
175
315
|
|
|
176
316
|
PyOgg
|
|
177
317
|
^^^^^
|
|
318
|
+
|
|
319
|
+
.. _pyogg_install: https://pyogg.readthedocs.io/en/latest/installation.html
|
|
320
|
+
|
|
178
321
|
Supported on Windows, Linux, and Mac operating systems.
|
|
179
322
|
|
|
180
323
|
PyOgg is a lightweight Python library that provides Python bindings for Opus, Vorbis,
|
|
@@ -191,17 +334,41 @@ Supports the following formats:
|
|
|
191
334
|
* FLAC
|
|
192
335
|
* OPUS
|
|
193
336
|
|
|
194
|
-
|
|
337
|
+
To install PyOgg, please see their `installation guide on readthedocs.io
|
|
338
|
+
<pyogg_install_>`_.
|
|
339
|
+
|
|
340
|
+
.. _guide-supportedmedia-ffmpeg:
|
|
195
341
|
|
|
196
342
|
FFmpeg
|
|
197
343
|
^^^^^^
|
|
198
|
-
|
|
199
|
-
in the next section below.
|
|
344
|
+
.. _FFmpeg's license overview: https://www.ffmpeg.org/legal.html
|
|
200
345
|
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
346
|
+
.. note:: The most recent pyglet release can use FFmpeg 4.X, 5.X, or 6.X
|
|
347
|
+
|
|
348
|
+
See :ref:`guide-media-ffmpeginstall` to learn more.
|
|
349
|
+
|
|
350
|
+
FFmpeg is best when you need to support the maximum number of formats
|
|
351
|
+
and encodings. It is also worth considering the following:
|
|
352
|
+
|
|
353
|
+
* Support for many formats and container types means large download size
|
|
354
|
+
* FFmpeg's compile options allow it to be built and used under :ref:`either
|
|
355
|
+
the LGPL or GPL license <guide-ffmpeg-licenses>`
|
|
356
|
+
|
|
357
|
+
See the following sections to learn more.
|
|
358
|
+
|
|
359
|
+
See :ref:`guide-ffmpeg-licenses` to learn more.
|
|
360
|
+
|
|
361
|
+
Supported Formats
|
|
362
|
+
"""""""""""""""""
|
|
363
|
+
|
|
364
|
+
.. _the FFmpeg documentation: https://ffmpeg.org/ffmpeg.html
|
|
365
|
+
|
|
366
|
+
It is difficult to provide a complete list of FFmpeg's features due to
|
|
367
|
+
the large number of audio and video codecs, options, and container
|
|
368
|
+
formats it supports. Refer to `the FFmpeg documentation`_ for
|
|
369
|
+
more information.
|
|
370
|
+
|
|
371
|
+
Known supported audio formats include:
|
|
205
372
|
|
|
206
373
|
* AU
|
|
207
374
|
* MP2
|
|
@@ -210,7 +377,7 @@ supported audio formats are:
|
|
|
210
377
|
* WAV
|
|
211
378
|
* WMA
|
|
212
379
|
|
|
213
|
-
|
|
380
|
+
Known supported video formats include:
|
|
214
381
|
|
|
215
382
|
* AVI
|
|
216
383
|
* DivX
|
|
@@ -223,11 +390,46 @@ Some of the supported video formats are:
|
|
|
223
390
|
* WMV
|
|
224
391
|
* Webm
|
|
225
392
|
|
|
226
|
-
|
|
227
|
-
|
|
393
|
+
The easiest way to check whether a file will load through FFmpeg is to
|
|
394
|
+
try playing it through the ``media_player.py`` example. New releases of
|
|
395
|
+
FFmpeg may fix bugs and add support for new formats.
|
|
396
|
+
|
|
397
|
+
.. _guide-ffmpeg-licenses:
|
|
398
|
+
|
|
399
|
+
FFmpeg & licenses
|
|
400
|
+
"""""""""""""""""
|
|
228
401
|
|
|
229
|
-
|
|
230
|
-
|
|
402
|
+
FFmpeg's code uses different licenses for different parts.
|
|
403
|
+
|
|
404
|
+
The core of the project uses a modified LGPL license. However, the GPL
|
|
405
|
+
is used for certain optional parts. Using these components, as well as
|
|
406
|
+
bundling FFmpeg binaries which include them, may require full GPL
|
|
407
|
+
compliance. As a result, some organizations may restrict some or all
|
|
408
|
+
use of FFmpeg.
|
|
409
|
+
|
|
410
|
+
pyglet's FFmpeg bindings do not rely on the optional GPL-licensed parts.
|
|
411
|
+
Therefore, most projects should be free to use any license they choose
|
|
412
|
+
for their own code as long as they use one of the following approaches:
|
|
413
|
+
|
|
414
|
+
* Require users to install FFmpeg themselves using either:
|
|
415
|
+
|
|
416
|
+
* The :ref:`guide-media-ffmpeginstall` section on this page
|
|
417
|
+
* Custom instructions for a specific FFmpeg version
|
|
418
|
+
|
|
419
|
+
* Make FFmpeg optional as described at the end of the
|
|
420
|
+
:ref:`guide-media-ffmpeginstall` instructions
|
|
421
|
+
* Bundle an LGPL-only build of FFmpeg
|
|
422
|
+
|
|
423
|
+
See the following to learn more:
|
|
424
|
+
|
|
425
|
+
* `FFmpeg's license overview`_
|
|
426
|
+
* The license documentation for your specific FFmpeg version:
|
|
427
|
+
|
|
428
|
+
* `The FFmpeg 4.4 license breakdown <https://ffmpeg.org/doxygen/4.4/md_LICENSE.html>`_
|
|
429
|
+
* `The FFmpeg 5.1 license breakdown <https://ffmpeg.org/doxygen/5.1/md_LICENSE.html>`_
|
|
430
|
+
* `The FFmpeg 6.0 license breakdown <https://ffmpeg.org/doxygen/6.0/md_LICENSE.html>`_
|
|
431
|
+
|
|
432
|
+
.. _guide-media-ffmpeginstall:
|
|
231
433
|
|
|
232
434
|
FFmpeg installation
|
|
233
435
|
-------------------
|
|
@@ -237,7 +439,8 @@ in the `FFmpeg download <https://www.ffmpeg.org/download.html>`_ page. You must
|
|
|
237
439
|
choose the shared build for the targeted OS with the architecture similar to
|
|
238
440
|
the Python interpreter.
|
|
239
441
|
|
|
240
|
-
|
|
442
|
+
All recent pyglet versions support FFmpeg 4.x and 5.x. To use FFmpeg 6.X,
|
|
443
|
+
you must use pyglet 2.0.8 or later.
|
|
241
444
|
|
|
242
445
|
Choose the correct architecture depending on the targeted
|
|
243
446
|
**Python interpreter**. If you're shipping your project with a 32 bits
|
|
@@ -275,13 +478,20 @@ For Linux and Mac OS::
|
|
|
275
478
|
|
|
276
479
|
os.environ["LD_LIBRARY_PATH"] += ":" + "path/to/ffmpeg"
|
|
277
480
|
|
|
278
|
-
..
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
481
|
+
.. tip:: Prevent crashes by checking for FFmpeg before loading media!
|
|
482
|
+
|
|
483
|
+
Call :py:func:`pyglet.media.have_ffmpeg` to check whether
|
|
484
|
+
FFmpeg was detected correctly. If it returns ``False``, you can
|
|
485
|
+
take an appropriate action instead of crashing. Examples
|
|
486
|
+
include:
|
|
487
|
+
|
|
488
|
+
* Showing a helpful error in the GUI or console output
|
|
489
|
+
* Exiting gracefully after the the user clicks OK on a dialog
|
|
490
|
+
* Limiting the formats your project will attempt to load
|
|
283
491
|
|
|
284
492
|
|
|
493
|
+
.. _guide-media-loading:
|
|
494
|
+
|
|
285
495
|
Loading media
|
|
286
496
|
-------------
|
|
287
497
|
|
|
@@ -364,6 +574,9 @@ already- loaded :class:`~pyglet.media.Source`::
|
|
|
364
574
|
|
|
365
575
|
explosion = pyglet.media.StaticSource(pyglet.media.load('explosion.wav'))
|
|
366
576
|
|
|
577
|
+
|
|
578
|
+
.. _guide-media-audiosynthesis:
|
|
579
|
+
|
|
367
580
|
Audio Synthesis
|
|
368
581
|
---------------
|
|
369
582
|
|
|
@@ -407,6 +620,8 @@ An example of creating an envelope and waveforms::
|
|
|
407
620
|
The waveforms you create with the synthesis module can be played like any
|
|
408
621
|
other loaded sound. See the next sections for more detail on playback.
|
|
409
622
|
|
|
623
|
+
.. _guide-media-simpleaudioplayback:
|
|
624
|
+
|
|
410
625
|
Simple audio playback
|
|
411
626
|
---------------------
|
|
412
627
|
|
|
@@ -430,6 +645,8 @@ The return value of :py:meth:`~pyglet.media.Source.play` is a
|
|
|
430
645
|
:py:class:`~pyglet.media.player.Player`, which can either be
|
|
431
646
|
discarded, or retained to maintain control over the sound's playback.
|
|
432
647
|
|
|
648
|
+
.. _guide-media-controllingplayback:
|
|
649
|
+
|
|
433
650
|
Controlling playback
|
|
434
651
|
--------------------
|
|
435
652
|
|
|
@@ -530,14 +747,19 @@ There are several properties that describe the player's current state:
|
|
|
530
747
|
queued source.
|
|
531
748
|
|
|
532
749
|
|
|
750
|
+
.. _guide-media-playbackevents:
|
|
751
|
+
|
|
752
|
+
Handling playback events
|
|
753
|
+
------------------------
|
|
754
|
+
|
|
533
755
|
When a player reaches the end of the current source, an :py:meth:`~pyglet.media.Player.on_eos`
|
|
534
756
|
(on end-of-source) event is dispatched. Players have a default handler for this event,
|
|
535
757
|
which will either repeat the current source (if the :py:attr:`~pyglet.media.player.Player.loop`
|
|
536
758
|
attribute has been set to ``True``), or move to the next queued source immediately.
|
|
537
759
|
When there are no more queued sources, the :py:meth:`~pyglet.media.Player.on_player_eos`
|
|
538
|
-
event is
|
|
760
|
+
event is dispatched, and playback stops until another source is queued.
|
|
539
761
|
|
|
540
|
-
For loop
|
|
762
|
+
For loop control you can change the :py:attr:`~pyglet.media.player.Player.loop` attribute
|
|
541
763
|
at any time, but be aware that unless sufficient time is given for the future
|
|
542
764
|
data to be decoded and buffered there may be a stutter or gap in playback.
|
|
543
765
|
If set well in advance of the end of the source (say, several seconds), there
|
|
@@ -550,6 +772,8 @@ or add an additional event as described in the reference. For example::
|
|
|
550
772
|
my_player.on_eos = my_player.pause
|
|
551
773
|
|
|
552
774
|
|
|
775
|
+
.. _guide-media-gaplessplayback:
|
|
776
|
+
|
|
553
777
|
Gapless playback
|
|
554
778
|
----------------
|
|
555
779
|
|
|
@@ -562,6 +786,8 @@ sources with the :func:`~pyglet.media.SourceGroup.add` method.
|
|
|
562
786
|
Afterwards, you can queue the :py:class:`~pyglet.media.SourceGroup`
|
|
563
787
|
on a Player as if it was a single source.
|
|
564
788
|
|
|
789
|
+
.. _guide-media-incorporating_video:
|
|
790
|
+
|
|
565
791
|
Incorporating video
|
|
566
792
|
-------------------
|
|
567
793
|
|
|
@@ -580,6 +806,8 @@ texture will typically be created only once and subsequentally updated each
|
|
|
580
806
|
frame, you should make no such assumption in your application -- future
|
|
581
807
|
versions of pyglet may use multiple texture objects.
|
|
582
808
|
|
|
809
|
+
.. _guide-media-positionalaudio:
|
|
810
|
+
|
|
583
811
|
Positional audio
|
|
584
812
|
----------------
|
|
585
813
|
|
|
@@ -607,6 +835,8 @@ describe the position of the user in 3D space.
|
|
|
607
835
|
Note that only mono sounds can be positioned. Stereo sounds will play back as
|
|
608
836
|
normal, and only their volume and pitch properties will affect the sound.
|
|
609
837
|
|
|
838
|
+
.. _guide-media-tickingtheclock:
|
|
839
|
+
|
|
610
840
|
Ticking the clock
|
|
611
841
|
-----------------
|
|
612
842
|
|
|
@@ -193,6 +193,7 @@ demonstrates playing many short audio samples simultaneously, as in a game.
|
|
|
193
193
|
.. [#mp3] MP3 and other compressed audio formats require FFmpeg to be installed.
|
|
194
194
|
Uncompressed WAV files can be played without FFmpeg.
|
|
195
195
|
|
|
196
|
+
|
|
196
197
|
Where to next?
|
|
197
198
|
--------------
|
|
198
199
|
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import pyglet
|
|
2
|
+
|
|
3
|
+
"""Simple example demonstrating how to get the text in the clipboard as well as putting text in the clipboard."""
|
|
4
|
+
|
|
5
|
+
window = pyglet.window.Window()
|
|
6
|
+
|
|
7
|
+
print("Existing Clipboard Text:", window.get_clipboard_text())
|
|
8
|
+
|
|
9
|
+
@window.event
|
|
10
|
+
def on_key_press(symbol, modifiers):
|
|
11
|
+
print("Clipboard changed to: Hello World!")
|
|
12
|
+
|
|
13
|
+
window.set_clipboard_text("Hello World!")
|
|
14
|
+
|
|
15
|
+
print("Clipboard Text:", window.get_clipboard_text())
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
pyglet.app.run()
|
|
@@ -25,7 +25,9 @@ class ControllerDisplay:
|
|
|
25
25
|
self.right_trigger = Rectangle(610, 310, 40, 10, batch=batch)
|
|
26
26
|
self.d_pad = Rectangle(280, 185, 10, 10, batch=batch)
|
|
27
27
|
self.left_stick = Arc(180, 240, 20, batch=batch)
|
|
28
|
+
self.left_stick_label = pyglet.text.Label("(0.0, 0.0)", x=180, y=140, anchor_x='center', batch=batch)
|
|
28
29
|
self.right_stick = Arc(540, 240, 20, batch=batch)
|
|
30
|
+
self.right_stick_label = pyglet.text.Label("(0.0, 0.0)", x=540, y=140, anchor_x='center', batch=batch)
|
|
29
31
|
|
|
30
32
|
self.l_outline1 = Arc(180, 240, 75, color=(44, 44, 44), batch=batch)
|
|
31
33
|
self.l_outline2 = Arc(285, 190, 35, color=(44, 44, 44), batch=batch)
|
|
@@ -72,8 +74,10 @@ class ControllerDisplay:
|
|
|
72
74
|
def on_stick_motion(self, controller, stick, xvalue, yvalue):
|
|
73
75
|
if stick == "leftstick":
|
|
74
76
|
self.left_stick.position = 180+xvalue*50, 240+yvalue*50
|
|
77
|
+
self.left_stick_label.text = f"({round(xvalue, 1)}, {round(yvalue, 1)})"
|
|
75
78
|
elif stick == "rightstick":
|
|
76
79
|
self.right_stick.position = 540+xvalue*50, 240+yvalue*50
|
|
80
|
+
self.right_stick_label.text = f"({round(xvalue, 1)}, {round(yvalue, 1)})"
|
|
77
81
|
|
|
78
82
|
def on_trigger_motion(self, controller, trigger, value):
|
|
79
83
|
if trigger == "lefttrigger":
|
|
@@ -1,5 +1,3 @@
|
|
|
1
|
-
#!/usr/bin/env python
|
|
2
|
-
|
|
3
1
|
"""Print details of a media file that pyglet can open (requires FFmpeg).
|
|
4
2
|
|
|
5
3
|
Usage::
|
|
@@ -7,12 +5,6 @@ Usage::
|
|
|
7
5
|
media_info.py <filename>
|
|
8
6
|
|
|
9
7
|
"""
|
|
10
|
-
|
|
11
|
-
from __future__ import print_function
|
|
12
|
-
|
|
13
|
-
__docformat__ = 'restructuredtext'
|
|
14
|
-
__version__ = '$Id: $'
|
|
15
|
-
|
|
16
8
|
import sys
|
|
17
9
|
import pyglet
|
|
18
10
|
|
|
@@ -85,5 +77,5 @@ if __name__ == '__main__':
|
|
|
85
77
|
source = pyglet.media.load(filename, streaming=True)
|
|
86
78
|
print_source_info(source)
|
|
87
79
|
del source
|
|
88
|
-
except pyglet.media.
|
|
80
|
+
except pyglet.media.codecs.MediaException:
|
|
89
81
|
print(f'Codec not available to open: {filename}')
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
Sound Space
|
|
2
|
+
===========
|
|
3
|
+
|
|
4
|
+
This is a toy program for playing with positional audio in pyglet
|
|
5
|
+
(http://www.pyglet.org). On Linux, OpenAL is required.
|
|
6
|
+
|
|
7
|
+
The source code is licensed under the BSD license, which is quite permissive
|
|
8
|
+
(see the source headers for details).
|
|
9
|
+
|
|
10
|
+
Audio samples were generated with Apple GarageBand.
|
|
11
|
+
|
|
12
|
+
Usage
|
|
13
|
+
-----
|
|
14
|
+
|
|
15
|
+
Run the toy with::
|
|
16
|
+
|
|
17
|
+
python soundspace.py
|
|
18
|
+
|
|
19
|
+
Everything is controlled with the mouse. Hover over a control to
|
|
20
|
+
see its name. Click and drag an empty area to pan the view, and scroll the
|
|
21
|
+
scroll wheel to zoom in and out.
|
|
22
|
+
|
|
23
|
+
The red triangles can be dragged to move the position of a player or listener.
|
|
24
|
+
|
|
25
|
+
The dashed line to the yellow handle shows the cone orientation; this can be
|
|
26
|
+
reoriented by dragging it.
|
|
27
|
+
|
|
28
|
+
The blue and green segments represent the outer and inner cone angles,
|
|
29
|
+
respectively. You can resize the angle by dragging the handle attached to the
|
|
30
|
+
cone.
|
|
31
|
+
|
|
32
|
+
There is a master volume control beneath the listener.
|
|
33
|
+
|
|
34
|
+
Click the (+) sign on a player to show the min_gain, max_gain, cone_outer_gain
|
|
35
|
+
and volume controls.
|
|
36
|
+
|
|
37
|
+
The initial configuration is given in res/space.txt; it should be
|
|
38
|
+
self-explanatory (parsed by reader.py).
|