pyglet 2.0.9__zip → 2.0.10__zip
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {pyglet-2.0.9 → pyglet-2.0.10}/.github/workflows/unittests.yml +1 -5
- {pyglet-2.0.9 → pyglet-2.0.10}/.readthedocs.yml +5 -1
- {pyglet-2.0.9 → pyglet-2.0.10}/PKG-INFO +3 -2
- {pyglet-2.0.9 → pyglet-2.0.10}/README.md +2 -1
- {pyglet-2.0.9 → pyglet-2.0.10}/RELEASE_NOTES +36 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/contrib/qt_sprite_preview.py +774 -586
- {pyglet-2.0.9 → pyglet-2.0.10}/doc/conf.py +6 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/doc/modules/shapes.rst +8 -8
- {pyglet-2.0.9 → pyglet-2.0.10}/doc/modules/window_key.rst +9 -1
- {pyglet-2.0.9 → pyglet-2.0.10}/doc/programming_guide/eventloop.rst +27 -26
- {pyglet-2.0.9 → pyglet-2.0.10}/doc/programming_guide/keyboard.rst +194 -67
- {pyglet-2.0.9 → pyglet-2.0.10}/doc/programming_guide/media.rst +297 -67
- {pyglet-2.0.9 → pyglet-2.0.10}/doc/programming_guide/quickstart.rst +1 -0
- pyglet-2.0.10/examples/clipboard.py +18 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/examples/media/media_info.py +1 -9
- pyglet-2.0.10/examples/media/soundspace/README +38 -0
- pyglet-2.0.10/examples/media/soundspace/reader.py +117 -0
- pyglet-2.0.10/examples/media/soundspace/res/bass.wav +0 -0
- pyglet-2.0.10/examples/media/soundspace/res/drums.wav +0 -0
- pyglet-2.0.10/examples/media/soundspace/res/guitar.wav +0 -0
- pyglet-2.0.10/examples/media/soundspace/res/piano.wav +0 -0
- pyglet-2.0.10/examples/media/soundspace/res/space.txt +24 -0
- pyglet-2.0.10/examples/media/soundspace/soundspace.py +660 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/examples/model/fpscamera.py +50 -38
- pyglet-2.0.10/examples/net/client.py +18 -0
- pyglet-2.0.10/examples/net/server.py +25 -0
- {pyglet-2.0.9/examples/graphics → pyglet-2.0.10/examples}/shapes.py +3 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/examples/window/fixed_resolution.py +37 -34
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/__init__.py +19 -10
- pyglet-2.0.10/pyglet/experimental/README.md +6 -0
- {pyglet-2.0.9 → pyglet-2.0.10/pyglet}/experimental/geoshader_sprite.py +29 -33
- pyglet-2.0.10/pyglet/experimental/net.py +247 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/font/directwrite.py +33 -59
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/font/win32.py +10 -1
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/gl/base.py +195 -46
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/gl/gl_info.py +4 -2
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/gl/lib.py +1 -2
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/gl/win32.py +30 -30
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/graphics/__init__.py +9 -21
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/graphics/shader.py +53 -50
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/graphics/vertexarray.py +8 -9
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/graphics/vertexbuffer.py +50 -74
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/graphics/vertexdomain.py +54 -97
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/gui/widgets.py +28 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/image/__init__.py +19 -5
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/image/buffer.py +19 -16
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/image/codecs/wic.py +1 -1
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/input/controller_db.py +19 -23
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/input/linux/evdev.py +3 -2
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/input/win32/xinput.py +2 -2
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/libs/darwin/cocoapy/cocoalibs.py +1 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/libs/win32/__init__.py +12 -1
- pyglet-2.0.10/pyglet/libs/win32/com.py +397 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/libs/win32/types.py +8 -1
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/media/codecs/wmf.py +16 -22
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/media/devices/base.py +1 -2
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/media/devices/win32.py +10 -10
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/media/drivers/base.py +2 -3
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/media/drivers/directsound/lib_dsound.py +0 -1
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/media/drivers/listener.py +1 -3
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/media/drivers/xaudio2/lib_xaudio2.py +16 -34
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/media/player.py +8 -3
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/model/__init__.py +4 -17
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/shapes.py +154 -125
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/sprite.py +4 -17
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/text/__init__.py +2 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/text/caret.py +2 -1
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/text/layout.py +171 -189
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/util.py +0 -31
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/window/__init__.py +46 -18
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/window/cocoa/__init__.py +28 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/window/key.py +10 -1
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/window/win32/__init__.py +37 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/window/xlib/__init__.py +142 -5
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet.egg-info/PKG-INFO +3 -2
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet.egg-info/SOURCES.txt +66 -2
- {pyglet-2.0.9 → pyglet-2.0.10}/tests/integration/app/test_eventloop.py +1 -2
- {pyglet-2.0.9 → pyglet-2.0.10}/tests/integration/image/test_imagegrid.py +3 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tests/integration/image/test_texture3d.py +3 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tests/integration/media/test_driver.py +15 -12
- pyglet-2.0.10/tests/interactive/screenshots/committed/tests.interactive.image.test_image.test_bmp_loading[rgb_16bpp.bmp].001.png +0 -0
- pyglet-2.0.10/tests/interactive/screenshots/committed/tests.interactive.image.test_image.test_bmp_loading[rgb_1bpp.bmp].001.png +0 -0
- pyglet-2.0.10/tests/interactive/screenshots/committed/tests.interactive.image.test_image.test_bmp_loading[rgb_24bpp.bmp].001.png +0 -0
- pyglet-2.0.10/tests/interactive/screenshots/committed/tests.interactive.image.test_image.test_bmp_loading[rgb_32bpp.bmp].001.png +0 -0
- pyglet-2.0.10/tests/interactive/screenshots/committed/tests.interactive.image.test_image.test_bmp_loading[rgb_4bpp.bmp].001.png +0 -0
- pyglet-2.0.10/tests/interactive/screenshots/committed/tests.interactive.image.test_image.test_bmp_loading[rgb_8bpp.bmp].001.png +0 -0
- pyglet-2.0.10/tests/interactive/screenshots/committed/tests.interactive.image.test_image.test_bmp_loading[rgba_32bpp.bmp].001.png +0 -0
- pyglet-2.0.10/tests/interactive/screenshots/committed/tests.interactive.image.test_image.test_buffer_copy.001.png +0 -0
- pyglet-2.0.10/tests/interactive/screenshots/committed/tests.interactive.image.test_image.test_buffer_saving.001.png +0 -0
- pyglet-2.0.10/tests/interactive/screenshots/committed/tests.interactive.image.test_image.test_checkerboard.001.png +0 -0
- pyglet-2.0.10/tests/interactive/screenshots/committed/tests.interactive.image.test_image.test_dds_loading[rgb_dxt1.dds].001.png +0 -0
- pyglet-2.0.10/tests/interactive/screenshots/committed/tests.interactive.image.test_image.test_dds_loading[rgba_dxt1.dds].001.png +0 -0
- pyglet-2.0.10/tests/interactive/screenshots/committed/tests.interactive.image.test_image.test_dds_loading[rgba_dxt3.dds].001.png +0 -0
- pyglet-2.0.10/tests/interactive/screenshots/committed/tests.interactive.image.test_image.test_dds_loading[rgba_dxt5.dds].001.png +0 -0
- pyglet-2.0.10/tests/interactive/screenshots/committed/tests.interactive.image.test_image.test_depth_buffer_saving.001.png +0 -0
- pyglet-2.0.10/tests/interactive/screenshots/committed/tests.interactive.image.test_image.test_gdkpixbuf2_loading[8bpp.gif].001.png +0 -0
- pyglet-2.0.10/tests/interactive/screenshots/committed/tests.interactive.image.test_image.test_gdkpixbuf2_loading[l.png].001.png +0 -0
- pyglet-2.0.10/tests/interactive/screenshots/committed/tests.interactive.image.test_image.test_gdkpixbuf2_loading[la.png].001.png +0 -0
- pyglet-2.0.10/tests/interactive/screenshots/committed/tests.interactive.image.test_image.test_gdkpixbuf2_loading[rgb.png].001.png +0 -0
- pyglet-2.0.10/tests/interactive/screenshots/committed/tests.interactive.image.test_image.test_gdkpixbuf2_loading[rgba.png].001.png +0 -0
- pyglet-2.0.10/tests/interactive/screenshots/committed/tests.interactive.image.test_image.test_pil_loading[la.png].001.png +0 -0
- pyglet-2.0.10/tests/interactive/screenshots/committed/tests.interactive.image.test_image.test_pil_loading[rgb.png].001.png +0 -0
- pyglet-2.0.10/tests/interactive/screenshots/committed/tests.interactive.image.test_image.test_pil_loading[rgba.png].001.png +0 -0
- pyglet-2.0.10/tests/interactive/screenshots/committed/tests.interactive.image.test_image.test_pil_saving[l.png].001.png +0 -0
- pyglet-2.0.10/tests/interactive/screenshots/committed/tests.interactive.image.test_image.test_pil_saving[la.png].001.png +0 -0
- pyglet-2.0.10/tests/interactive/screenshots/committed/tests.interactive.image.test_image.test_pypng_loading[la.png].001.png +0 -0
- pyglet-2.0.10/tests/interactive/screenshots/committed/tests.interactive.image.test_image.test_pypng_loading[rgb.png].001.png +0 -0
- pyglet-2.0.10/tests/interactive/screenshots/committed/tests.interactive.image.test_image.test_pypng_loading[rgb_8bpp.png].001.png +0 -0
- pyglet-2.0.10/tests/interactive/screenshots/committed/tests.interactive.image.test_image.test_pypng_loading[rgb_8bpp_trans.png].001.png +0 -0
- pyglet-2.0.10/tests/interactive/screenshots/committed/tests.interactive.image.test_image.test_pypng_loading[rgba.png].001.png +0 -0
- pyglet-2.0.10/tests/interactive/screenshots/committed/tests.interactive.image.test_image.test_pypng_saving[l.png].001.png +0 -0
- pyglet-2.0.10/tests/interactive/screenshots/committed/tests.interactive.image.test_image.test_pypng_saving[la.png].001.png +0 -0
- pyglet-2.0.10/tests/interactive/screenshots/committed/tests.interactive.image.test_image.test_pypng_saving[rgb.png].001.png +0 -0
- pyglet-2.0.10/tests/interactive/screenshots/committed/tests.interactive.image.test_image.test_pypng_saving[rgba.png].001.png +0 -0
- pyglet-2.0.10/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_bmp_loading[rgb_16bpp.bmp].001.png +0 -0
- pyglet-2.0.10/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_bmp_loading[rgb_1bpp.bmp].001.png +0 -0
- pyglet-2.0.10/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_bmp_loading[rgb_24bpp.bmp].001.png +0 -0
- pyglet-2.0.10/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_bmp_loading[rgb_32bpp.bmp].001.png +0 -0
- pyglet-2.0.10/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_bmp_loading[rgb_4bpp.bmp].001.png +0 -0
- pyglet-2.0.10/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_bmp_loading[rgb_8bpp.bmp].001.png +0 -0
- pyglet-2.0.10/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_bmp_loading[rgba_32bpp.bmp].001.png +0 -0
- pyglet-2.0.10/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_buffer_copy.001.png +0 -0
- pyglet-2.0.10/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_buffer_saving.001.png +0 -0
- pyglet-2.0.10/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_checkerboard.001.png +0 -0
- pyglet-2.0.10/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_dds_loading[rgb_dxt1.dds].001.png +0 -0
- pyglet-2.0.10/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_dds_loading[rgba_dxt1.dds].001.png +0 -0
- pyglet-2.0.10/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_dds_loading[rgba_dxt3.dds].001.png +0 -0
- pyglet-2.0.10/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_dds_loading[rgba_dxt5.dds].001.png +0 -0
- pyglet-2.0.10/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_depth_buffer_saving.001.png +0 -0
- pyglet-2.0.10/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_gdkpixbuf2_loading[8bpp.gif].001.png +0 -0
- pyglet-2.0.10/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_gdkpixbuf2_loading[l.png].001.png +0 -0
- pyglet-2.0.10/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_gdkpixbuf2_loading[la.png].001.png +0 -0
- pyglet-2.0.10/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_gdkpixbuf2_loading[rgb.png].001.png +0 -0
- pyglet-2.0.10/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_gdkpixbuf2_loading[rgba.png].001.png +0 -0
- pyglet-2.0.10/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_pil_loading[la.png].001.png +0 -0
- pyglet-2.0.10/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_pil_loading[rgb.png].001.png +0 -0
- pyglet-2.0.10/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_pil_loading[rgba.png].001.png +0 -0
- pyglet-2.0.10/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_pil_saving[l.png].001.png +0 -0
- pyglet-2.0.10/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_pil_saving[la.png].001.png +0 -0
- pyglet-2.0.10/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_pil_saving[rgb.png].001.png +0 -0
- pyglet-2.0.10/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_pil_saving[rgba.png].001.png +0 -0
- pyglet-2.0.10/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_pypng_loading[la.png].001.png +0 -0
- pyglet-2.0.10/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_pypng_loading[rgb.png].001.png +0 -0
- pyglet-2.0.10/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_pypng_loading[rgb_8bpp.png].001.png +0 -0
- pyglet-2.0.10/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_pypng_loading[rgb_8bpp_trans.png].001.png +0 -0
- pyglet-2.0.10/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_pypng_loading[rgba.png].001.png +0 -0
- pyglet-2.0.10/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_pypng_saving[l.png].001.png +0 -0
- pyglet-2.0.10/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_pypng_saving[la.png].001.png +0 -0
- pyglet-2.0.10/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_pypng_saving[rgb.png].001.png +0 -0
- pyglet-2.0.10/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_pypng_saving[rgba.png].001.png +0 -0
- pyglet-2.0.10/tests/interactive/shapes/test_shapes.py +179 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tests/interactive/text/test_inline_elements.py +20 -17
- {pyglet-2.0.9 → pyglet-2.0.10}/tests/interactive/text/test_inline_elements_style_change.py +15 -14
- {pyglet-2.0.9 → pyglet-2.0.10}/tests/interactive/text/test_multiline_wrap.py +18 -18
- {pyglet-2.0.9 → pyglet-2.0.10}/tests/interactive/text/test_plain.py +5 -5
- {pyglet-2.0.9 → pyglet-2.0.10}/tests/interactive/text/test_style.py +5 -5
- {pyglet-2.0.9 → pyglet-2.0.10}/tests/unit/conftest.py +5 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tests/unit/shapes/test_shapes.py +24 -2
- {pyglet-2.0.9 → pyglet-2.0.10}/tests/unit/test_events.py +31 -21
- {pyglet-2.0.9 → pyglet-2.0.10}/tools/gencontrollerdb.py +3 -3
- pyglet-2.0.9/pyglet/libs/win32/com.py +0 -340
- pyglet-2.0.9/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_bmp_loading[rgb_24bpp.bmp].001.png +0 -0
- pyglet-2.0.9/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_bmp_loading[rgb_32bpp.bmp].001.png +0 -0
- pyglet-2.0.9/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_bmp_loading[rgb_4bpp.bmp].001.png +0 -0
- pyglet-2.0.9/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_bmp_loading[rgb_8bpp.bmp].001.png +0 -0
- pyglet-2.0.9/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_bmp_loading[rgba_32bpp.bmp].001.png +0 -0
- pyglet-2.0.9/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_checkerboard.001.png +0 -0
- pyglet-2.0.9/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_dds_loading[rgb_dxt1.dds].001.png +0 -0
- pyglet-2.0.9/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_dds_loading[rgba_dxt1.dds].001.png +0 -0
- pyglet-2.0.9/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_dds_loading[rgba_dxt3.dds].001.png +0 -0
- pyglet-2.0.9/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_dds_loading[rgba_dxt5.dds].001.png +0 -0
- pyglet-2.0.9/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_gdkpixbuf2_loading[8bpp.gif].001.png +0 -0
- pyglet-2.0.9/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_gdkpixbuf2_loading[l.png].001.png +0 -0
- pyglet-2.0.9/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_gdkpixbuf2_loading[la.png].001.png +0 -0
- pyglet-2.0.9/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_gdkpixbuf2_loading[rgb.png].001.png +0 -0
- pyglet-2.0.9/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_gdkpixbuf2_loading[rgba.png].001.png +0 -0
- pyglet-2.0.9/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_pil_loading[la.png].001.png +0 -0
- pyglet-2.0.9/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_pil_loading[rgb.png].001.png +0 -0
- pyglet-2.0.9/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_pil_loading[rgba.png].001.png +0 -0
- pyglet-2.0.9/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_pypng_loading[la.png].001.png +0 -0
- pyglet-2.0.9/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_pypng_loading[rgba.png].001.png +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/.coveragerc +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/.github/ISSUE_TEMPLATE/questions--or-other.md +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/.github/workflows/codeql.yml +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/.gitignore +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/LICENSE +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/MANIFEST.in +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/contrib/aseprite_codec/README +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/contrib/aseprite_codec/asedemo.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/contrib/aseprite_codec/aseprite.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/contrib/aseprite_codec/running.ase +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/contrib/logo3d/logo3d.jpg +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/contrib/logo3d/logo3d.obj.zip +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/contrib/logo3d/logo3d.wings +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/contrib/scenemanager.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/contrib/toys/follow_mouse.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/doc/Makefile +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/doc/README.md +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/doc/_static/favicon.ico +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/doc/_static/logo.png +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/doc/_static/logo5.svg +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/doc/_static/relatedlogo.png +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/doc/external_resources.rst +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/doc/index.rst +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/doc/internal/contributing.rst +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/doc/internal/dist.rst +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/doc/internal/doc.rst +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/doc/internal/generated.rst +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/doc/internal/gl.rst +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/doc/internal/media_logging_manual.rst +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/doc/internal/media_manual.rst +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/doc/internal/testing.rst +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/doc/internal/virtualenv.rst +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/doc/internal/wraptypes-class.svg +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/doc/internal/wraptypes.rst +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/doc/make.bat +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/doc/modules/app.rst +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/doc/modules/canvas.rst +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/doc/modules/clock.rst +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/doc/modules/event.rst +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/doc/modules/font.rst +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/doc/modules/gl.rst +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/doc/modules/graphics/allocation.rst +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/doc/modules/graphics/index.rst +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/doc/modules/graphics/shader.rst +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/doc/modules/graphics/vertexbuffer.rst +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/doc/modules/graphics/vertexdomain.rst +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/doc/modules/gui.rst +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/doc/modules/image/animation.rst +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/doc/modules/image/atlas.rst +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/doc/modules/image/index.rst +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/doc/modules/info.rst +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/doc/modules/input.rst +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/doc/modules/math.rst +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/doc/modules/media.rst +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/doc/modules/media_synthesis.rst +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/doc/modules/pyglet.rst +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/doc/modules/resource.rst +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/doc/modules/sprite.rst +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/doc/modules/text/caret.rst +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/doc/modules/text/document.rst +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/doc/modules/text/index.rst +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/doc/modules/text/layout.rst +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/doc/modules/window.rst +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/doc/modules/window_mouse.rst +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/doc/programming_guide/context.rst +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/doc/programming_guide/debug.rst +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/doc/programming_guide/events.rst +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/doc/programming_guide/examplegame.rst +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/doc/programming_guide/gl.rst +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/doc/programming_guide/graphics.rst +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/doc/programming_guide/image.rst +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/doc/programming_guide/img/abstract_image.png +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/doc/programming_guide/img/abstract_image.svg +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/doc/programming_guide/img/buffer_image.png +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/doc/programming_guide/img/buffer_image.svg +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/doc/programming_guide/img/context_flow.png +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/doc/programming_guide/img/context_flow.svg +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/doc/programming_guide/img/cursor_mac_crosshair.png +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/doc/programming_guide/img/cursor_mac_default.png +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/doc/programming_guide/img/cursor_mac_hand.png +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/doc/programming_guide/img/cursor_mac_no.png +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/doc/programming_guide/img/cursor_mac_size_down.png +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/doc/programming_guide/img/cursor_mac_size_left.png +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/doc/programming_guide/img/cursor_mac_size_left_right.png +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/doc/programming_guide/img/cursor_mac_size_right.png +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/doc/programming_guide/img/cursor_mac_size_up.png +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/doc/programming_guide/img/cursor_mac_size_up_down.png +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/doc/programming_guide/img/cursor_mac_text.png +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/doc/programming_guide/img/cursor_mac_wait.png +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/doc/programming_guide/img/cursor_win_crosshair.png +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/doc/programming_guide/img/cursor_win_default.png +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/doc/programming_guide/img/cursor_win_hand.png +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/doc/programming_guide/img/cursor_win_help.png +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/doc/programming_guide/img/cursor_win_no.png +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/doc/programming_guide/img/cursor_win_size.png +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/doc/programming_guide/img/cursor_win_size_left_right.png +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/doc/programming_guide/img/cursor_win_size_nesw.png +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/doc/programming_guide/img/cursor_win_size_nwse.png +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/doc/programming_guide/img/cursor_win_size_up_down.png +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/doc/programming_guide/img/cursor_win_text.png +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/doc/programming_guide/img/cursor_win_wait.png +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/doc/programming_guide/img/cursor_win_wait_arrow.png +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/doc/programming_guide/img/explosion.png +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/doc/programming_guide/img/font_metrics.png +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/doc/programming_guide/img/font_metrics.svg +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/doc/programming_guide/img/image_classes.png +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/doc/programming_guide/img/image_classes.svg +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/doc/programming_guide/img/image_grid.png +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/doc/programming_guide/img/image_grid.svg +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/doc/programming_guide/img/image_sequence.png +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/doc/programming_guide/img/image_sequence.svg +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/doc/programming_guide/img/mouse_coordinates.png +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/doc/programming_guide/img/mouse_coordinates.svg +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/doc/programming_guide/img/screens.png +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/doc/programming_guide/img/screens.svg +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/doc/programming_guide/img/text_classes.png +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/doc/programming_guide/img/text_classes.svg +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/doc/programming_guide/img/window_location.png +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/doc/programming_guide/img/window_location.svg +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/doc/programming_guide/img/window_osx_borderless.png +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/doc/programming_guide/img/window_osx_default.png +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/doc/programming_guide/img/window_osx_dialog.png +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/doc/programming_guide/img/window_osx_tool.png +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/doc/programming_guide/img/window_xp_default.png +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/doc/programming_guide/img/window_xp_dialog.png +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/doc/programming_guide/img/window_xp_overlay.png +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/doc/programming_guide/img/window_xp_tool.png +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/doc/programming_guide/img/window_xp_transparent.png +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/doc/programming_guide/input.rst +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/doc/programming_guide/installation.rst +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/doc/programming_guide/math.rst +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/doc/programming_guide/migration.rst +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/doc/programming_guide/mouse.rst +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/doc/programming_guide/options.rst +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/doc/programming_guide/resources.rst +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/doc/programming_guide/shapes.rst +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/doc/programming_guide/text.rst +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/doc/programming_guide/time.rst +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/doc/programming_guide/windowing.rst +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/doc/requirements.txt +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/examples/events/events_key_state_handler.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/examples/events/register_event_type.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/examples/events/window_events.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/examples/events/window_platform_event.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/examples/file_dialog.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/examples/game/resources/asteroid.png +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/examples/game/resources/bullet.png +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/examples/game/resources/bullet.wav +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/examples/game/resources/engine_flame.png +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/examples/game/resources/player.png +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/examples/game/version1/asteroid.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/examples/game/version1/game/__init__.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/examples/game/version1/game/load.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/examples/game/version1/game/resources.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/examples/game/version2/asteroid.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/examples/game/version2/game/__init__.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/examples/game/version2/game/load.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/examples/game/version2/game/physicalobject.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/examples/game/version2/game/player.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/examples/game/version2/game/resources.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/examples/game/version3/asteroid.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/examples/game/version3/game/__init__.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/examples/game/version3/game/load.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/examples/game/version3/game/physicalobject.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/examples/game/version3/game/player.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/examples/game/version3/game/resources.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/examples/game/version3/game/util.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/examples/game/version4/asteroid.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/examples/game/version4/game/__init__.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/examples/game/version4/game/asteroid.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/examples/game/version4/game/bullet.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/examples/game/version4/game/load.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/examples/game/version4/game/physicalobject.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/examples/game/version4/game/player.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/examples/game/version4/game/resources.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/examples/game/version4/game/util.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/examples/game/version5/asteroid.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/examples/game/version5/game/__init__.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/examples/game/version5/game/asteroid.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/examples/game/version5/game/bullet.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/examples/game/version5/game/load.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/examples/game/version5/game/physicalobject.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/examples/game/version5/game/player.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/examples/game/version5/game/resources.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/examples/game/version5/game/util.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/examples/graphics/image_convert.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/examples/graphics/image_display.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/examples/gui/bar.png +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/examples/gui/button_down.png +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/examples/gui/button_hover.png +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/examples/gui/button_up.png +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/examples/gui/knob.png +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/examples/gui/widgets.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/examples/hello_world.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/examples/input/apple_remote.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/examples/input/controller.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/examples/input/input.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/examples/input/joystick.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/examples/input/tablet.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/examples/media/media_player.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/examples/media/noisy/README +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/examples/media/noisy/ball.png +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/examples/media/noisy/ball.wav +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/examples/media/noisy/noisy.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/examples/media/synthesizer.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/examples/media/video.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/examples/model/box.mtl +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/examples/model/box.obj +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/examples/model/logo3d.mtl +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/examples/model/logo3d.obj +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/examples/model/model.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/examples/model/pyglet.png +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/examples/opengl/compute_shader.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/examples/opengl/egl_context.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/examples/opengl/opengl.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/examples/opengl/opengl_context.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/examples/opengl/opengl_core.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/examples/opengl/opengl_scissor.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/examples/opengl/opengl_shader.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/examples/opengl/pyglet.png +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/examples/programming_guide/animation.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/examples/programming_guide/dinosaur.gif +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/examples/programming_guide/events.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/examples/programming_guide/hello_world.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/examples/programming_guide/image_viewer.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/examples/programming_guide/kitten.jpg +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/examples/programming_guide/window_subclass.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/examples/resources/kitten.jpg +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/examples/resources/pyglet.png +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/examples/sprite/depth_sprite.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/examples/sprite/display_sprite.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/examples/sprite/multi_texture_sprite.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/examples/sprite/sprite_batching.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/examples/text/advanced_font.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/examples/text/font_comparison.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/examples/text/html_label.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/examples/text/pyglet.png +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/examples/text/text_input.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/examples/timer.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/examples/window/camera.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/examples/window/camera_group.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/examples/window/multiple_windows.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/examples/window/overlay_window.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/examples/window/transparent_window.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/experimental/dist_field/README +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/experimental/dist_field/genfield.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/experimental/dist_field/py.df.png +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/experimental/dist_field/py.png +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/experimental/dist_field/renderfield.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/experimental/flaccodec.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/experimental/hello_world.svg +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/experimental/spritebenchmark.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/experimental/svg_test.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/experimental/wayland/gbm_egl_context.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/experimental/win32priority.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/make.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/app/__init__.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/app/base.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/app/cocoa.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/app/win32.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/app/xlib.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/canvas/__init__.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/canvas/base.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/canvas/cocoa.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/canvas/headless.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/canvas/win32.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/canvas/xlib.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/canvas/xlib_vidmoderestore.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/clock.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/customtypes.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/event.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/extlibs/__init__.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/extlibs/png.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/font/__init__.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/font/base.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/font/fontconfig.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/font/freetype.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/font/freetype_lib.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/font/quartz.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/font/ttf.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/font/user.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/font/win32query.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/gl/__init__.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/gl/agl.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/gl/cocoa.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/gl/gl.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/gl/gl_compat.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/gl/glx.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/gl/glx_info.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/gl/glxext_arb.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/gl/glxext_mesa.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/gl/glxext_nv.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/gl/headless.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/gl/lib_agl.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/gl/lib_glx.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/gl/lib_wgl.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/gl/wgl.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/gl/wgl_info.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/gl/wglext_arb.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/gl/wglext_nv.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/gl/xlib.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/graphics/allocation.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/gui/__init__.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/gui/frame.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/image/animation.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/image/atlas.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/image/codecs/__init__.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/image/codecs/bmp.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/image/codecs/dds.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/image/codecs/gdiplus.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/image/codecs/gdkpixbuf2.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/image/codecs/gif.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/image/codecs/pil.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/image/codecs/png.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/image/codecs/quartz.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/image/codecs/s3tc.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/info.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/input/__init__.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/input/base.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/input/controller.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/input/linux/__init__.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/input/linux/evdev_constants.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/input/linux/x11_xinput.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/input/linux/x11_xinput_tablet.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/input/macos/__init__.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/input/macos/darwin_hid.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/input/win32/__init__.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/input/win32/directinput.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/input/win32/wintab.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/lib.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/libs/__init__.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/libs/darwin/__init__.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/libs/darwin/cocoapy/__init__.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/libs/darwin/cocoapy/cocoatypes.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/libs/darwin/cocoapy/runtime.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/libs/darwin/coreaudio.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/libs/darwin/quartzkey.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/libs/egl/__init__.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/libs/egl/egl.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/libs/egl/eglext.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/libs/egl/lib.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/libs/wayland/__init__.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/libs/wayland/gbm.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/libs/wayland/xkbcommon.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/libs/win32/constants.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/libs/win32/context_managers.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/libs/win32/dinput.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/libs/win32/libwintab.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/libs/win32/winkey.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/libs/x11/__init__.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/libs/x11/cursorfont.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/libs/x11/xf86vmode.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/libs/x11/xinerama.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/libs/x11/xinput.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/libs/x11/xlib.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/libs/x11/xsync.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/math.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/media/__init__.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/media/buffered_logger.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/media/codecs/__init__.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/media/codecs/base.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/media/codecs/coreaudio.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/media/codecs/ffmpeg.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/media/codecs/ffmpeg_lib/__init__.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/media/codecs/ffmpeg_lib/compat.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/media/codecs/ffmpeg_lib/libavcodec.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/media/codecs/ffmpeg_lib/libavformat.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/media/codecs/ffmpeg_lib/libavutil.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/media/codecs/ffmpeg_lib/libswresample.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/media/codecs/ffmpeg_lib/libswscale.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/media/codecs/gstreamer.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/media/codecs/pyogg.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/media/codecs/wave.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/media/devices/__init__.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/media/drivers/__init__.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/media/drivers/directsound/__init__.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/media/drivers/directsound/adaptation.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/media/drivers/directsound/exceptions.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/media/drivers/directsound/interface.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/media/drivers/openal/__init__.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/media/drivers/openal/adaptation.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/media/drivers/openal/interface.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/media/drivers/openal/lib_alc.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/media/drivers/openal/lib_openal.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/media/drivers/pulse/__init__.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/media/drivers/pulse/adaptation.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/media/drivers/pulse/interface.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/media/drivers/pulse/lib_pulseaudio.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/media/drivers/silent/__init__.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/media/drivers/silent/adaptation.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/media/drivers/xaudio2/__init__.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/media/drivers/xaudio2/adaptation.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/media/drivers/xaudio2/interface.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/media/exceptions.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/media/instrumentation.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/media/mediathreads.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/media/synthesis.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/model/codecs/__init__.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/model/codecs/gltf.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/model/codecs/obj.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/resource.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/text/document.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/text/formats/__init__.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/text/formats/attributed.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/text/formats/html.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/text/formats/plaintext.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/text/formats/structured.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/text/runlist.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/window/cocoa/pyglet_delegate.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/window/cocoa/pyglet_textview.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/window/cocoa/pyglet_view.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/window/cocoa/pyglet_window.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/window/cocoa/systemcursor.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/window/event.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/window/headless/__init__.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet/window/mouse.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet.egg-info/dependency_links.txt +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet.egg-info/top_level.txt +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyglet.egg-info/zip-safe +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pyproject.toml +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/pytest.ini +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/setup.cfg +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/setup.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tests/__init__.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tests/annotations.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tests/base/__init__.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tests/base/data.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tests/base/event_loop.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tests/base/interactive.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tests/base/performance.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tests/base/test_interactive_test_base.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tests/conftest.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tests/data/fonts/README +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tests/data/fonts/action_man.ttf +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tests/data/fonts/action_man_bold.ttf +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tests/data/fonts/action_man_bold_italic.ttf +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tests/data/fonts/action_man_italic.ttf +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tests/data/fonts/courR12-ISO8859-1.pcf +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tests/data/images/8bpp.gif +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tests/data/images/cursor.png +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tests/data/images/dinosaur.gif +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tests/data/images/gdk_close.png +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tests/data/images/grey_background.png +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tests/data/images/icon1.png +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tests/data/images/icon_size1.png +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tests/data/images/icon_size2.png +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tests/data/images/icon_size3.png +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tests/data/images/icon_size4.png +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tests/data/images/icon_size5.png +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tests/data/images/l.png +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tests/data/images/la.png +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tests/data/images/multitexture.png +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tests/data/images/rgb.png +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tests/data/images/rgb_16bpp.bmp +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tests/data/images/rgb_1bpp.bmp +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tests/data/images/rgb_24bpp.bmp +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tests/data/images/rgb_32bpp.bmp +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tests/data/images/rgb_4bpp.bmp +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tests/data/images/rgb_8bpp.bmp +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tests/data/images/rgb_8bpp.png +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tests/data/images/rgb_8bpp_trans.png +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tests/data/images/rgb_dxt1.dds +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tests/data/images/rgba.png +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tests/data/images/rgba_32bpp.bmp +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tests/data/images/rgba_dxt1.dds +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tests/data/images/rgba_dxt3.dds +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tests/data/images/rgba_dxt5.dds +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tests/data/images/tests.interactive.test_interactive_test_base._Test.test_1.001.png +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tests/data/media/README +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tests/data/media/alert.wav +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tests/data/media/login.wav +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tests/data/media/logout.wav +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tests/data/media/receive.wav +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tests/data/media/send.wav +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tests/data/media/synthesis_sawtooth_16_11025_1ch.wav +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tests/data/media/synthesis_sawtooth_16_44800_1ch.wav +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tests/data/media/synthesis_silence_16_11025_1ch.wav +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tests/data/media/synthesis_silence_16_44800_1ch.wav +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tests/data/media/synthesis_simplefm_16_11025_1ch.wav +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tests/data/media/synthesis_simplefm_16_44800_1ch.wav +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tests/data/media/synthesis_sine_16_11025_1ch.wav +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tests/data/media/synthesis_sine_16_44800_1ch.wav +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tests/data/media/synthesis_square_16_11025_1ch.wav +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tests/data/media/synthesis_square_16_44800_1ch.wav +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tests/data/media/synthesis_triangle_16_11025_1ch.wav +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tests/data/media/synthesis_triangle_16_44800_1ch.wav +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tests/data/models/logo3d.mtl +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tests/data/models/logo3d.obj +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tests/integration/__init__.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tests/integration/app/__init__.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tests/integration/font/test_fontconfig.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tests/integration/font/test_freetype_face.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tests/integration/graphics/__init__.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tests/integration/graphics/test_allocation.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tests/integration/image/__init__.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tests/integration/image/test_gdkpixbuf2.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tests/integration/media/__init__.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tests/integration/media/mock_player.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tests/integration/media/test_directsound.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tests/integration/media/test_openal.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tests/integration/media/test_player.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tests/integration/media/test_pulse.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tests/integration/model/__init__.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tests/integration/model/test_loading.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tests/integration/platform/__init__.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tests/integration/platform/test_linux_fontconfig.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tests/integration/platform/test_win_context_managers.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tests/integration/platform/test_win_multicore_clock.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tests/integration/resource/__init__.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tests/integration/resource/dir1/dir1/f3.txt +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tests/integration/resource/dir1/f2.txt +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tests/integration/resource/dir1/res.zip +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tests/integration/resource/dir2/f6.txt +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tests/integration/resource/f1.txt +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tests/integration/resource/rgbm.png +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tests/integration/resource/test_resource_image_loading.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tests/integration/resource/test_resource_loading.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tests/integration/text/__init__.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tests/integration/text/test_empty_document.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tests/integration/window/__init__.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tests/integration/window/test_context_share.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tests/integration/window/test_event_sequence.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tests/integration/window/test_window_caption.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tests/interactive/__init__.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tests/interactive/conftest.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tests/interactive/graphics/__init__.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tests/interactive/graphics/test_multitexture.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tests/interactive/image/__init__.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tests/interactive/image/test_image.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tests/interactive/media/__init__.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tests/interactive/media/test_player.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tests/interactive/screenshots/committed/README +0 -0
- /pyglet-2.0.9/tests/interactive/screenshots/session/tests.interactive.graphics.test_multitexture.test_multitexture.001.png → /pyglet-2.0.10/tests/interactive/screenshots/committed/tests.interactive.image.test_image.test_pil_saving[rgb.png].001.png +0 -0
- /pyglet-2.0.9/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_bmp_loading[rgb_16bpp.bmp].001.png → /pyglet-2.0.10/tests/interactive/screenshots/committed/tests.interactive.image.test_image.test_pil_saving[rgba.png].001.png +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tests/interactive/screenshots/session/README +0 -0
- /pyglet-2.0.9/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_bmp_loading[rgb_1bpp.bmp].001.png → /pyglet-2.0.10/tests/interactive/screenshots/session/tests.interactive.graphics.test_multitexture.test_multitexture.001.png +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_pil_loading[l.png].001.png +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_pypng_loading[l.png].001.png +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tests/interactive/text/__init__.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tests/interactive/text/test_caret_color.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tests/interactive/text/test_content_valign.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tests/interactive/text/test_html.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tests/interactive/window/__init__.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tests/interactive/window/test_window_events.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tests/interactive/window/test_window_fullscreen.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tests/interactive/window/test_window_modes.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tests/interactive/window/test_window_multisample.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tests/interactive/window/test_window_open.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tests/interactive/window/test_window_settings.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tests/interactive/window/test_window_styles.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tests/interactive/window/window_util.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tests/interactive/windowed_test_base.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tests/requirements.txt +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tests/unit/__init__.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tests/unit/media/__init__.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tests/unit/media/test_listener.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tests/unit/media/test_player.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tests/unit/media/test_sources.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tests/unit/media/test_synthesis.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tests/unit/shapes/__init__.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tests/unit/shapes/conftest.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tests/unit/shapes/test_bordered_rectangle.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tests/unit/test_atlas.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tests/unit/test_clock.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tests/unit/test_clock_freq.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tests/unit/test_font.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tests/unit/test_input.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tests/unit/test_math.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tests/unit/test_resource_path.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tests/unit/test_sprite.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tests/unit/test_text.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tests/unit/text/__init__.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tests/unit/text/test_caret.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tests/unit/text/test_layout.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tools/al_info.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tools/ffmpeg/bokeh_timeline.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tools/ffmpeg/compare.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tools/ffmpeg/configure.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tools/ffmpeg/extractors.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tools/ffmpeg/fs.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tools/ffmpeg/mp.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tools/ffmpeg/mpexceptions.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tools/ffmpeg/playmany.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tools/ffmpeg/readme_ffmpeg_debbuging_branch.txt +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tools/ffmpeg/readme_run_tests.txt +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tools/ffmpeg/report.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tools/ffmpeg/reports.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tools/ffmpeg/retry_crashed.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tools/ffmpeg/run_test_suite.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tools/ffmpeg/summarize.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tools/ffmpeg/test_instrumentation.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tools/ffmpeg/timeline.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tools/gendist.sh +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tools/gengl.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tools/gengl_old.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tools/genwrappers.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tools/gl.template +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tools/gl.xml +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tools/gl_info.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tools/inspect_font.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tools/requirements.txt +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tools/wgl.h +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tools/wraptypes/__init__.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tools/wraptypes/cparser.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tools/wraptypes/ctypesparser.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tools/wraptypes/lex.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tools/wraptypes/preprocessor.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tools/wraptypes/wrap.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/tools/wraptypes/yacc.py +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/website/LICENSE.txt +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/website/README.rst +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/website/assets/favicon.ico +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/website/assets/static/css/example-custom-styles.css +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/website/assets/static/images/pyglet.png +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/website/content/404.html/contents.lr +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/website/content/404.html/ngc-5793.jpg +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/website/content/authors/benjamin/contents.lr +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/website/content/authors/benjamin/pyglet.png +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/website/content/authors/contents.lr +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/website/content/blog/contents.lr +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/website/content/blog/welcome-blog/contents.lr +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/website/content/contents.lr +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/website/content/eclipse.jpg +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/website/pyglet.lektorproject +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/website/themes/lektor-icon/AUTHORS.txt +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/website/themes/lektor-icon/CHANGELOG.md +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/website/themes/lektor-icon/CONTRIBUTING.md +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/website/themes/lektor-icon/LICENSE.txt +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/website/themes/lektor-icon/NOTICE.txt +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/website/themes/lektor-icon/README.md +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/website/themes/lektor-icon/assets/static/css/bootstrap.css +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/website/themes/lektor-icon/assets/static/css/icomoon.css +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/website/themes/lektor-icon/assets/static/css/magnific-popup.css +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/website/themes/lektor-icon/assets/static/css/style.css +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/website/themes/lektor-icon/assets/static/fonts/bootstrap/glyphicons-halflings-regular.ttf +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/website/themes/lektor-icon/assets/static/fonts/bootstrap/glyphicons-halflings-regular.woff +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/website/themes/lektor-icon/assets/static/fonts/bootstrap/glyphicons-halflings-regular.woff2 +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/website/themes/lektor-icon/assets/static/fonts/icomoon/icomoon.ttf +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/website/themes/lektor-icon/assets/static/fonts/icomoon/icomoon.woff +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/website/themes/lektor-icon/assets/static/images/Preloader_2.gif +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/website/themes/lektor-icon/assets/static/images/placeholder_person.png +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/website/themes/lektor-icon/assets/static/js/jquery-3.3.1.min.js +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/website/themes/lektor-icon/assets/static/js/jquery.easing.min.js +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/website/themes/lektor-icon/assets/static/js/jquery.magnific-popup.min.js +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/website/themes/lektor-icon/assets/static/js/jquery.stellar.js +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/website/themes/lektor-icon/assets/static/js/jquery.stellar.min.js +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/website/themes/lektor-icon/assets/static/js/jquery.waypoints.min.js +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/website/themes/lektor-icon/assets/static/js/magnific-popup-options.js +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/website/themes/lektor-icon/assets/static/js/main-singlelayout.js +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/website/themes/lektor-icon/assets/static/js/main.js +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/website/themes/lektor-icon/flowblocks/content.ini +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/website/themes/lektor-icon/flowblocks/gallery.ini +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/website/themes/lektor-icon/flowblocks/gallery_item.ini +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/website/themes/lektor-icon/flowblocks/member.ini +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/website/themes/lektor-icon/flowblocks/mission.ini +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/website/themes/lektor-icon/flowblocks/mission_tab.ini +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/website/themes/lektor-icon/flowblocks/service.ini +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/website/themes/lektor-icon/flowblocks/services.ini +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/website/themes/lektor-icon/flowblocks/team.ini +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/website/themes/lektor-icon/images/blog-index.png +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/website/themes/lektor-icon/images/full-blog.png +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/website/themes/lektor-icon/images/full-page.png +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/website/themes/lektor-icon/images/gallery-404.png +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/website/themes/lektor-icon/images/gallery-singlepage.png +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/website/themes/lektor-icon/images/mainpage-screenshots.png +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/website/themes/lektor-icon/images/responsive-layout.png +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/website/themes/lektor-icon/models/404.ini +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/website/themes/lektor-icon/models/author.ini +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/website/themes/lektor-icon/models/authors.ini +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/website/themes/lektor-icon/models/blog-post.ini +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/website/themes/lektor-icon/models/blog.ini +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/website/themes/lektor-icon/models/page.ini +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/website/themes/lektor-icon/models/single-layout.ini +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/website/themes/lektor-icon/templates/404.html +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/website/themes/lektor-icon/templates/author.html +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/website/themes/lektor-icon/templates/authors.html +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/website/themes/lektor-icon/templates/blocks/content.html +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/website/themes/lektor-icon/templates/blocks/gallery.html +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/website/themes/lektor-icon/templates/blocks/mission.html +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/website/themes/lektor-icon/templates/blocks/services.html +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/website/themes/lektor-icon/templates/blocks/team.html +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/website/themes/lektor-icon/templates/blog-layout.html +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/website/themes/lektor-icon/templates/blog-post.html +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/website/themes/lektor-icon/templates/blog.html +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/website/themes/lektor-icon/templates/layout.html +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/website/themes/lektor-icon/templates/macros/blog.html +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/website/themes/lektor-icon/templates/macros/pagination.html +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/website/themes/lektor-icon/templates/none.html +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/website/themes/lektor-icon/templates/page.html +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/website/themes/lektor-icon/templates/single-layout.html +0 -0
- {pyglet-2.0.9 → pyglet-2.0.10}/website/themes/lektor-icon/theme.ini +0 -0
|
@@ -0,0 +1,247 @@
|
|
|
1
|
+
"""Experimental networking
|
|
2
|
+
|
|
3
|
+
This module contains experiments in making user-friendly Server and Client
|
|
4
|
+
classes that integrate with pyglet's event system. These are very basic,
|
|
5
|
+
socket server/client examples, and are not ready to be used in production.
|
|
6
|
+
They are included here to solicit feedback, and possibly spark further
|
|
7
|
+
development. Basic Server usage::
|
|
8
|
+
|
|
9
|
+
server = net.Server(address='0.0.0.0', port=1234)
|
|
10
|
+
active_connections = weakref.WeakSet()
|
|
11
|
+
|
|
12
|
+
def pong(connection, message):
|
|
13
|
+
print(f"Received '{message}' from '{connection}'")
|
|
14
|
+
connection.send(b'pong')
|
|
15
|
+
|
|
16
|
+
@server.event
|
|
17
|
+
def on_connection(connection):
|
|
18
|
+
print(f"New client connected: {connection}")
|
|
19
|
+
connection.set_handler('on_receive', pong)
|
|
20
|
+
active_connections.add(connection)
|
|
21
|
+
|
|
22
|
+
@server.event
|
|
23
|
+
def on_disconnect(connection):
|
|
24
|
+
print(f"Client disconnected: {connection}")
|
|
25
|
+
active_connections.discard(connection)
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
Basic Client example::
|
|
29
|
+
|
|
30
|
+
client = net.Client(address='localhost', port=1234)
|
|
31
|
+
|
|
32
|
+
@client.event
|
|
33
|
+
def on_receive(client, message):
|
|
34
|
+
print(f"Received: {message}")
|
|
35
|
+
|
|
36
|
+
@client.event
|
|
37
|
+
def on_disconnect(client):
|
|
38
|
+
print(f"Disconnected: {client}")
|
|
39
|
+
|
|
40
|
+
client.send(b'ping')
|
|
41
|
+
|
|
42
|
+
"""
|
|
43
|
+
|
|
44
|
+
|
|
45
|
+
import queue as _queue
|
|
46
|
+
import struct as _struct
|
|
47
|
+
import socket as _socket
|
|
48
|
+
import asyncio as _asyncio
|
|
49
|
+
import threading as _threading
|
|
50
|
+
|
|
51
|
+
from pyglet.event import EventDispatcher as _EventDispatcher
|
|
52
|
+
|
|
53
|
+
from pyglet.util import debug_print
|
|
54
|
+
|
|
55
|
+
_debug_net = debug_print(True)
|
|
56
|
+
|
|
57
|
+
|
|
58
|
+
class Client(_EventDispatcher):
|
|
59
|
+
def __init__(self, address, port):
|
|
60
|
+
"""Create a Client connection to a Server."""
|
|
61
|
+
self._socket = _socket.create_connection((address, port))
|
|
62
|
+
self._address = address
|
|
63
|
+
self._port = port
|
|
64
|
+
|
|
65
|
+
self._terminate = _threading.Event()
|
|
66
|
+
self._queue = _queue.Queue()
|
|
67
|
+
|
|
68
|
+
_threading.Thread(target=self._recv, daemon=True).start()
|
|
69
|
+
_threading.Thread(target=self._send, daemon=True).start()
|
|
70
|
+
|
|
71
|
+
self._sentinal = object() # poison pill
|
|
72
|
+
|
|
73
|
+
def close(self):
|
|
74
|
+
"""Close the connection."""
|
|
75
|
+
self._queue.put(self._sentinal)
|
|
76
|
+
self._socket.shutdown(1)
|
|
77
|
+
if not self._terminate.is_set():
|
|
78
|
+
self._terminate.set()
|
|
79
|
+
self.dispatch_event('on_disconnect', self)
|
|
80
|
+
|
|
81
|
+
def send(self, message):
|
|
82
|
+
"""Queue a message to send.
|
|
83
|
+
|
|
84
|
+
Put a string of bytes into the queue to send.
|
|
85
|
+
raises a `ConnectionError` if the connection
|
|
86
|
+
has been closed or dropped.
|
|
87
|
+
|
|
88
|
+
:Parameters:
|
|
89
|
+
`message` : bytes
|
|
90
|
+
A string of bytes to send.
|
|
91
|
+
"""
|
|
92
|
+
if self._terminate.is_set():
|
|
93
|
+
raise ConnectionError("Connection is closed.")
|
|
94
|
+
self._queue.put(message)
|
|
95
|
+
|
|
96
|
+
def _send(self): # Thread
|
|
97
|
+
"""Background Thread to send messages from the queue."""
|
|
98
|
+
while not self._terminate.is_set():
|
|
99
|
+
message = self._queue.get()
|
|
100
|
+
if message == self._sentinal: # bail out on poison pill
|
|
101
|
+
break
|
|
102
|
+
try:
|
|
103
|
+
# Attach a 4byte header to the front of the message:
|
|
104
|
+
packet = _struct.pack('I', len(message)) + message
|
|
105
|
+
self._socket.sendall(packet)
|
|
106
|
+
except (ConnectionError, OSError):
|
|
107
|
+
self.close()
|
|
108
|
+
break
|
|
109
|
+
|
|
110
|
+
assert _debug_net("Exiting _send thread")
|
|
111
|
+
|
|
112
|
+
|
|
113
|
+
def _recv(self): # Thread
|
|
114
|
+
socket = self._socket
|
|
115
|
+
|
|
116
|
+
while not self._terminate.is_set():
|
|
117
|
+
try:
|
|
118
|
+
header = socket.recv(4)
|
|
119
|
+
while len(header) < 4:
|
|
120
|
+
header += socket.recv(4 - len(header))
|
|
121
|
+
size = _struct.unpack('I', header)[0]
|
|
122
|
+
|
|
123
|
+
message = socket.recv(size)
|
|
124
|
+
while len(message) < size:
|
|
125
|
+
message += socket.recv(size)
|
|
126
|
+
self.dispatch_event('on_receive', self, message)
|
|
127
|
+
except (ConnectionError, OSError):
|
|
128
|
+
self.close()
|
|
129
|
+
break
|
|
130
|
+
|
|
131
|
+
assert _debug_net("Exiting _recv thread")
|
|
132
|
+
|
|
133
|
+
def on_receive(self, connection, message):
|
|
134
|
+
"""Event for received messages."""
|
|
135
|
+
|
|
136
|
+
def on_disconnect(self, connection):
|
|
137
|
+
"""Event for disconnection. """
|
|
138
|
+
|
|
139
|
+
def __repr__(self):
|
|
140
|
+
return f"Client(address={self._address}, port={self._port})"
|
|
141
|
+
|
|
142
|
+
|
|
143
|
+
Client.register_event_type('on_receive')
|
|
144
|
+
Client.register_event_type('on_disconnect')
|
|
145
|
+
|
|
146
|
+
|
|
147
|
+
class ClientConnection(_EventDispatcher):
|
|
148
|
+
|
|
149
|
+
def __init__(self, reader, writer):
|
|
150
|
+
self._reader = reader
|
|
151
|
+
self._writer = writer
|
|
152
|
+
self._closed = False
|
|
153
|
+
self._loop = _asyncio.get_event_loop()
|
|
154
|
+
_asyncio.run_coroutine_threadsafe(self._recv(), self._loop)
|
|
155
|
+
|
|
156
|
+
def close(self):
|
|
157
|
+
if not self._closed:
|
|
158
|
+
self._writer.transport.close()
|
|
159
|
+
self._closed = True
|
|
160
|
+
self.dispatch_event('on_disconnect', self)
|
|
161
|
+
|
|
162
|
+
async def _recv(self):
|
|
163
|
+
while not self._closed:
|
|
164
|
+
try:
|
|
165
|
+
header = await self._reader.readexactly(4)
|
|
166
|
+
size = _struct.unpack('I', header)[0]
|
|
167
|
+
message = await self._reader.readexactly(size)
|
|
168
|
+
self._loop.call_soon(self.dispatch_event, 'on_receive', self, message)
|
|
169
|
+
|
|
170
|
+
except _asyncio.IncompleteReadError:
|
|
171
|
+
self.close()
|
|
172
|
+
break
|
|
173
|
+
|
|
174
|
+
async def _send(self, message):
|
|
175
|
+
try:
|
|
176
|
+
packet = _struct.pack('I', len(message)) + message
|
|
177
|
+
self._writer.write(packet)
|
|
178
|
+
await self._writer.drain()
|
|
179
|
+
except ConnectionResetError:
|
|
180
|
+
self.close()
|
|
181
|
+
|
|
182
|
+
def send(self, message):
|
|
183
|
+
# Synchrounously send a message in an async coroutine.
|
|
184
|
+
if self._writer.transport is None or self._writer.transport.is_closing():
|
|
185
|
+
self.close()
|
|
186
|
+
return
|
|
187
|
+
_future = _asyncio.run_coroutine_threadsafe(self._send(message), self._loop)
|
|
188
|
+
|
|
189
|
+
def on_receive(self, connection, message):
|
|
190
|
+
"""Event for received messages."""
|
|
191
|
+
|
|
192
|
+
def on_disconnect(self, connection):
|
|
193
|
+
"""Event for disconnection. """
|
|
194
|
+
|
|
195
|
+
def __del__(self):
|
|
196
|
+
assert _debug_net(f"Connection garbage collected: {self}")
|
|
197
|
+
|
|
198
|
+
def __repr__(self):
|
|
199
|
+
return f"{self.__class__.__name__}({id(self)})"
|
|
200
|
+
|
|
201
|
+
|
|
202
|
+
ClientConnection.register_event_type('on_receive')
|
|
203
|
+
ClientConnection.register_event_type('on_disconnect')
|
|
204
|
+
|
|
205
|
+
|
|
206
|
+
class Server(_EventDispatcher):
|
|
207
|
+
|
|
208
|
+
def __init__(self, address, port):
|
|
209
|
+
self._address = address
|
|
210
|
+
self._port = port
|
|
211
|
+
|
|
212
|
+
self._server = None
|
|
213
|
+
|
|
214
|
+
self._thread = _threading.Thread(target=self._run, daemon=True)
|
|
215
|
+
self._thread.start()
|
|
216
|
+
|
|
217
|
+
blurb = f"Server listening on {address}:{port}"
|
|
218
|
+
assert _debug_net(f"{'-' * len(blurb)}\n{blurb}\n{'-' * len(blurb)}")
|
|
219
|
+
|
|
220
|
+
|
|
221
|
+
async def handle_connection(self, reader, writer):
|
|
222
|
+
connection = ClientConnection(reader, writer)
|
|
223
|
+
self.dispatch_event('on_connection', connection)
|
|
224
|
+
|
|
225
|
+
async def _start_server(self):
|
|
226
|
+
self._server = await _asyncio.start_server(self.handle_connection, self._address, self._port)
|
|
227
|
+
async with self._server:
|
|
228
|
+
await self._server.serve_forever()
|
|
229
|
+
|
|
230
|
+
def _run(self):
|
|
231
|
+
try:
|
|
232
|
+
_asyncio.run(self._start_server())
|
|
233
|
+
except KeyboardInterrupt:
|
|
234
|
+
self._server.close()
|
|
235
|
+
|
|
236
|
+
def on_connection(self, connection):
|
|
237
|
+
"""Event for new Client connections."""
|
|
238
|
+
assert _debug_net("Connected <---", connection)
|
|
239
|
+
connection.set_handler('on_disconnect', self.on_disconnect)
|
|
240
|
+
|
|
241
|
+
def on_disconnect(self, connection):
|
|
242
|
+
"""Event for disconnected Clients."""
|
|
243
|
+
assert _debug_net("Disconnected --->", connection)
|
|
244
|
+
|
|
245
|
+
|
|
246
|
+
Server.register_event_type('on_connection')
|
|
247
|
+
Server.register_event_type('on_disconnect')
|
|
@@ -266,30 +266,29 @@ class DWRITE_CLUSTER_METRICS(ctypes.Structure):
|
|
|
266
266
|
class IDWriteFontFileStream(com.IUnknown):
|
|
267
267
|
_methods_ = [
|
|
268
268
|
('ReadFileFragment',
|
|
269
|
-
com.STDMETHOD(
|
|
269
|
+
com.STDMETHOD(POINTER(c_void_p), UINT64, UINT64, POINTER(c_void_p))),
|
|
270
270
|
('ReleaseFileFragment',
|
|
271
|
-
com.STDMETHOD(c_void_p
|
|
271
|
+
com.STDMETHOD(c_void_p)),
|
|
272
272
|
('GetFileSize',
|
|
273
|
-
com.STDMETHOD(
|
|
273
|
+
com.STDMETHOD(POINTER(UINT64))),
|
|
274
274
|
('GetLastWriteTime',
|
|
275
|
-
com.STDMETHOD(
|
|
275
|
+
com.STDMETHOD(POINTER(UINT64))),
|
|
276
276
|
]
|
|
277
277
|
|
|
278
278
|
|
|
279
279
|
class IDWriteFontFileLoader_LI(com.IUnknown): # Local implementation use only.
|
|
280
280
|
_methods_ = [
|
|
281
281
|
('CreateStreamFromKey',
|
|
282
|
-
com.STDMETHOD(c_void_p,
|
|
282
|
+
com.STDMETHOD(c_void_p, UINT32, POINTER(POINTER(IDWriteFontFileStream))))
|
|
283
283
|
]
|
|
284
284
|
|
|
285
285
|
|
|
286
286
|
class IDWriteFontFileLoader(com.pIUnknown):
|
|
287
287
|
_methods_ = [
|
|
288
288
|
('CreateStreamFromKey',
|
|
289
|
-
com.STDMETHOD(c_void_p,
|
|
289
|
+
com.STDMETHOD(c_void_p, UINT32, POINTER(POINTER(IDWriteFontFileStream))))
|
|
290
290
|
]
|
|
291
291
|
|
|
292
|
-
|
|
293
292
|
class IDWriteLocalFontFileLoader(IDWriteFontFileLoader, com.pIUnknown):
|
|
294
293
|
_methods_ = [
|
|
295
294
|
('GetFilePathLengthFromKey',
|
|
@@ -452,13 +451,13 @@ DWRITE_READING_DIRECTION_LEFT_TO_RIGHT = 0
|
|
|
452
451
|
class IDWriteTextAnalysisSource(com.IUnknown):
|
|
453
452
|
_methods_ = [
|
|
454
453
|
('GetTextAtPosition',
|
|
455
|
-
com.
|
|
454
|
+
com.STDMETHOD(UINT32, POINTER(c_wchar_p), POINTER(UINT32))),
|
|
456
455
|
('GetTextBeforePosition',
|
|
457
|
-
com.STDMETHOD(UINT32, c_wchar_p, POINTER(UINT32))),
|
|
456
|
+
com.STDMETHOD(UINT32, POINTER(c_wchar_p), POINTER(UINT32))),
|
|
458
457
|
('GetParagraphReadingDirection',
|
|
459
458
|
com.METHOD(DWRITE_READING_DIRECTION)),
|
|
460
459
|
('GetLocaleName',
|
|
461
|
-
com.STDMETHOD(
|
|
460
|
+
com.STDMETHOD(UINT32, POINTER(UINT32), POINTER(c_wchar_p))),
|
|
462
461
|
('GetNumberSubstitution',
|
|
463
462
|
com.STDMETHOD(UINT32, POINTER(UINT32), c_void_p)),
|
|
464
463
|
]
|
|
@@ -467,7 +466,7 @@ class IDWriteTextAnalysisSource(com.IUnknown):
|
|
|
467
466
|
class IDWriteTextAnalysisSink(com.IUnknown):
|
|
468
467
|
_methods_ = [
|
|
469
468
|
('SetScriptAnalysis',
|
|
470
|
-
com.STDMETHOD(
|
|
469
|
+
com.STDMETHOD(UINT32, UINT32, POINTER(DWRITE_SCRIPT_ANALYSIS))),
|
|
471
470
|
('SetLineBreakpoints',
|
|
472
471
|
com.STDMETHOD(UINT32, UINT32, c_void_p)),
|
|
473
472
|
('SetBidiLevel',
|
|
@@ -524,7 +523,7 @@ class TextAnalysis(com.COMObject):
|
|
|
524
523
|
|
|
525
524
|
analyzer.AnalyzeScript(self, 0, text_length, self)
|
|
526
525
|
|
|
527
|
-
def SetScriptAnalysis(self,
|
|
526
|
+
def SetScriptAnalysis(self, textPosition, textLength, scriptAnalysis):
|
|
528
527
|
# textPosition - The index of the first character in the string that the result applies to
|
|
529
528
|
# textLength - How many characters of the string from the index that the result applies to
|
|
530
529
|
# scriptAnalysis - The analysis information for all glyphs starting at position for length.
|
|
@@ -542,10 +541,10 @@ class TextAnalysis(com.COMObject):
|
|
|
542
541
|
return 0
|
|
543
542
|
# return 0x80004001
|
|
544
543
|
|
|
545
|
-
def GetTextBeforePosition(self,
|
|
544
|
+
def GetTextBeforePosition(self, textPosition, textString, textLength):
|
|
546
545
|
raise Exception("Currently not implemented.")
|
|
547
546
|
|
|
548
|
-
def GetTextAtPosition(self,
|
|
547
|
+
def GetTextAtPosition(self, textPosition, textString, textLength):
|
|
549
548
|
# This method will retrieve a substring of the text in this layout
|
|
550
549
|
# to be used in an analysis step.
|
|
551
550
|
# Arguments:
|
|
@@ -568,7 +567,7 @@ class TextAnalysis(com.COMObject):
|
|
|
568
567
|
def GetParagraphReadingDirection(self):
|
|
569
568
|
return 0
|
|
570
569
|
|
|
571
|
-
def GetLocaleName(self,
|
|
570
|
+
def GetLocaleName(self, textPosition, textLength, localeName):
|
|
572
571
|
self.__local_name = c_wchar_p("") # TODO: Add more locales.
|
|
573
572
|
localeName[0] = self.__local_name
|
|
574
573
|
textLength[0] = self._textlength - textPosition
|
|
@@ -954,16 +953,16 @@ class IDWriteTextLayout1(IDWriteTextLayout, IDWriteTextFormat, com.pIUnknown):
|
|
|
954
953
|
class IDWriteFontFileEnumerator(com.IUnknown):
|
|
955
954
|
_methods_ = [
|
|
956
955
|
('MoveNext',
|
|
957
|
-
com.STDMETHOD(
|
|
956
|
+
com.STDMETHOD(POINTER(BOOL))),
|
|
958
957
|
('GetCurrentFontFile',
|
|
959
|
-
com.STDMETHOD(c_void_p
|
|
958
|
+
com.STDMETHOD(c_void_p)),
|
|
960
959
|
]
|
|
961
960
|
|
|
962
961
|
|
|
963
962
|
class IDWriteFontCollectionLoader(com.IUnknown):
|
|
964
963
|
_methods_ = [
|
|
965
964
|
('CreateEnumeratorFromKey',
|
|
966
|
-
com.STDMETHOD(c_void_p, c_void_p,
|
|
965
|
+
com.STDMETHOD(c_void_p, c_void_p, UINT32, POINTER(POINTER(IDWriteFontFileEnumerator)))),
|
|
967
966
|
]
|
|
968
967
|
|
|
969
968
|
|
|
@@ -971,20 +970,12 @@ class MyFontFileStream(com.COMObject):
|
|
|
971
970
|
_interfaces_ = [IDWriteFontFileStream]
|
|
972
971
|
|
|
973
972
|
def __init__(self, data):
|
|
973
|
+
super().__init__()
|
|
974
974
|
self._data = data
|
|
975
975
|
self._size = len(data)
|
|
976
976
|
self._ptrs = []
|
|
977
977
|
|
|
978
|
-
def
|
|
979
|
-
return 1
|
|
980
|
-
|
|
981
|
-
def Release(self, this):
|
|
982
|
-
return 1
|
|
983
|
-
|
|
984
|
-
def QueryInterface(self, this, refiid, tester):
|
|
985
|
-
return 0
|
|
986
|
-
|
|
987
|
-
def ReadFileFragment(self, this, fragmentStart, fileOffset, fragmentSize, fragmentContext):
|
|
978
|
+
def ReadFileFragment(self, fragmentStart, fileOffset, fragmentSize, fragmentContext):
|
|
988
979
|
if fileOffset + fragmentSize > self._size:
|
|
989
980
|
return 0x80004005 # E_FAIL
|
|
990
981
|
|
|
@@ -997,14 +988,14 @@ class MyFontFileStream(com.COMObject):
|
|
|
997
988
|
fragmentContext[0] = None
|
|
998
989
|
return 0
|
|
999
990
|
|
|
1000
|
-
def ReleaseFileFragment(self,
|
|
991
|
+
def ReleaseFileFragment(self, fragmentContext):
|
|
1001
992
|
return 0
|
|
1002
993
|
|
|
1003
|
-
def GetFileSize(self,
|
|
994
|
+
def GetFileSize(self, fileSize):
|
|
1004
995
|
fileSize[0] = self._size
|
|
1005
996
|
return 0
|
|
1006
997
|
|
|
1007
|
-
def GetLastWriteTime(self,
|
|
998
|
+
def GetLastWriteTime(self, lastWriteTime):
|
|
1008
999
|
return 0x80004001 # E_NOTIMPL
|
|
1009
1000
|
|
|
1010
1001
|
|
|
@@ -1012,21 +1003,13 @@ class LegacyFontFileLoader(com.COMObject):
|
|
|
1012
1003
|
_interfaces_ = [IDWriteFontFileLoader_LI]
|
|
1013
1004
|
|
|
1014
1005
|
def __init__(self):
|
|
1006
|
+
super().__init__()
|
|
1015
1007
|
self._streams = {}
|
|
1016
1008
|
|
|
1017
|
-
def
|
|
1018
|
-
return 0
|
|
1019
|
-
|
|
1020
|
-
def AddRef(self, this):
|
|
1021
|
-
return 1
|
|
1022
|
-
|
|
1023
|
-
def Release(self, this):
|
|
1024
|
-
return 1
|
|
1025
|
-
|
|
1026
|
-
def CreateStreamFromKey(self, this, fontfileReferenceKey, fontFileReferenceKeySize, fontFileStream):
|
|
1009
|
+
def CreateStreamFromKey(self, fontfileReferenceKey, fontFileReferenceKeySize, fontFileStream):
|
|
1027
1010
|
convert_index = cast(fontfileReferenceKey, POINTER(c_uint32))
|
|
1028
1011
|
|
|
1029
|
-
self._ptr = ctypes.cast(self._streams[convert_index.contents.value].
|
|
1012
|
+
self._ptr = ctypes.cast(self._streams[convert_index.contents.value].as_interface(IDWriteFontFileStream),
|
|
1030
1013
|
POINTER(IDWriteFontFileStream))
|
|
1031
1014
|
fontFileStream[0] = self._ptr
|
|
1032
1015
|
return 0
|
|
@@ -1039,6 +1022,7 @@ class MyEnumerator(com.COMObject):
|
|
|
1039
1022
|
_interfaces_ = [IDWriteFontFileEnumerator]
|
|
1040
1023
|
|
|
1041
1024
|
def __init__(self, factory, loader):
|
|
1025
|
+
super().__init__()
|
|
1042
1026
|
self.factory = cast(factory, IDWriteFactory)
|
|
1043
1027
|
self.key = "pyglet_dwrite"
|
|
1044
1028
|
self.size = len(self.key)
|
|
@@ -1057,7 +1041,7 @@ class MyEnumerator(com.COMObject):
|
|
|
1057
1041
|
def AddFontData(self, fonts):
|
|
1058
1042
|
self._font_data = fonts
|
|
1059
1043
|
|
|
1060
|
-
def MoveNext(self,
|
|
1044
|
+
def MoveNext(self, hasCurrentFile):
|
|
1061
1045
|
|
|
1062
1046
|
self.current_index += 1
|
|
1063
1047
|
if self.current_index != len(self._font_data):
|
|
@@ -1087,7 +1071,7 @@ class MyEnumerator(com.COMObject):
|
|
|
1087
1071
|
|
|
1088
1072
|
pass
|
|
1089
1073
|
|
|
1090
|
-
def GetCurrentFontFile(self,
|
|
1074
|
+
def GetCurrentFontFile(self, fontFile):
|
|
1091
1075
|
fontFile = cast(fontFile, POINTER(IDWriteFontFile))
|
|
1092
1076
|
fontFile[0] = self._font_files[self.current_index]
|
|
1093
1077
|
return 0
|
|
@@ -1097,24 +1081,14 @@ class LegacyCollectionLoader(com.COMObject):
|
|
|
1097
1081
|
_interfaces_ = [IDWriteFontCollectionLoader]
|
|
1098
1082
|
|
|
1099
1083
|
def __init__(self, factory, loader):
|
|
1084
|
+
super().__init__()
|
|
1100
1085
|
self._enumerator = MyEnumerator(factory, loader)
|
|
1101
1086
|
|
|
1102
1087
|
def AddFontData(self, fonts):
|
|
1103
1088
|
self._enumerator.AddFontData(fonts)
|
|
1104
1089
|
|
|
1105
|
-
def
|
|
1106
|
-
self.
|
|
1107
|
-
return 1
|
|
1108
|
-
|
|
1109
|
-
def Release(self, this):
|
|
1110
|
-
self._i = 0
|
|
1111
|
-
return 1
|
|
1112
|
-
|
|
1113
|
-
def QueryInterface(self, this, refiid, tester):
|
|
1114
|
-
return 0
|
|
1115
|
-
|
|
1116
|
-
def CreateEnumeratorFromKey(self, this, factory, key, key_size, enumerator):
|
|
1117
|
-
self._ptr = ctypes.cast(self._enumerator._pointers[IDWriteFontFileEnumerator],
|
|
1090
|
+
def CreateEnumeratorFromKey(self, factory, key, key_size, enumerator):
|
|
1091
|
+
self._ptr = ctypes.cast(self._enumerator.as_interface(IDWriteFontFileEnumerator),
|
|
1118
1092
|
POINTER(IDWriteFontFileEnumerator))
|
|
1119
1093
|
|
|
1120
1094
|
enumerator[0] = self._ptr
|
|
@@ -2418,7 +2392,7 @@ class Win32DirectWriteFont(base.Font):
|
|
|
2418
2392
|
|
|
2419
2393
|
# Note: RegisterFontLoader takes a pointer. However, for legacy we implement our own callback interface.
|
|
2420
2394
|
# Therefore we need to pass to the actual pointer directly.
|
|
2421
|
-
cls._write_factory.RegisterFontFileLoader(cls._font_loader.
|
|
2395
|
+
cls._write_factory.RegisterFontFileLoader(cls._font_loader.as_interface(IDWriteFontFileLoader_LI))
|
|
2422
2396
|
|
|
2423
2397
|
cls._font_collection_loader = LegacyCollectionLoader(cls._write_factory, cls._font_loader)
|
|
2424
2398
|
cls._write_factory.RegisterFontCollectionLoader(cls._font_collection_loader)
|
|
@@ -2472,7 +2446,7 @@ class Win32DirectWriteFont(base.Font):
|
|
|
2472
2446
|
cls._font_collection_loader = LegacyCollectionLoader(cls._write_factory, cls._font_loader)
|
|
2473
2447
|
|
|
2474
2448
|
cls._write_factory.RegisterFontCollectionLoader(cls._font_collection_loader)
|
|
2475
|
-
cls._write_factory.RegisterFontFileLoader(cls._font_loader.
|
|
2449
|
+
cls._write_factory.RegisterFontFileLoader(cls._font_loader.as_interface(IDWriteFontFileLoader_LI))
|
|
2476
2450
|
|
|
2477
2451
|
cls._font_collection_loader.AddFontData(cls._font_cache)
|
|
2478
2452
|
|
|
@@ -336,7 +336,7 @@ class GDIPlusGlyphRenderer(Win32GlyphRenderer):
|
|
|
336
336
|
pass
|
|
337
337
|
|
|
338
338
|
def _create_bitmap(self, width, height):
|
|
339
|
-
self._data = (
|
|
339
|
+
self._data = (BYTE * (4 * width * height))()
|
|
340
340
|
self._bitmap = ctypes.c_void_p()
|
|
341
341
|
self._format = PixelFormat32bppARGB
|
|
342
342
|
gdiplus.GdipCreateBitmapFromScan0(width, height, width * 4,
|
|
@@ -532,6 +532,12 @@ class GDIPlusFont(Win32Font):
|
|
|
532
532
|
self._name = name
|
|
533
533
|
|
|
534
534
|
family = ctypes.c_void_p()
|
|
535
|
+
|
|
536
|
+
# GDI will add @ in front of a localized font for some Asian languages. However, GDI will also not find it
|
|
537
|
+
# based on that name (???). Here we remove it before checking font collections.
|
|
538
|
+
if name[0] == "@":
|
|
539
|
+
name = name[1:]
|
|
540
|
+
|
|
535
541
|
name = ctypes.c_wchar_p(name)
|
|
536
542
|
|
|
537
543
|
# Look in private collection first:
|
|
@@ -540,6 +546,9 @@ class GDIPlusFont(Win32Font):
|
|
|
540
546
|
|
|
541
547
|
# Then in system collection:
|
|
542
548
|
if not family:
|
|
549
|
+
if _debug_font:
|
|
550
|
+
print(f"Warning: Font '{name}' was not found. Defaulting to: {self._default_name}")
|
|
551
|
+
|
|
543
552
|
gdiplus.GdipCreateFontFamilyFromName(name, None, ctypes.byref(family))
|
|
544
553
|
|
|
545
554
|
# Nothing found, use default font.
|