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
|
@@ -128,12 +128,18 @@ inheritance_graph_attrs = dict(rankdir="LR", size='""')
|
|
|
128
128
|
# Add any Sphinx extension module names here, as strings. They can be extensions
|
|
129
129
|
# coming with Sphinx (named 'sphinx.ext.*') or your custom ones.
|
|
130
130
|
extensions = ['sphinx.ext.autodoc',
|
|
131
|
+
'sphinx.ext.intersphinx',
|
|
131
132
|
'sphinx.ext.inheritance_diagram',
|
|
132
133
|
'sphinx.ext.todo',
|
|
133
134
|
'sphinx.ext.napoleon']
|
|
134
135
|
|
|
135
136
|
autodoc_member_order = 'groupwise'
|
|
136
137
|
|
|
138
|
+
# Enable links to Python's main doc
|
|
139
|
+
intersphinx_mapping = {
|
|
140
|
+
'python': ('https://docs.python.org/3', None)
|
|
141
|
+
}
|
|
142
|
+
|
|
137
143
|
# Add any paths that contain templates here, relative to this directory.
|
|
138
144
|
templates_path = ['_templates']
|
|
139
145
|
|
|
@@ -15,6 +15,7 @@ pyglet.shapes
|
|
|
15
15
|
.. autoattribute:: x
|
|
16
16
|
.. autoattribute:: y
|
|
17
17
|
.. autoattribute:: position
|
|
18
|
+
.. autoattribute:: rotation
|
|
18
19
|
.. autoattribute:: anchor_x
|
|
19
20
|
.. autoattribute:: anchor_y
|
|
20
21
|
.. autoattribute:: anchor_position
|
|
@@ -30,7 +31,6 @@ pyglet.shapes
|
|
|
30
31
|
|
|
31
32
|
.. autoattribute:: angle
|
|
32
33
|
.. autoattribute:: start_angle
|
|
33
|
-
.. autoattribute:: rotation
|
|
34
34
|
|
|
35
35
|
|
|
36
36
|
.. autoclass:: BezierCurve
|
|
@@ -51,7 +51,6 @@ pyglet.shapes
|
|
|
51
51
|
|
|
52
52
|
.. autoattribute:: a
|
|
53
53
|
.. autoattribute:: b
|
|
54
|
-
.. autoattribute:: rotation
|
|
55
54
|
|
|
56
55
|
|
|
57
56
|
.. autoclass:: Sector
|
|
@@ -60,7 +59,6 @@ pyglet.shapes
|
|
|
60
59
|
.. autoattribute:: angle
|
|
61
60
|
.. autoattribute:: start_angle
|
|
62
61
|
.. autoattribute:: radius
|
|
63
|
-
.. autoattribute:: rotation
|
|
64
62
|
|
|
65
63
|
|
|
66
64
|
.. autoclass:: Line
|
|
@@ -75,7 +73,13 @@ pyglet.shapes
|
|
|
75
73
|
|
|
76
74
|
.. autoattribute:: width
|
|
77
75
|
.. autoattribute:: height
|
|
78
|
-
|
|
76
|
+
|
|
77
|
+
|
|
78
|
+
.. autoclass:: Box
|
|
79
|
+
:show-inheritance:
|
|
80
|
+
|
|
81
|
+
.. autoattribute:: width
|
|
82
|
+
.. autoattribute:: height
|
|
79
83
|
|
|
80
84
|
|
|
81
85
|
.. autoclass:: BorderedRectangle
|
|
@@ -84,7 +88,6 @@ pyglet.shapes
|
|
|
84
88
|
.. autoattribute:: width
|
|
85
89
|
.. autoattribute:: height
|
|
86
90
|
.. autoattribute:: border_color
|
|
87
|
-
.. autoattribute:: rotation
|
|
88
91
|
|
|
89
92
|
|
|
90
93
|
.. autoclass:: Triangle
|
|
@@ -102,10 +105,7 @@ pyglet.shapes
|
|
|
102
105
|
.. autoattribute:: outer_radius
|
|
103
106
|
.. autoattribute:: inner_radius
|
|
104
107
|
.. autoattribute:: num_spikes
|
|
105
|
-
.. autoattribute:: rotation
|
|
106
108
|
|
|
107
109
|
|
|
108
110
|
.. autoclass:: Polygon
|
|
109
111
|
:show-inheritance:
|
|
110
|
-
|
|
111
|
-
.. autoattribute:: rotation
|
|
@@ -127,7 +127,10 @@ Misc functions
|
|
|
127
127
|
Text motion constants
|
|
128
128
|
^^^^^^^^^^^^^^^^^^^^^
|
|
129
129
|
|
|
130
|
-
These are allowed to clash with key constants
|
|
130
|
+
These are allowed to clash with key constants because they abstract
|
|
131
|
+
common text motions from their platform-specific keyboard shortcuts.
|
|
132
|
+
See :ref:`guide_keyboard-motion-events` for more information.
|
|
133
|
+
|
|
131
134
|
|
|
132
135
|
.. list-table::
|
|
133
136
|
|
|
@@ -139,6 +142,10 @@ These are allowed to clash with key constants.
|
|
|
139
142
|
* ``MOTION_DOWN``
|
|
140
143
|
*
|
|
141
144
|
* ``MOTION_LEFT``
|
|
145
|
+
*
|
|
146
|
+
* ``MOTION_COPY``
|
|
147
|
+
*
|
|
148
|
+
* ``MOTION_PASTE``
|
|
142
149
|
*
|
|
143
150
|
* ``MOTION_NEXT_WORD``
|
|
144
151
|
*
|
|
@@ -160,6 +167,7 @@ These are allowed to clash with key constants.
|
|
|
160
167
|
*
|
|
161
168
|
* ``MOTION_DELETE``
|
|
162
169
|
|
|
170
|
+
|
|
163
171
|
Number pad
|
|
164
172
|
^^^^^^^^^^
|
|
165
173
|
|
|
@@ -4,31 +4,40 @@ The application event loop
|
|
|
4
4
|
==========================
|
|
5
5
|
|
|
6
6
|
In order to let pyglet process operating system events such as mouse and
|
|
7
|
-
keyboard events, applications need to enter an application event loop.
|
|
8
|
-
event loop
|
|
9
|
-
|
|
7
|
+
keyboard events, applications need to enter an application event loop. The
|
|
8
|
+
event loop watches for new events, dispatches those events, and sleeps until
|
|
9
|
+
something else needs to be done. It also handles any functions that you
|
|
10
|
+
have scheduled on the clock (see :ref:`guide_calling-functions-periodically`).
|
|
11
|
+
pyglet ensures that the loop iterates only as often as necessary to fulfill all
|
|
12
|
+
scheduled functions and user input. It is well tuned for performance and low
|
|
13
|
+
power usage on Windows, Linux and macOS.
|
|
10
14
|
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
call::
|
|
15
|
+
After creating Windows and attaching event handlers, most applications need
|
|
16
|
+
only call::
|
|
14
17
|
|
|
15
18
|
pyglet.app.run()
|
|
16
19
|
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
return until all open windows have been closed, or until
|
|
20
|
-
:py:func:`pyglet.app.exit()` is called.
|
|
20
|
+
The :py:func:`~pyglet.app.run` function does not return until all open windows
|
|
21
|
+
have been closed, or until :py:func:`pyglet.app.exit()` is called.
|
|
21
22
|
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
23
|
+
Once you have entered the event loop it dispatches window events (such as for
|
|
24
|
+
keyboard input or mouse movement), events from Controllers or Joysticks,
|
|
25
|
+
and any other events as they occur. By default, the application event loop will
|
|
26
|
+
also refresh all Windows and dispatch the :py:meth:`~pyglet.window.Window.on_draw`
|
|
27
|
+
event at a rate of 60Hz (60 times per second). You can customize this by
|
|
28
|
+
passing the desired interval in seconds to :py:func:`~pyglet.app.run`::
|
|
26
29
|
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
30
|
+
pyglet.app.run(1/30) # 30Hz
|
|
31
|
+
# or
|
|
32
|
+
pyglet.app.run(1/120) # 120Hz
|
|
33
|
+
# or for benchmarking, redraw as fast as possible:
|
|
34
|
+
pyglet.app.run(0)
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
Passing `None` to :py:func:`~pyglet.app.run` is a special case. It will enter
|
|
38
|
+
the event loop as usual, but it will not dispatch the Window events. This can
|
|
39
|
+
be desired if you wish to have different refresh rates for different Windows,
|
|
40
|
+
or even change the refresh rate while the application is running.
|
|
32
41
|
|
|
33
42
|
Customising the event loop
|
|
34
43
|
--------------------------
|
|
@@ -52,7 +61,7 @@ instance. Other pyglet modules such as :py:mod:`pyglet.window` depend on this.
|
|
|
52
61
|
Event loop events
|
|
53
62
|
^^^^^^^^^^^^^^^^^
|
|
54
63
|
|
|
55
|
-
You can listen for several events on the event loop instance.
|
|
64
|
+
You can listen for several events on the event loop instance. A useful one
|
|
56
65
|
of these is :py:meth:`~pyglet.app.EventLoop.on_window_close`, which is
|
|
57
66
|
dispatched whenever a window is closed. The default handler for this event
|
|
58
67
|
exits the event loop if there are no more windows. The following example
|
|
@@ -73,7 +82,7 @@ Overriding the default idle policy
|
|
|
73
82
|
|
|
74
83
|
The :py:meth:`pyglet.app.EventLoop.idle` method is called every iteration of
|
|
75
84
|
the event loop. It is responsible for calling scheduled clock functions,
|
|
76
|
-
|
|
85
|
+
and deciding how idle the application is. You can override
|
|
77
86
|
this method if you have specific requirements for tuning the performance
|
|
78
87
|
of your application; especially if it uses many windows.
|
|
79
88
|
|
|
@@ -81,32 +90,38 @@ The default implementation has the following algorithm:
|
|
|
81
90
|
|
|
82
91
|
1. Call :py:func:`pyglet.clock.tick` with ``poll=True`` to call any scheduled
|
|
83
92
|
functions.
|
|
84
|
-
2.
|
|
85
|
-
:py:meth:`~pyglet.window.Window.flip` on every open window.
|
|
86
|
-
3. Return the value of :py:func:`pyglet.clock.get_sleep_time`.
|
|
93
|
+
2. Return the value of :py:func:`pyglet.clock.get_sleep_time`.
|
|
87
94
|
|
|
88
95
|
The return value of the :py:meth:`~pyglet.clock.get_sleep_time` method is
|
|
89
96
|
the number of seconds until the event loop needs to iterate again (unless
|
|
90
97
|
there is an earlier user-input event); or ``None`` if the loop can wait
|
|
91
98
|
for input indefinitely.
|
|
92
99
|
|
|
93
|
-
Note that this default policy causes every window to be redrawn during every
|
|
94
|
-
user event -- if you have more knowledge about which events have an effect on
|
|
95
|
-
which windows you can improve on the performance of this method.
|
|
96
100
|
|
|
97
|
-
|
|
98
|
-
|
|
101
|
+
Creating a Custom Event Loop
|
|
102
|
+
----------------------------
|
|
99
103
|
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
104
|
+
Many windowing toolkits requie the application developer to write their own
|
|
105
|
+
event loop. This is also possible in pyglet, but is usually just an inconvenience
|
|
106
|
+
compared to :py:func:`pyglet.app.run`. It can be necessary in some situations,
|
|
107
|
+
such as when combining pyglet with other toolkits, but is strongly discouraged
|
|
108
|
+
for the following reasons:
|
|
105
109
|
|
|
106
|
-
|
|
110
|
+
* Keeping track of delta times between frames, and maintaining a stable frame
|
|
111
|
+
rate can be challenging. It is difficult to write a manual event loop that does
|
|
112
|
+
not waste CPU cycles and is still responsive to user input.
|
|
113
|
+
* The :py:class:`~pyglet.app.EventLoop` class provides plenty of hooks for most
|
|
114
|
+
toolkits to be integrated without needing to resort to a manual event loop.
|
|
115
|
+
* Because :py:class:`~pyglet.app.EventLoop` is tuned for specific operating
|
|
116
|
+
systems, it is more responsive to user events, and continues calling clock
|
|
117
|
+
functions while windows are being resized, and (on macOS) the menu bar is
|
|
118
|
+
being tracked.
|
|
119
|
+
|
|
120
|
+
With that out of the way, a manual event loop usually has the following form::
|
|
107
121
|
|
|
108
122
|
while True:
|
|
109
123
|
pyglet.clock.tick()
|
|
124
|
+
pyglet.app.platform_event_loop.step(timeout)
|
|
110
125
|
|
|
111
126
|
for window in pyglet.app.windows:
|
|
112
127
|
window.switch_to()
|
|
@@ -114,26 +129,15 @@ A simple event loop usually has the following form::
|
|
|
114
129
|
window.dispatch_event('on_draw')
|
|
115
130
|
window.flip()
|
|
116
131
|
|
|
117
|
-
The :py:meth:`~pyglet.window.Window.dispatch_events` method checks the window's
|
|
118
|
-
operating system event queue for user input and dispatches any events found.
|
|
119
|
-
The method does not wait for input -- if ther are no events pending, control is
|
|
120
|
-
returned to the program immediately.
|
|
121
|
-
|
|
122
132
|
The call to :py:func:`pyglet.clock.tick` is required for ensuring scheduled
|
|
123
133
|
functions are called, including the internal data pump functions for playing
|
|
124
134
|
sounds, animations, and video.
|
|
125
135
|
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
toolkits to be integrated without needing to resort to a manual event loop.
|
|
131
|
-
* Because :py:class:`~pyglet.app.EventLoop` is tuned for specific operating
|
|
132
|
-
systems, it is more responsive to user events, and continues calling clock
|
|
133
|
-
functions while windows are being resized, and (on Mac OS X) the menu bar is
|
|
134
|
-
being tracked.
|
|
135
|
-
* It is difficult to write a manual event loop that does not consume
|
|
136
|
-
100% CPU while still remaining responsive to user input.
|
|
136
|
+
The :py:meth:`~pyglet.window.Window.dispatch_events` method checks the window's
|
|
137
|
+
operating system event queue for user input and dispatches any events found.
|
|
138
|
+
The method does not wait for input -- if there are no events pending, control is
|
|
139
|
+
returned to the program immediately.
|
|
137
140
|
|
|
138
|
-
The
|
|
139
|
-
|
|
141
|
+
The :py:meth:`~pyglet.window.Window.dispatch_event('on_draw')` method is optional
|
|
142
|
+
if you are catching this Window event. If you are not using this event, your
|
|
143
|
+
draw calls (`Batch.draw()`) should go here instead.
|
|
@@ -3,27 +3,73 @@
|
|
|
3
3
|
Keyboard input
|
|
4
4
|
==============
|
|
5
5
|
|
|
6
|
-
pyglet
|
|
7
|
-
locale- and device-independent Unicode text entry.
|
|
6
|
+
pyglet provides multiple types of keyboard input abstraction:
|
|
8
7
|
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
is platform-specific (for example, some Linux window managers couple
|
|
13
|
-
keyboard focus with the mouse pointer).
|
|
8
|
+
#. Cross-platform key press/release events suitable for game controls
|
|
9
|
+
#. Unicode text entry with automatic locale and platform handling
|
|
10
|
+
#. Cross-platform detection of common text editing actions
|
|
14
11
|
|
|
15
|
-
You can request keyboard focus for a window with the
|
|
16
|
-
:py:meth:`~pyglet.window.Window.activate` method, but you should not rely
|
|
17
|
-
on this -- it may simply provide a visual cue to the user indicating that
|
|
18
|
-
the window requires user input, without actually getting focus.
|
|
19
12
|
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
:py:
|
|
23
|
-
|
|
13
|
+
All of them have the following restrictions:
|
|
14
|
+
|
|
15
|
+
#. There must be at least one pyglet :py:class:`~pyglet.window.Window`
|
|
16
|
+
instance which can hold keyboard focus
|
|
17
|
+
|
|
18
|
+
#. Windows created with the following styles cannot hold keyboard focus:
|
|
19
|
+
|
|
20
|
+
* :py:attr:`~pyglet.window.Window.WINDOW_STYLE_BORDERLESS`
|
|
21
|
+
* :py:attr:`~pyglet.window.Window.WINDOW_STYLE_TOOL`
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
If your project's requirements fall outside these restrictions, you
|
|
25
|
+
should consider alternatives. Examples include:
|
|
26
|
+
|
|
27
|
+
* Python's built-in :py:func:`input` function
|
|
28
|
+
* The `Textual <https://www.textualize.io/projects/#textual>`_ terminal UI
|
|
29
|
+
framework
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
Keyboard Focus Conventions
|
|
33
|
+
--------------------------
|
|
34
|
+
|
|
35
|
+
Keyboard focus is where the user's keyboard input is sent.
|
|
36
|
+
|
|
37
|
+
Desktop operating systems often follow these conventions:
|
|
38
|
+
|
|
39
|
+
#. Only one window can have focus
|
|
40
|
+
#. Clicking a window gives it focus
|
|
41
|
+
#. The window with focus is displayed above all others
|
|
42
|
+
#. The window with focus has a distinct title bar style
|
|
43
|
+
#. Windows can have focus taken away
|
|
44
|
+
#. Windows can request focus
|
|
45
|
+
|
|
46
|
+
However, the items above are not guaranteed to be true.
|
|
47
|
+
|
|
48
|
+
For example, pyglet allows you to request focus from the OS by calling
|
|
49
|
+
:py:meth:`Window.activate <pyglet.window.Window.activate>`. However,
|
|
50
|
+
the OS may not support the feature. Even if it does support it, the OS
|
|
51
|
+
may not only refuse, but do so without notifying the user focus was
|
|
52
|
+
requested.
|
|
53
|
+
|
|
54
|
+
Deviations from the conventions can occur for any of the following
|
|
55
|
+
reasons:
|
|
56
|
+
|
|
57
|
+
.. list-table::
|
|
58
|
+
:header-rows: 1
|
|
59
|
+
|
|
60
|
+
* - Cause
|
|
61
|
+
- Example(s)
|
|
62
|
+
|
|
63
|
+
* - Modal dialogs
|
|
64
|
+
- Permission requests and error notifications
|
|
65
|
+
|
|
66
|
+
* - User settings
|
|
67
|
+
- Window focus is set to follow the mouse
|
|
68
|
+
|
|
69
|
+
* - Platform quirks
|
|
70
|
+
- Split screen utilities and Linux window managers
|
|
71
|
+
with multi-focus modes
|
|
24
72
|
|
|
25
|
-
It is not possible to use pyglet's keyboard or text events without a window;
|
|
26
|
-
consider using Python built-in functions such as ``input`` instead.
|
|
27
73
|
|
|
28
74
|
Keyboard events
|
|
29
75
|
---------------
|
|
@@ -165,10 +211,10 @@ similar functionality in allowing players to set up their own key bindings.
|
|
|
165
211
|
Remembering key state
|
|
166
212
|
^^^^^^^^^^^^^^^^^^^^^
|
|
167
213
|
|
|
168
|
-
pyglet
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
214
|
+
:py:class:`~pyglet.window.key.KeyStateHandler` is a convenience class which
|
|
215
|
+
stores the current keyboard state. Instances can be pushed onto the event
|
|
216
|
+
handler stack of any window and subsequently queried using key code constants
|
|
217
|
+
as keys::
|
|
172
218
|
|
|
173
219
|
from pyglet.window import key
|
|
174
220
|
|
|
@@ -182,16 +228,16 @@ any window and subsequently queried as a dict::
|
|
|
182
228
|
|
|
183
229
|
.. _guide_text-and-motion-events:
|
|
184
230
|
|
|
185
|
-
Text and
|
|
186
|
-
|
|
231
|
+
Text Input and Motion Events
|
|
232
|
+
----------------------------
|
|
187
233
|
|
|
188
|
-
pyglet
|
|
189
|
-
|
|
234
|
+
pyglet offers Unicode text input events in addition to individual key events.
|
|
235
|
+
There are several benefits to this:
|
|
190
236
|
|
|
191
|
-
*
|
|
192
|
-
|
|
193
|
-
* Key repeat is applied to
|
|
194
|
-
system preferences.
|
|
237
|
+
* Automatic and correct mapping of platform-specific modifiers and key symbols
|
|
238
|
+
to Unicode characters
|
|
239
|
+
* Key repeat for held keys is automatically applied to text input according to
|
|
240
|
+
the user's operating system preferences.
|
|
195
241
|
* Dead keys and compose keys are automatically interpreted to produce
|
|
196
242
|
diacritic marks or combining characters.
|
|
197
243
|
* Keyboard input can be routed via an input palette, for example to input
|
|
@@ -210,46 +256,41 @@ When text is entered into a window, the
|
|
|
210
256
|
pass
|
|
211
257
|
|
|
212
258
|
The only parameter provided is a Unicode string.
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
259
|
+
Although this will usually be one character long for direct keyboard
|
|
260
|
+
input, more complex input methods such as an input palettes may provide
|
|
261
|
+
entire words or phrases at once.
|
|
216
262
|
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
263
|
+
How does this differ from :py:meth:`~pyglet.window.Window.on_key_press`?
|
|
264
|
+
|
|
265
|
+
* Always use the :py:meth:`~pyglet.window.Window.on_text`
|
|
266
|
+
event when you need a string from a series of keystrokes
|
|
267
|
+
* Never use the :py:meth:`~pyglet.window.Window.on_text` event when you
|
|
268
|
+
need individual presses, such as controlling player movement in a game
|
|
222
269
|
|
|
223
|
-
Motion events
|
|
224
|
-
^^^^^^^^^^^^^
|
|
225
270
|
|
|
226
|
-
|
|
227
|
-
around text widgets according to well-ingrained conventions. For example,
|
|
228
|
-
pressing the left arrow key moves the cursor one character to the left.
|
|
271
|
+
.. _guide_keyboard-motion-events:
|
|
229
272
|
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
events, there are a couple of problems:
|
|
273
|
+
Motion events
|
|
274
|
+
^^^^^^^^^^^^^
|
|
233
275
|
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
that holding down the left arrow key will eventually move the character to
|
|
237
|
-
the beginning of the line.
|
|
238
|
-
* Different operating systems have different conventions for the behaviour of
|
|
239
|
-
keys. For example, on Windows it is customary for the Home key to move the
|
|
240
|
-
cursor to the beginning of the line, whereas on Mac OS X the same key moves
|
|
241
|
-
to the beginning of the document.
|
|
276
|
+
In addition to key presses and entering new text, pyglet also supports common
|
|
277
|
+
text editing motions:
|
|
242
278
|
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
279
|
+
* Selecting text
|
|
280
|
+
* Moving the caret in response to non-character keys
|
|
281
|
+
* Deleting, copying, and pasting text
|
|
246
282
|
|
|
247
|
-
|
|
248
|
-
|
|
283
|
+
pyglet automatically detects and translates platform-specific versions of
|
|
284
|
+
supported motions into cross-platform
|
|
285
|
+
:py:meth:`~pyglet.window.Window.on_text_motion` events. These events are
|
|
286
|
+
intended be handled by the :py:meth:`Caret <pyglet.text.caret.Caret.on_text_motion>`
|
|
287
|
+
of any active :py:class:`~pyglet.text.layout.IncrementalTextLayout`, such
|
|
288
|
+
as those used in :py:class:`~pyglet.gui.widgets.TextEntry` fields.
|
|
249
289
|
|
|
250
|
-
`motion`
|
|
251
|
-
:py:mod:`pyglet.window.key`. The
|
|
252
|
-
|
|
290
|
+
The `motion` argument to the event handler will be a constant value
|
|
291
|
+
defined in :py:mod:`pyglet.window.key`. The table below lists the
|
|
292
|
+
supported text motions with their keyboard mapping on each supported
|
|
293
|
+
platform.
|
|
253
294
|
|
|
254
295
|
.. list-table::
|
|
255
296
|
:header-rows: 1
|
|
@@ -274,6 +315,14 @@ and their keyboard mapping on each operating system.
|
|
|
274
315
|
- Move the cursor right
|
|
275
316
|
- Right
|
|
276
317
|
- Right
|
|
318
|
+
* - ``MOTION_COPY``
|
|
319
|
+
- Copy the current selection to the clipboard
|
|
320
|
+
- Ctrl + C
|
|
321
|
+
- Command + C
|
|
322
|
+
* - ``MOTION_PASTE``
|
|
323
|
+
- Paste the clipboard contents into the current document
|
|
324
|
+
- Ctrl + V
|
|
325
|
+
- Command + V
|
|
277
326
|
* - ``MOTION_PREVIOUS_WORD``
|
|
278
327
|
- Move the cursor to the previous word
|
|
279
328
|
- Ctrl + Left
|
|
@@ -315,6 +364,80 @@ and their keyboard mapping on each operating system.
|
|
|
315
364
|
- Delete
|
|
316
365
|
- Delete
|
|
317
366
|
|
|
367
|
+
If you believe pyglet needs to add support for a motion which is
|
|
368
|
+
currently missing, please skip to
|
|
369
|
+
:ref:`guide_keyboard-adding-new-motion-events`.
|
|
370
|
+
|
|
371
|
+
Customizing this behavior for an individual project is currently
|
|
372
|
+
difficult due to the way carets and text entry fields are interconnected.
|
|
373
|
+
However, using :py:meth:`~pyglet.window.Window.on_key_press` to handle
|
|
374
|
+
motion events should still be avoided for the following reasons:
|
|
375
|
+
|
|
376
|
+
* Supported platforms can assign a key to different motions. For example
|
|
377
|
+
the Home key moves the cursor to the start of a line on Windows, but
|
|
378
|
+
to the beginning of a document on Mac OS.
|
|
379
|
+
* Users expect holding down a motion's keys to repeat it released. For
|
|
380
|
+
example, holding Backspace deletes multiple characters. However, only
|
|
381
|
+
one :py:meth:`~pyglet.window.Window.on_key_press` event occurs per
|
|
382
|
+
keypress.
|
|
383
|
+
|
|
384
|
+
|
|
385
|
+
.. _guide_keyboard-adding-new-motion-events:
|
|
386
|
+
|
|
387
|
+
Adding New Motions
|
|
388
|
+
""""""""""""""""""
|
|
389
|
+
|
|
390
|
+
Before adding a new motion, please do the following:
|
|
391
|
+
|
|
392
|
+
#. Consult the previous section & each platform's documentation to be
|
|
393
|
+
sure it is:
|
|
394
|
+
|
|
395
|
+
#. A common text operation present on every platform
|
|
396
|
+
#. Not already implemented by pyglet
|
|
397
|
+
|
|
398
|
+
#. Attempt to find the corresponding functionality in
|
|
399
|
+
`Apple's NSTextView documentation
|
|
400
|
+
<https://developer.apple.com/documentation/appkit/nstextview/>`_
|
|
401
|
+
|
|
402
|
+
#. Discuss the addition and any remaining questions with maintainers by either:
|
|
403
|
+
|
|
404
|
+
* `Filing a GitHub Issue <https://github.com/pyglet/pyglet/issues>`_
|
|
405
|
+
* `Discord or the mailing list <https://github.com/pyglet/pyglet#contact>`_
|
|
406
|
+
|
|
407
|
+
Then, once you're ready:
|
|
408
|
+
|
|
409
|
+
#. Add the motion constant to :py:mod:`pyglet.window.key`
|
|
410
|
+
|
|
411
|
+
#. Add an entry for the constant in the :ref:`guide_keyboard-motion-events`
|
|
412
|
+
section
|
|
413
|
+
|
|
414
|
+
#. Implement shared handling behavior in :py:meth:`~pyglet.text.caret.Caret.on_text_motion`
|
|
415
|
+
|
|
416
|
+
#. Implement Mac support (usually the most confusing step)
|
|
417
|
+
|
|
418
|
+
#. Open `pyglet/window/cocoa/pyglet_textview.py
|
|
419
|
+
<https://github.com/pyglet/pyglet/blob/master/pyglet/window/cocoa/pyglet_textview.py>`_
|
|
420
|
+
#. Implement a corresponding handler method on
|
|
421
|
+
``PygletTextView_Implementation`` (pyglet's subclass of ``NSTextView``)
|
|
422
|
+
|
|
423
|
+
#. Add the Windows keyboard shortcut
|
|
424
|
+
|
|
425
|
+
#. Open `pyglet/window/win32/__init__.py
|
|
426
|
+
<https://github.com/pyglet/pyglet/blob/master/pyglet/window/win32/__init__.py>`_
|
|
427
|
+
#. Add the keyboard shortcut to the ``_motion_map`` dictionary
|
|
428
|
+
|
|
429
|
+
#. Add the Linux keyboard shortcut
|
|
430
|
+
|
|
431
|
+
#. Open `pyglet/window/xlib/__init__.py
|
|
432
|
+
<https://github.com/pyglet/pyglet/blob/master/pyglet/window/xlib/__init__.py>`_
|
|
433
|
+
#. Add the keyboard shortcut to the ``_motion_map`` dictionary
|
|
434
|
+
|
|
435
|
+
|
|
436
|
+
Be sure to test your changes before making a PR if possible!
|
|
437
|
+
|
|
438
|
+
If you do not have access to a specific platform above, include this in your PR's
|
|
439
|
+
notes.
|
|
440
|
+
|
|
318
441
|
Keyboard exclusivity
|
|
319
442
|
--------------------
|
|
320
443
|
|
|
@@ -328,15 +451,19 @@ application which should not be closed, or a game in which it is possible for
|
|
|
328
451
|
a user to accidentally press one of these keys.
|
|
329
452
|
|
|
330
453
|
To enable this mode, call
|
|
331
|
-
:py:meth
|
|
332
|
-
|
|
333
|
-
view while exclusive keyboard is activated.
|
|
454
|
+
:py:meth:`Window.set_exclusive_keyboard <pyglet.window.Window.set_exclusive_keyboard>`
|
|
455
|
+
on the window it should apply to. On Mac OS X, the dock and menu bar
|
|
456
|
+
will slide out of view while exclusive keyboard is activated.
|
|
334
457
|
|
|
335
458
|
The following restrictions apply on Windows:
|
|
336
459
|
|
|
337
|
-
*
|
|
338
|
-
|
|
339
|
-
|
|
460
|
+
* Only Alt+Tab can be disabled
|
|
461
|
+
* Users will still be able to switch applications through:
|
|
462
|
+
|
|
463
|
+
* Ctrl+Escape
|
|
464
|
+
* Alt+Escape
|
|
465
|
+
* the Windows key
|
|
466
|
+
* Ctrl+Alt+Delete
|
|
340
467
|
|
|
341
468
|
The following restrictions apply on Mac OS X:
|
|
342
469
|
|