pyglet 2.1.2__tar.gz → 2.1.4__tar.gz
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.1.2 → pyglet-2.1.4}/PKG-INFO +2 -3
- {pyglet-2.1.2 → pyglet-2.1.4}/README.md +1 -2
- {pyglet-2.1.2 → pyglet-2.1.4}/RELEASE_NOTES +40 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/contrib/qt_sprite_preview.py +51 -45
- {pyglet-2.1.2 → pyglet-2.1.4}/doc/conf.py +5 -2
- {pyglet-2.1.2 → pyglet-2.1.4}/doc/index.rst +4 -9
- {pyglet-2.1.2 → pyglet-2.1.4}/doc/internal/contributing.rst +5 -12
- {pyglet-2.1.2 → pyglet-2.1.4}/doc/modules/gui.rst +1 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/doc/programming_guide/examplegame.rst +11 -19
- {pyglet-2.1.2 → pyglet-2.1.4}/doc/programming_guide/gui.rst +13 -10
- {pyglet-2.1.2 → pyglet-2.1.4}/doc/programming_guide/image.rst +11 -11
- {pyglet-2.1.2 → pyglet-2.1.4}/doc/programming_guide/installation.rst +1 -3
- {pyglet-2.1.2 → pyglet-2.1.4}/doc/programming_guide/keyboard.rst +1 -1
- {pyglet-2.1.2 → pyglet-2.1.4}/doc/programming_guide/media.rst +8 -5
- {pyglet-2.1.2 → pyglet-2.1.4}/doc/programming_guide/migration.rst +1 -1
- {pyglet-2.1.2 → pyglet-2.1.4}/doc/programming_guide/mouse.rst +2 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/doc/programming_guide/opengles.rst +1 -1
- {pyglet-2.1.2 → pyglet-2.1.4}/doc/programming_guide/quickstart.rst +4 -7
- {pyglet-2.1.2 → pyglet-2.1.4}/doc/programming_guide/rendering.rst +1 -1
- pyglet-2.1.4/doc/programming_guide/shapes.rst +162 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/examples/game/version2/game/physicalobject.py +1 -1
- {pyglet-2.1.2 → pyglet-2.1.4}/examples/game/version2/game/player.py +2 -2
- {pyglet-2.1.2 → pyglet-2.1.4}/examples/game/version3/game/physicalobject.py +1 -1
- {pyglet-2.1.2 → pyglet-2.1.4}/examples/game/version3/game/player.py +3 -3
- {pyglet-2.1.2 → pyglet-2.1.4}/examples/game/version4/game/asteroid.py +3 -3
- {pyglet-2.1.2/examples/game/version5 → pyglet-2.1.4/examples/game/version4}/game/bullet.py +1 -1
- {pyglet-2.1.2 → pyglet-2.1.4}/examples/game/version4/game/physicalobject.py +1 -1
- {pyglet-2.1.2 → pyglet-2.1.4}/examples/game/version4/game/player.py +3 -3
- {pyglet-2.1.2 → pyglet-2.1.4}/examples/game/version5/game/asteroid.py +3 -3
- {pyglet-2.1.2/examples/game/version4 → pyglet-2.1.4/examples/game/version5}/game/bullet.py +1 -1
- {pyglet-2.1.2 → pyglet-2.1.4}/examples/game/version5/game/physicalobject.py +1 -1
- {pyglet-2.1.2 → pyglet-2.1.4}/examples/game/version5/game/player.py +3 -3
- {pyglet-2.1.2 → pyglet-2.1.4}/examples/input/input.py +0 -7
- {pyglet-2.1.2 → pyglet-2.1.4}/examples/media/media_player.py +5 -11
- {pyglet-2.1.2 → pyglet-2.1.4}/examples/media/noisy/noisy.py +1 -1
- {pyglet-2.1.2 → pyglet-2.1.4}/examples/media/video.py +0 -5
- {pyglet-2.1.2 → pyglet-2.1.4}/examples/model/fpscamera.py +1 -2
- {pyglet-2.1.2 → pyglet-2.1.4}/examples/opengl/torus.py +4 -4
- {pyglet-2.1.2 → pyglet-2.1.4}/examples/programming_guide/animation.py +0 -4
- {pyglet-2.1.2 → pyglet-2.1.4}/examples/programming_guide/events.py +0 -8
- {pyglet-2.1.2 → pyglet-2.1.4}/examples/programming_guide/image_viewer.py +0 -7
- {pyglet-2.1.2 → pyglet-2.1.4}/examples/text/advanced_font.py +9 -8
- {pyglet-2.1.2 → pyglet-2.1.4}/examples/text/text_input.py +2 -2
- pyglet-2.1.4/examples/text/user_bitmap_font.py +92 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/experimental/svg_test.py +0 -8
- {pyglet-2.1.2 → pyglet-2.1.4}/pyglet/__init__.py +21 -9
- {pyglet-2.1.2 → pyglet-2.1.4}/pyglet/__init__.pyi +3 -1
- {pyglet-2.1.2 → pyglet-2.1.4}/pyglet/app/cocoa.py +6 -3
- {pyglet-2.1.2 → pyglet-2.1.4}/pyglet/app/xlib.py +1 -1
- {pyglet-2.1.2 → pyglet-2.1.4}/pyglet/display/cocoa.py +2 -2
- {pyglet-2.1.2 → pyglet-2.1.4}/pyglet/display/win32.py +17 -18
- {pyglet-2.1.2 → pyglet-2.1.4}/pyglet/display/xlib.py +2 -2
- {pyglet-2.1.2 → pyglet-2.1.4}/pyglet/display/xlib_vidmoderestore.py +1 -1
- {pyglet-2.1.2 → pyglet-2.1.4}/pyglet/extlibs/earcut.py +2 -2
- {pyglet-2.1.2 → pyglet-2.1.4}/pyglet/font/__init__.py +3 -3
- {pyglet-2.1.2 → pyglet-2.1.4}/pyglet/font/base.py +118 -51
- pyglet-2.1.4/pyglet/font/dwrite/__init__.py +1381 -0
- pyglet-2.1.4/pyglet/font/dwrite/d2d1_lib.py +637 -0
- pyglet-2.1.4/pyglet/font/dwrite/d2d1_types_lib.py +60 -0
- pyglet-2.1.4/pyglet/font/dwrite/dwrite_lib.py +1577 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/pyglet/font/fontconfig.py +79 -16
- {pyglet-2.1.2 → pyglet-2.1.4}/pyglet/font/freetype.py +252 -77
- {pyglet-2.1.2 → pyglet-2.1.4}/pyglet/font/freetype_lib.py +234 -125
- pyglet-2.1.4/pyglet/font/harfbuzz/__init__.py +275 -0
- pyglet-2.1.4/pyglet/font/harfbuzz/harfbuzz_lib.py +212 -0
- pyglet-2.1.4/pyglet/font/quartz.py +623 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/pyglet/font/user.py +18 -11
- {pyglet-2.1.2 → pyglet-2.1.4}/pyglet/font/win32.py +9 -1
- {pyglet-2.1.2 → pyglet-2.1.4}/pyglet/gl/wgl.py +94 -87
- {pyglet-2.1.2 → pyglet-2.1.4}/pyglet/gl/wglext_arb.py +472 -218
- {pyglet-2.1.2 → pyglet-2.1.4}/pyglet/gl/wglext_nv.py +410 -188
- {pyglet-2.1.2 → pyglet-2.1.4}/pyglet/gui/frame.py +4 -4
- {pyglet-2.1.2 → pyglet-2.1.4}/pyglet/gui/widgets.py +6 -1
- {pyglet-2.1.2 → pyglet-2.1.4}/pyglet/image/__init__.py +0 -2
- {pyglet-2.1.2 → pyglet-2.1.4}/pyglet/image/codecs/bmp.py +3 -5
- {pyglet-2.1.2 → pyglet-2.1.4}/pyglet/image/codecs/dds.py +1 -1
- {pyglet-2.1.2 → pyglet-2.1.4}/pyglet/image/codecs/gdiplus.py +28 -9
- pyglet-2.1.4/pyglet/image/codecs/wic.py +345 -0
- pyglet-2.1.2/pyglet/image/codecs/wic.py → pyglet-2.1.4/pyglet/image/codecs/wincodec_lib.py +31 -254
- {pyglet-2.1.2 → pyglet-2.1.4}/pyglet/input/base.py +3 -2
- {pyglet-2.1.2 → pyglet-2.1.4}/pyglet/input/linux/x11_xinput.py +3 -3
- {pyglet-2.1.2 → pyglet-2.1.4}/pyglet/input/linux/x11_xinput_tablet.py +2 -2
- {pyglet-2.1.2 → pyglet-2.1.4}/pyglet/input/macos/darwin_hid.py +28 -2
- {pyglet-2.1.2 → pyglet-2.1.4}/pyglet/input/win32/directinput.py +3 -2
- {pyglet-2.1.2 → pyglet-2.1.4}/pyglet/input/win32/wintab.py +1 -1
- {pyglet-2.1.2 → pyglet-2.1.4}/pyglet/input/win32/xinput.py +10 -9
- {pyglet-2.1.2 → pyglet-2.1.4}/pyglet/lib.py +14 -2
- {pyglet-2.1.2 → pyglet-2.1.4}/pyglet/libs/darwin/cocoapy/cocoalibs.py +74 -3
- {pyglet-2.1.2 → pyglet-2.1.4}/pyglet/libs/darwin/coreaudio.py +0 -2
- {pyglet-2.1.2 → pyglet-2.1.4}/pyglet/libs/win32/__init__.py +4 -2
- {pyglet-2.1.2 → pyglet-2.1.4}/pyglet/libs/win32/com.py +65 -12
- {pyglet-2.1.2 → pyglet-2.1.4}/pyglet/libs/win32/constants.py +1 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/pyglet/libs/win32/dinput.py +1 -9
- {pyglet-2.1.2 → pyglet-2.1.4}/pyglet/libs/win32/types.py +72 -8
- {pyglet-2.1.2 → pyglet-2.1.4}/pyglet/math.py +5 -5
- {pyglet-2.1.2 → pyglet-2.1.4}/pyglet/media/codecs/coreaudio.py +1 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/pyglet/media/codecs/wmf.py +93 -72
- {pyglet-2.1.2 → pyglet-2.1.4}/pyglet/media/devices/win32.py +5 -4
- {pyglet-2.1.2 → pyglet-2.1.4}/pyglet/media/drivers/directsound/lib_dsound.py +4 -4
- {pyglet-2.1.2 → pyglet-2.1.4}/pyglet/media/drivers/xaudio2/interface.py +21 -17
- {pyglet-2.1.2 → pyglet-2.1.4}/pyglet/media/drivers/xaudio2/lib_xaudio2.py +42 -25
- {pyglet-2.1.2 → pyglet-2.1.4}/pyglet/model/__init__.py +78 -57
- {pyglet-2.1.2 → pyglet-2.1.4}/pyglet/shapes.py +1 -1
- {pyglet-2.1.2 → pyglet-2.1.4}/pyglet/text/document.py +7 -53
- {pyglet-2.1.2 → pyglet-2.1.4}/pyglet/text/formats/attributed.py +3 -1
- {pyglet-2.1.2 → pyglet-2.1.4}/pyglet/text/formats/plaintext.py +1 -1
- {pyglet-2.1.2 → pyglet-2.1.4}/pyglet/text/formats/structured.py +1 -1
- {pyglet-2.1.2 → pyglet-2.1.4}/pyglet/text/layout/base.py +76 -68
- {pyglet-2.1.2 → pyglet-2.1.4}/pyglet/text/layout/incremental.py +38 -8
- {pyglet-2.1.2 → pyglet-2.1.4}/pyglet/text/layout/scrolling.py +1 -1
- {pyglet-2.1.2 → pyglet-2.1.4}/pyglet/text/runlist.py +2 -114
- {pyglet-2.1.2 → pyglet-2.1.4}/pyglet/window/__init__.py +11 -8
- {pyglet-2.1.2 → pyglet-2.1.4}/pyglet/window/win32/__init__.py +1 -3
- {pyglet-2.1.2 → pyglet-2.1.4}/pyglet/window/xlib/__init__.py +2 -2
- {pyglet-2.1.2 → pyglet-2.1.4}/pyproject.toml +1 -1
- {pyglet-2.1.2 → pyglet-2.1.4}/tests/base/interactive.py +1 -1
- pyglet-2.1.4/tests/data/fonts/action_man_atlas.png +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/tests/integration/font/test_freetype_face.py +5 -2
- {pyglet-2.1.2 → pyglet-2.1.4}/tests/integration/platform/test_win_multicore_clock.py +0 -5
- {pyglet-2.1.2 → pyglet-2.1.4}/tests/integration/text/test_empty_document.py +1 -1
- {pyglet-2.1.2 → pyglet-2.1.4}/tests/interactive/image/test_image.py +1 -1
- {pyglet-2.1.2 → pyglet-2.1.4}/tests/interactive/text/test_caret_color.py +6 -5
- {pyglet-2.1.2 → pyglet-2.1.4}/tests/interactive/text/test_content_valign.py +5 -4
- {pyglet-2.1.2 → pyglet-2.1.4}/tests/interactive/text/test_html.py +49 -44
- {pyglet-2.1.2 → pyglet-2.1.4}/tests/interactive/text/test_inline_elements.py +3 -1
- {pyglet-2.1.2 → pyglet-2.1.4}/tests/interactive/text/test_inline_elements_style_change.py +5 -3
- {pyglet-2.1.2 → pyglet-2.1.4}/tests/interactive/text/test_multiline_wrap.py +5 -5
- {pyglet-2.1.2 → pyglet-2.1.4}/tests/interactive/text/test_plain.py +2 -1
- {pyglet-2.1.2 → pyglet-2.1.4}/tests/interactive/text/test_style.py +3 -2
- {pyglet-2.1.2 → pyglet-2.1.4}/tests/interactive/window/test_window_events.py +7 -7
- {pyglet-2.1.2 → pyglet-2.1.4}/tests/interactive/window/test_window_multisample.py +1 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/tools/al_info.py +0 -5
- {pyglet-2.1.2 → pyglet-2.1.4}/tools/ffmpeg/mpexceptions.py +1 -1
- {pyglet-2.1.2 → pyglet-2.1.4}/tools/genwrappers.py +0 -8
- {pyglet-2.1.2 → pyglet-2.1.4}/tools/gl_info.py +0 -6
- {pyglet-2.1.2 → pyglet-2.1.4}/tools/wraptypes/__init__.py +3 -8
- {pyglet-2.1.2 → pyglet-2.1.4}/tools/wraptypes/cparser.py +2 -8
- {pyglet-2.1.2 → pyglet-2.1.4}/tools/wraptypes/ctypesparser.py +0 -7
- {pyglet-2.1.2 → pyglet-2.1.4}/tools/wraptypes/preprocessor.py +0 -5
- {pyglet-2.1.2 → pyglet-2.1.4}/tools/wraptypes/wrap.py +0 -8
- pyglet-2.1.2/doc/programming_guide/shapes.rst +0 -88
- pyglet-2.1.2/pyglet/font/directwrite.py +0 -2798
- pyglet-2.1.2/pyglet/font/quartz.py +0 -303
- {pyglet-2.1.2 → pyglet-2.1.4}/.coveragerc +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/.github/ISSUE_TEMPLATE/questions--or-other.md +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/.github/workflows/codeql.yml +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/.github/workflows/unittests.yml +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/.gitignore +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/.readthedocs.yml +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/LICENSE +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/MANIFEST.in +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/contrib/aseprite_codec/README +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/contrib/aseprite_codec/asedemo.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/contrib/aseprite_codec/aseprite.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/contrib/aseprite_codec/running.ase +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/contrib/logo3d/logo3d.jpg +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/contrib/logo3d/logo3d.obj.zip +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/contrib/logo3d/logo3d.wings +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/contrib/scenemanager.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/contrib/toys/follow_mouse.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/doc/Makefile +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/doc/_static/css/custom.css +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/doc/_static/favicon.ico +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/doc/_static/logo.png +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/doc/_static/logo5.svg +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/doc/_static/relatedlogo.png +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/doc/external_resources.rst +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/doc/internal/dist.rst +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/doc/internal/doc.rst +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/doc/internal/generated.rst +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/doc/internal/gl.rst +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/doc/internal/media_logging_manual.rst +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/doc/internal/media_manual.rst +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/doc/internal/testing.rst +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/doc/internal/virtualenv.rst +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/doc/internal/wraptypes-class.svg +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/doc/internal/wraptypes.rst +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/doc/make.bat +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/doc/modules/app.rst +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/doc/modules/clock.rst +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/doc/modules/customtypes.rst +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/doc/modules/display.rst +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/doc/modules/event.rst +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/doc/modules/font.rst +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/doc/modules/gl.rst +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/doc/modules/graphics/allocation.rst +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/doc/modules/graphics/index.rst +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/doc/modules/graphics/shader.rst +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/doc/modules/graphics/vertexbuffer.rst +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/doc/modules/graphics/vertexdomain.rst +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/doc/modules/image/animation.rst +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/doc/modules/image/atlas.rst +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/doc/modules/image/buffer.rst +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/doc/modules/image/index.rst +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/doc/modules/info.rst +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/doc/modules/input.rst +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/doc/modules/math.rst +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/doc/modules/media.rst +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/doc/modules/media_synthesis.rst +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/doc/modules/models.rst +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/doc/modules/pyglet.rst +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/doc/modules/resource.rst +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/doc/modules/shapes.rst +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/doc/modules/sprite.rst +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/doc/modules/text/caret.rst +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/doc/modules/text/document.rst +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/doc/modules/text/index.rst +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/doc/modules/text/layout.rst +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/doc/modules/window.rst +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/doc/modules/window_key.rst +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/doc/modules/window_mouse.rst +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/doc/programming_guide/context.rst +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/doc/programming_guide/debug.rst +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/doc/programming_guide/eventloop.rst +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/doc/programming_guide/events.rst +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/doc/programming_guide/gl.rst +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/doc/programming_guide/img/abstract_image.png +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/doc/programming_guide/img/abstract_image.svg +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/doc/programming_guide/img/buffer_image.png +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/doc/programming_guide/img/buffer_image.svg +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/doc/programming_guide/img/context_flow.png +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/doc/programming_guide/img/context_flow.svg +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/doc/programming_guide/img/cursor_mac_crosshair.png +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/doc/programming_guide/img/cursor_mac_default.png +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/doc/programming_guide/img/cursor_mac_hand.png +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/doc/programming_guide/img/cursor_mac_no.png +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/doc/programming_guide/img/cursor_mac_size_down.png +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/doc/programming_guide/img/cursor_mac_size_left.png +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/doc/programming_guide/img/cursor_mac_size_left_right.png +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/doc/programming_guide/img/cursor_mac_size_right.png +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/doc/programming_guide/img/cursor_mac_size_up.png +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/doc/programming_guide/img/cursor_mac_size_up_down.png +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/doc/programming_guide/img/cursor_mac_text.png +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/doc/programming_guide/img/cursor_mac_wait.png +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/doc/programming_guide/img/cursor_win_crosshair.png +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/doc/programming_guide/img/cursor_win_default.png +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/doc/programming_guide/img/cursor_win_hand.png +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/doc/programming_guide/img/cursor_win_help.png +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/doc/programming_guide/img/cursor_win_no.png +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/doc/programming_guide/img/cursor_win_size.png +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/doc/programming_guide/img/cursor_win_size_left_right.png +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/doc/programming_guide/img/cursor_win_size_nesw.png +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/doc/programming_guide/img/cursor_win_size_nwse.png +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/doc/programming_guide/img/cursor_win_size_up_down.png +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/doc/programming_guide/img/cursor_win_text.png +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/doc/programming_guide/img/cursor_win_wait.png +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/doc/programming_guide/img/cursor_win_wait_arrow.png +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/doc/programming_guide/img/explosion.png +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/doc/programming_guide/img/font_metrics.png +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/doc/programming_guide/img/font_metrics.svg +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/doc/programming_guide/img/image_classes.png +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/doc/programming_guide/img/image_classes.svg +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/doc/programming_guide/img/image_grid.png +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/doc/programming_guide/img/image_grid.svg +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/doc/programming_guide/img/image_sequence.png +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/doc/programming_guide/img/image_sequence.svg +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/doc/programming_guide/img/mouse_coordinates.png +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/doc/programming_guide/img/mouse_coordinates.svg +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/doc/programming_guide/img/screens.png +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/doc/programming_guide/img/screens.svg +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/doc/programming_guide/img/text_classes.png +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/doc/programming_guide/img/text_classes.svg +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/doc/programming_guide/img/window_location.png +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/doc/programming_guide/img/window_location.svg +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/doc/programming_guide/img/window_osx_borderless.png +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/doc/programming_guide/img/window_osx_default.png +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/doc/programming_guide/img/window_osx_dialog.png +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/doc/programming_guide/img/window_osx_tool.png +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/doc/programming_guide/img/window_xp_default.png +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/doc/programming_guide/img/window_xp_dialog.png +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/doc/programming_guide/img/window_xp_overlay.png +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/doc/programming_guide/img/window_xp_tool.png +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/doc/programming_guide/img/window_xp_transparent.png +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/doc/programming_guide/input.rst +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/doc/programming_guide/math.rst +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/doc/programming_guide/models.rst +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/doc/programming_guide/options.rst +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/doc/programming_guide/resources.rst +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/doc/programming_guide/text.rst +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/doc/programming_guide/time.rst +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/doc/programming_guide/windowing.rst +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/doc/requirements.txt +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/examples/clipboard.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/examples/dpi_scaled_window.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/examples/events/events_key_state_handler.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/examples/events/register_event_type.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/examples/events/window_events.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/examples/events/window_platform_event.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/examples/file_dialog.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/examples/game/resources/asteroid.png +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/examples/game/resources/bullet.png +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/examples/game/resources/bullet.wav +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/examples/game/resources/engine_flame.png +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/examples/game/resources/player.png +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/examples/game/version1/asteroid.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/examples/game/version1/game/__init__.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/examples/game/version1/game/load.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/examples/game/version1/game/resources.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/examples/game/version2/asteroid.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/examples/game/version2/game/__init__.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/examples/game/version2/game/load.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/examples/game/version2/game/resources.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/examples/game/version3/asteroid.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/examples/game/version3/game/__init__.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/examples/game/version3/game/load.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/examples/game/version3/game/resources.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/examples/game/version3/game/util.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/examples/game/version4/asteroid.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/examples/game/version4/game/__init__.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/examples/game/version4/game/load.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/examples/game/version4/game/resources.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/examples/game/version4/game/util.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/examples/game/version5/asteroid.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/examples/game/version5/game/__init__.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/examples/game/version5/game/load.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/examples/game/version5/game/resources.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/examples/game/version5/game/util.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/examples/graphics/image_convert.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/examples/graphics/image_display.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/examples/gui/bar.png +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/examples/gui/button_hover.png +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/examples/gui/button_pressed.png +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/examples/gui/button_unpressed.png +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/examples/gui/knob.png +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/examples/gui/widgets.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/examples/hello_world.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/examples/input/apple_remote.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/examples/input/controller.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/examples/input/joystick.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/examples/input/tablet.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/examples/media/media_info.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/examples/media/noisy/README +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/examples/media/noisy/ball.png +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/examples/media/noisy/ball.wav +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/examples/media/soundspace/README +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/examples/media/soundspace/reader.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/examples/media/soundspace/res/bass.wav +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/examples/media/soundspace/res/drums.wav +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/examples/media/soundspace/res/guitar.wav +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/examples/media/soundspace/res/piano.wav +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/examples/media/soundspace/res/space.txt +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/examples/media/soundspace/soundspace.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/examples/media/synthesizer.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/examples/model/box.mtl +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/examples/model/box.obj +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/examples/model/logo3d.mtl +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/examples/model/logo3d.obj +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/examples/model/model.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/examples/model/pyglet.png +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/examples/opengl/compute_shader.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/examples/opengl/egl_context.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/examples/opengl/minimal_shader.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/examples/opengl/opengl_context.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/examples/opengl/opengl_core.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/examples/opengl/opengl_scissor.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/examples/opengl/pyglet.png +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/examples/programming_guide/dinosaur.gif +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/examples/programming_guide/hello_world.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/examples/programming_guide/kitten.jpg +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/examples/programming_guide/window_subclass.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/examples/resources/Brick1Blue.png +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/examples/resources/Brick1Crack3.png +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/examples/resources/Brick1Gray.png +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/examples/resources/kitten.jpg +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/examples/resources/pyglet.png +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/examples/shapes.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/examples/sprite/depth_sprite.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/examples/sprite/display_sprite.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/examples/sprite/multi_texture_sprite.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/examples/sprite/sprite_batching.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/examples/text/html_label.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/examples/text/pyglet.png +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/examples/timer.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/examples/window/camera.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/examples/window/camera_group.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/examples/window/fixed_resolution.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/examples/window/fps_change.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/examples/window/multiple_windows.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/examples/window/overlay_window.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/examples/window/transparent_window.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/experimental/dist_field/README +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/experimental/dist_field/genfield.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/experimental/dist_field/py.df.png +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/experimental/dist_field/py.png +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/experimental/dist_field/renderfield.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/experimental/flaccodec.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/experimental/hello_world.svg +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/experimental/instancing/sprite_instance.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/experimental/instancing/sprite_instance_object.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/experimental/multitexture_sprite/multitexturesprite.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/experimental/spritebenchmark.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/experimental/wayland/gbm_egl_context.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/experimental/win32priority.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/make.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/pyglet/app/__init__.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/pyglet/app/base.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/pyglet/app/win32.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/pyglet/clock.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/pyglet/customtypes.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/pyglet/display/__init__.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/pyglet/display/__init__.pyi +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/pyglet/display/base.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/pyglet/display/headless.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/pyglet/event.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/pyglet/experimental/README.md +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/pyglet/experimental/geoshader_sprite.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/pyglet/experimental/hidraw.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/pyglet/experimental/jobs.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/pyglet/experimental/multitexture_sprite.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/pyglet/experimental/net.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/pyglet/experimental/particles.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/pyglet/extlibs/__init__.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/pyglet/extlibs/png.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/pyglet/font/ttf.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/pyglet/gl/__init__.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/pyglet/gl/agl.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/pyglet/gl/base.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/pyglet/gl/cocoa.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/pyglet/gl/gl.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/pyglet/gl/gl_compat.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/pyglet/gl/gl_info.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/pyglet/gl/glx.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/pyglet/gl/glx_info.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/pyglet/gl/glxext_arb.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/pyglet/gl/glxext_mesa.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/pyglet/gl/glxext_nv.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/pyglet/gl/headless.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/pyglet/gl/lib.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/pyglet/gl/lib_agl.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/pyglet/gl/lib_glx.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/pyglet/gl/lib_wgl.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/pyglet/gl/wgl_info.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/pyglet/gl/win32.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/pyglet/gl/xlib.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/pyglet/graphics/__init__.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/pyglet/graphics/allocation.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/pyglet/graphics/instance.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/pyglet/graphics/shader.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/pyglet/graphics/vertexarray.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/pyglet/graphics/vertexbuffer.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/pyglet/graphics/vertexdomain.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/pyglet/gui/__init__.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/pyglet/gui/ninepatch.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/pyglet/image/animation.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/pyglet/image/atlas.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/pyglet/image/buffer.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/pyglet/image/codecs/__init__.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/pyglet/image/codecs/gdkpixbuf2.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/pyglet/image/codecs/gif.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/pyglet/image/codecs/pil.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/pyglet/image/codecs/png.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/pyglet/image/codecs/quartz.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/pyglet/image/codecs/s3tc.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/pyglet/info.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/pyglet/input/__init__.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/pyglet/input/controller.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/pyglet/input/controller_db.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/pyglet/input/linux/__init__.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/pyglet/input/linux/evdev.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/pyglet/input/linux/evdev_constants.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/pyglet/input/macos/__init__.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/pyglet/input/win32/__init__.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/pyglet/libs/__init__.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/pyglet/libs/darwin/__init__.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/pyglet/libs/darwin/cocoapy/__init__.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/pyglet/libs/darwin/cocoapy/cocoatypes.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/pyglet/libs/darwin/cocoapy/runtime.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/pyglet/libs/darwin/quartzkey.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/pyglet/libs/egl/__init__.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/pyglet/libs/egl/egl.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/pyglet/libs/egl/eglext.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/pyglet/libs/egl/lib.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/pyglet/libs/ioctl.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/pyglet/libs/wayland/__init__.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/pyglet/libs/wayland/gbm.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/pyglet/libs/wayland/xkbcommon.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/pyglet/libs/win32/context_managers.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/pyglet/libs/win32/libwintab.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/pyglet/libs/win32/winkey.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/pyglet/libs/x11/__init__.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/pyglet/libs/x11/cursorfont.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/pyglet/libs/x11/xf86vmode.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/pyglet/libs/x11/xinerama.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/pyglet/libs/x11/xinput.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/pyglet/libs/x11/xlib.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/pyglet/libs/x11/xsync.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/pyglet/media/__init__.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/pyglet/media/buffered_logger.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/pyglet/media/codecs/__init__.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/pyglet/media/codecs/base.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/pyglet/media/codecs/ffmpeg.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/pyglet/media/codecs/ffmpeg_lib/__init__.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/pyglet/media/codecs/ffmpeg_lib/compat.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/pyglet/media/codecs/ffmpeg_lib/libavcodec.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/pyglet/media/codecs/ffmpeg_lib/libavformat.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/pyglet/media/codecs/ffmpeg_lib/libavutil.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/pyglet/media/codecs/ffmpeg_lib/libswresample.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/pyglet/media/codecs/ffmpeg_lib/libswscale.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/pyglet/media/codecs/gstreamer.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/pyglet/media/codecs/pyogg.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/pyglet/media/codecs/wave.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/pyglet/media/devices/__init__.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/pyglet/media/devices/base.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/pyglet/media/drivers/__init__.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/pyglet/media/drivers/base.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/pyglet/media/drivers/directsound/__init__.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/pyglet/media/drivers/directsound/adaptation.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/pyglet/media/drivers/directsound/exceptions.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/pyglet/media/drivers/directsound/interface.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/pyglet/media/drivers/listener.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/pyglet/media/drivers/openal/__init__.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/pyglet/media/drivers/openal/adaptation.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/pyglet/media/drivers/openal/interface.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/pyglet/media/drivers/openal/lib_alc.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/pyglet/media/drivers/openal/lib_openal.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/pyglet/media/drivers/pulse/__init__.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/pyglet/media/drivers/pulse/adaptation.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/pyglet/media/drivers/pulse/interface.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/pyglet/media/drivers/pulse/lib_pulseaudio.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/pyglet/media/drivers/silent/__init__.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/pyglet/media/drivers/silent/adaptation.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/pyglet/media/drivers/xaudio2/__init__.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/pyglet/media/drivers/xaudio2/adaptation.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/pyglet/media/exceptions.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/pyglet/media/instrumentation.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/pyglet/media/player.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/pyglet/media/player_worker_thread.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/pyglet/media/synthesis.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/pyglet/model/codecs/__init__.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/pyglet/model/codecs/base.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/pyglet/model/codecs/gltf.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/pyglet/model/codecs/obj.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/pyglet/py.typed +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/pyglet/resource.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/pyglet/sprite.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/pyglet/text/__init__.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/pyglet/text/caret.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/pyglet/text/formats/__init__.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/pyglet/text/formats/html.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/pyglet/text/layout/__init__.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/pyglet/util.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/pyglet/window/cocoa/__init__.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/pyglet/window/cocoa/pyglet_delegate.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/pyglet/window/cocoa/pyglet_textview.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/pyglet/window/cocoa/pyglet_view.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/pyglet/window/cocoa/pyglet_window.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/pyglet/window/cocoa/systemcursor.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/pyglet/window/event.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/pyglet/window/headless/__init__.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/pyglet/window/key.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/pyglet/window/mouse.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/pytest.ini +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/setup.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/tests/__init__.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/tests/annotations.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/tests/base/__init__.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/tests/base/data.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/tests/base/event_loop.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/tests/base/performance.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/tests/conftest.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/tests/data/fonts/README +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/tests/data/fonts/action_man.ttf +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/tests/data/fonts/action_man_bold.ttf +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/tests/data/fonts/action_man_bold_italic.ttf +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/tests/data/fonts/action_man_italic.ttf +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/tests/data/fonts/courR12-ISO8859-1.pcf +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/tests/data/images/8bpp.gif +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/tests/data/images/cursor.png +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/tests/data/images/dinosaur.gif +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/tests/data/images/gdk_close.png +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/tests/data/images/grey_background.png +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/tests/data/images/icon1.png +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/tests/data/images/icon_size1.png +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/tests/data/images/icon_size2.png +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/tests/data/images/icon_size3.png +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/tests/data/images/icon_size4.png +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/tests/data/images/icon_size5.png +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/tests/data/images/l.png +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/tests/data/images/la.png +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/tests/data/images/multitexture.png +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/tests/data/images/rgb.png +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/tests/data/images/rgb_16bpp.bmp +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/tests/data/images/rgb_1bpp.bmp +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/tests/data/images/rgb_24bpp.bmp +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/tests/data/images/rgb_32bpp.bmp +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/tests/data/images/rgb_4bpp.bmp +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/tests/data/images/rgb_8bpp.bmp +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/tests/data/images/rgb_8bpp.png +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/tests/data/images/rgb_8bpp_trans.png +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/tests/data/images/rgb_dxt1.dds +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/tests/data/images/rgba.png +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/tests/data/images/rgba_32bpp.bmp +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/tests/data/images/rgba_dxt1.dds +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/tests/data/images/rgba_dxt3.dds +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/tests/data/images/rgba_dxt5.dds +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/tests/data/images/tests.interactive.test_interactive_test_base._Test.test_1.001.png +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/tests/data/media/README +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/tests/data/media/alert.wav +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/tests/data/media/login.wav +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/tests/data/media/logout.wav +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/tests/data/media/receive.wav +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/tests/data/media/send.wav +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/tests/data/media/synthesis_sawtooth_16_11025_1ch.wav +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/tests/data/media/synthesis_sawtooth_16_44800_1ch.wav +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/tests/data/media/synthesis_silence_16_11025_1ch.wav +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/tests/data/media/synthesis_silence_16_44800_1ch.wav +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/tests/data/media/synthesis_simplefm_16_11025_1ch.wav +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/tests/data/media/synthesis_simplefm_16_44800_1ch.wav +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/tests/data/media/synthesis_sine_16_11025_1ch.wav +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/tests/data/media/synthesis_sine_16_44800_1ch.wav +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/tests/data/media/synthesis_square_16_11025_1ch.wav +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/tests/data/media/synthesis_square_16_44800_1ch.wav +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/tests/data/media/synthesis_triangle_16_11025_1ch.wav +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/tests/data/media/synthesis_triangle_16_44800_1ch.wav +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/tests/data/models/logo3d.mtl +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/tests/data/models/logo3d.obj +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/tests/integration/__init__.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/tests/integration/app/__init__.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/tests/integration/app/test_eventloop.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/tests/integration/conftest.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/tests/integration/font/test_fontconfig.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/tests/integration/graphics/__init__.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/tests/integration/graphics/test_allocation.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/tests/integration/graphics/test_batch_migration.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/tests/integration/graphics/test_shaders.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/tests/integration/image/__init__.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/tests/integration/image/test_gdkpixbuf2.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/tests/integration/image/test_imagegrid.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/tests/integration/image/test_texture3d.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/tests/integration/media/__init__.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/tests/integration/media/mock_player.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/tests/integration/media/test_directsound.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/tests/integration/media/test_driver.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/tests/integration/media/test_openal.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/tests/integration/media/test_player.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/tests/integration/media/test_pulse.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/tests/integration/model/__init__.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/tests/integration/model/test_loading.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/tests/integration/platform/__init__.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/tests/integration/platform/test_win_context_managers.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/tests/integration/resource/__init__.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/tests/integration/resource/dir1/dir1/f3.txt +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/tests/integration/resource/dir1/f2.txt +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/tests/integration/resource/dir1/res.zip +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/tests/integration/resource/dir2/f6.txt +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/tests/integration/resource/f1.txt +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/tests/integration/resource/rgbm.png +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/tests/integration/resource/test_resource_image_loading.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/tests/integration/resource/test_resource_loading.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/tests/integration/test_integrations.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/tests/integration/text/__init__.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/tests/integration/text/test_label_creation.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/tests/integration/text/test_layout_creation.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/tests/integration/window/__init__.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/tests/integration/window/test_context_share.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/tests/integration/window/test_event_sequence.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/tests/integration/window/test_window_caption.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/tests/interactive/__init__.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/tests/interactive/conftest.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/tests/interactive/image/__init__.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/tests/interactive/media/__init__.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/tests/interactive/media/test_player.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/tests/interactive/screenshots/committed/README +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/tests/interactive/screenshots/session/README +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/tests/interactive/shapes/test_shapes.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/tests/interactive/test_interactive_test_base.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/tests/interactive/text/__init__.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/tests/interactive/window/__init__.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/tests/interactive/window/test_window_fullscreen.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/tests/interactive/window/test_window_modes.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/tests/interactive/window/test_window_open.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/tests/interactive/window/test_window_settings.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/tests/interactive/window/test_window_styles.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/tests/interactive/window/window_util.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/tests/interactive/windowed_test_base.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/tests/requirements.txt +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/tests/unit/__init__.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/tests/unit/conftest.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/tests/unit/math/test_mat.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/tests/unit/math/test_quat.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/tests/unit/math/test_vec2.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/tests/unit/math/test_vec3.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/tests/unit/math/test_vec4.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/tests/unit/media/__init__.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/tests/unit/media/test_listener.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/tests/unit/media/test_player.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/tests/unit/media/test_sources.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/tests/unit/media/test_synthesis.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/tests/unit/platform/__init__.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/tests/unit/platform/test_mac_objc.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/tests/unit/shader/__init__.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/tests/unit/shader/conftest.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/tests/unit/shader/test_shader.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/tests/unit/shapes/__init__.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/tests/unit/shapes/conftest.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/tests/unit/shapes/test_bordered_rectangle.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/tests/unit/shapes/test_shapes.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/tests/unit/test_atlas.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/tests/unit/test_clock.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/tests/unit/test_clock_freq.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/tests/unit/test_events.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/tests/unit/test_font.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/tests/unit/test_input.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/tests/unit/test_resource_path.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/tests/unit/test_sprite.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/tests/unit/test_text.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/tests/unit/text/__init__.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/tests/unit/text/test_caret.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/tests/unit/text/test_layout.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/tools/ffmpeg/bokeh_timeline.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/tools/ffmpeg/compare.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/tools/ffmpeg/configure.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/tools/ffmpeg/extractors.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/tools/ffmpeg/fs.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/tools/ffmpeg/mp.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/tools/ffmpeg/playmany.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/tools/ffmpeg/readme_ffmpeg_debbuging_branch.txt +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/tools/ffmpeg/readme_run_tests.txt +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/tools/ffmpeg/report.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/tools/ffmpeg/reports.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/tools/ffmpeg/retry_crashed.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/tools/ffmpeg/run_test_suite.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/tools/ffmpeg/summarize.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/tools/ffmpeg/test_instrumentation.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/tools/ffmpeg/timeline.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/tools/gencontrollerdb.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/tools/gengl.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/tools/gl.template +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/tools/gl.xml +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/tools/inspect_font.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/tools/requirements.txt +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/tools/wgl.h +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/tools/wraptypes/lex.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/tools/wraptypes/yacc.py +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/website/LICENSE.txt +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/website/README.rst +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/website/assets/favicon.ico +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/website/assets/static/css/example-custom-styles.css +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/website/assets/static/images/pyglet.png +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/website/content/404.html/contents.lr +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/website/content/404.html/ngc-5793.jpg +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/website/content/authors/benjamin/contents.lr +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/website/content/authors/benjamin/pyglet.png +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/website/content/authors/contents.lr +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/website/content/blog/contents.lr +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/website/content/blog/welcome-blog/contents.lr +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/website/content/contents.lr +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/website/content/eclipse.jpg +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/website/pyglet.lektorproject +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/website/themes/lektor-icon/AUTHORS.txt +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/website/themes/lektor-icon/CHANGELOG.md +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/website/themes/lektor-icon/CONTRIBUTING.md +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/website/themes/lektor-icon/LICENSE.txt +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/website/themes/lektor-icon/NOTICE.txt +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/website/themes/lektor-icon/README.md +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/website/themes/lektor-icon/assets/static/css/bootstrap.css +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/website/themes/lektor-icon/assets/static/css/icomoon.css +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/website/themes/lektor-icon/assets/static/css/magnific-popup.css +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/website/themes/lektor-icon/assets/static/css/style.css +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/website/themes/lektor-icon/assets/static/fonts/bootstrap/glyphicons-halflings-regular.ttf +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/website/themes/lektor-icon/assets/static/fonts/bootstrap/glyphicons-halflings-regular.woff +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/website/themes/lektor-icon/assets/static/fonts/bootstrap/glyphicons-halflings-regular.woff2 +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/website/themes/lektor-icon/assets/static/fonts/icomoon/icomoon.ttf +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/website/themes/lektor-icon/assets/static/fonts/icomoon/icomoon.woff +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/website/themes/lektor-icon/assets/static/images/Preloader_2.gif +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/website/themes/lektor-icon/assets/static/images/placeholder_person.png +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/website/themes/lektor-icon/assets/static/js/jquery-3.3.1.min.js +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/website/themes/lektor-icon/assets/static/js/jquery.easing.min.js +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/website/themes/lektor-icon/assets/static/js/jquery.magnific-popup.min.js +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/website/themes/lektor-icon/assets/static/js/jquery.stellar.js +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/website/themes/lektor-icon/assets/static/js/jquery.stellar.min.js +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/website/themes/lektor-icon/assets/static/js/jquery.waypoints.min.js +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/website/themes/lektor-icon/assets/static/js/magnific-popup-options.js +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/website/themes/lektor-icon/assets/static/js/main-singlelayout.js +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/website/themes/lektor-icon/assets/static/js/main.js +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/website/themes/lektor-icon/flowblocks/content.ini +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/website/themes/lektor-icon/flowblocks/gallery.ini +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/website/themes/lektor-icon/flowblocks/gallery_item.ini +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/website/themes/lektor-icon/flowblocks/member.ini +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/website/themes/lektor-icon/flowblocks/mission.ini +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/website/themes/lektor-icon/flowblocks/mission_tab.ini +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/website/themes/lektor-icon/flowblocks/service.ini +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/website/themes/lektor-icon/flowblocks/services.ini +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/website/themes/lektor-icon/flowblocks/team.ini +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/website/themes/lektor-icon/images/blog-index.png +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/website/themes/lektor-icon/images/full-blog.png +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/website/themes/lektor-icon/images/full-page.png +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/website/themes/lektor-icon/images/gallery-404.png +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/website/themes/lektor-icon/images/gallery-singlepage.png +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/website/themes/lektor-icon/images/mainpage-screenshots.png +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/website/themes/lektor-icon/images/responsive-layout.png +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/website/themes/lektor-icon/models/404.ini +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/website/themes/lektor-icon/models/author.ini +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/website/themes/lektor-icon/models/authors.ini +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/website/themes/lektor-icon/models/blog-post.ini +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/website/themes/lektor-icon/models/blog.ini +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/website/themes/lektor-icon/models/page.ini +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/website/themes/lektor-icon/models/single-layout.ini +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/website/themes/lektor-icon/templates/404.html +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/website/themes/lektor-icon/templates/author.html +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/website/themes/lektor-icon/templates/authors.html +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/website/themes/lektor-icon/templates/blocks/content.html +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/website/themes/lektor-icon/templates/blocks/gallery.html +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/website/themes/lektor-icon/templates/blocks/mission.html +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/website/themes/lektor-icon/templates/blocks/services.html +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/website/themes/lektor-icon/templates/blocks/team.html +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/website/themes/lektor-icon/templates/blog-layout.html +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/website/themes/lektor-icon/templates/blog-post.html +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/website/themes/lektor-icon/templates/blog.html +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/website/themes/lektor-icon/templates/layout.html +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/website/themes/lektor-icon/templates/macros/blog.html +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/website/themes/lektor-icon/templates/macros/pagination.html +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/website/themes/lektor-icon/templates/none.html +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/website/themes/lektor-icon/templates/page.html +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/website/themes/lektor-icon/templates/single-layout.html +0 -0
- {pyglet-2.1.2 → pyglet-2.1.4}/website/themes/lektor-icon/theme.ini +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.3
|
|
2
2
|
Name: pyglet
|
|
3
|
-
Version: 2.1.
|
|
3
|
+
Version: 2.1.4
|
|
4
4
|
Summary: pyglet is a cross-platform games and multimedia package.
|
|
5
5
|
Author-email: Alex Holkner & contributors <Alex.Holkner@gmail.com>
|
|
6
6
|
Requires-Python: >=3.8
|
|
@@ -150,12 +150,11 @@ for more information about running and writing tests.
|
|
|
150
150
|
## Contact
|
|
151
151
|
|
|
152
152
|
pyglet is developed by many individual volunteers, and there is no central point of contact. If you have a question
|
|
153
|
-
about developing with pyglet, or you wish to contribute, please join the [
|
|
153
|
+
about developing with pyglet, or you wish to contribute, please join the [discord] server, or [subreddit].
|
|
154
154
|
|
|
155
155
|
For legal issues, please contact [Alex Holkner](mailto:Alex.Holkner@gmail.com).
|
|
156
156
|
|
|
157
157
|
[discord]: https://discord.gg/QXyegWe
|
|
158
|
-
[mailing list]: http://groups.google.com/group/pyglet-users
|
|
159
158
|
[subreddit]: https://www.reddit.com/r/pyglet/
|
|
160
159
|
[documentation]: https://pyglet.readthedocs.io
|
|
161
160
|
[wiki]: https://github.com/pyglet/pyglet/wiki
|
|
@@ -141,12 +141,11 @@ for more information about running and writing tests.
|
|
|
141
141
|
## Contact
|
|
142
142
|
|
|
143
143
|
pyglet is developed by many individual volunteers, and there is no central point of contact. If you have a question
|
|
144
|
-
about developing with pyglet, or you wish to contribute, please join the [
|
|
144
|
+
about developing with pyglet, or you wish to contribute, please join the [discord] server, or [subreddit].
|
|
145
145
|
|
|
146
146
|
For legal issues, please contact [Alex Holkner](mailto:Alex.Holkner@gmail.com).
|
|
147
147
|
|
|
148
148
|
[discord]: https://discord.gg/QXyegWe
|
|
149
|
-
[mailing list]: http://groups.google.com/group/pyglet-users
|
|
150
149
|
[subreddit]: https://www.reddit.com/r/pyglet/
|
|
151
150
|
[documentation]: https://pyglet.readthedocs.io
|
|
152
151
|
[wiki]: https://github.com/pyglet/pyglet/wiki
|
|
@@ -1,3 +1,43 @@
|
|
|
1
|
+
pyglet 2.1.4
|
|
2
|
+
|
|
3
|
+
Changes
|
|
4
|
+
-------
|
|
5
|
+
- docs: Add shape guide crossrefs (#1291)
|
|
6
|
+
- Updated the opengl torus example to work with the material updates in 3.1 (#1281)
|
|
7
|
+
- Add homebrew lib search location for Apple Silicon.
|
|
8
|
+
- Bump Qt example to use PySide6 and PyQt6 (#1305)
|
|
9
|
+
|
|
10
|
+
Bugfixes
|
|
11
|
+
--------
|
|
12
|
+
- shapes.earcut: Fix int casting bug for large polygons (#1282)
|
|
13
|
+
- Linux: Use dotclock instead of rate in xlib vidmoderestore (#1285)
|
|
14
|
+
- tests: Fix many interactive tests, and other test fixes
|
|
15
|
+
- app: Fix run(None) crashing on macOS
|
|
16
|
+
- docs: Correct the docstring for the start_angle of an arc to indicate it is in degrees and not radians (#1290)
|
|
17
|
+
- controller: Fix dpad bias for controller.min > 0 (#1296)
|
|
18
|
+
- controller: Only use 0x1 desktop page axis for controller indexing on macOS (#1297)
|
|
19
|
+
- gui: Fix the position range of the slider knob when repositioning the slider (#1299)
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
pyglet 2.1.3
|
|
23
|
+
|
|
24
|
+
Changes
|
|
25
|
+
-------
|
|
26
|
+
- window: Change the default znear/zfar to (-8192, 8192).
|
|
27
|
+
- docs: Fix top-left version display and copyright auto-generation (#1264).
|
|
28
|
+
- docs: fixes in the quickstart guide, and lots of other cleanups.
|
|
29
|
+
- clean up legacy super() call syntax around the codebase.
|
|
30
|
+
|
|
31
|
+
Bugfixes
|
|
32
|
+
--------
|
|
33
|
+
- shapes: disable depth testing by default, due to usability issues.
|
|
34
|
+
- window.xlib: prevent crash if initial configuration notify event has invalid width/height.
|
|
35
|
+
- window.xlib: fix screen mode showing dotclock instead of Hz.
|
|
36
|
+
- model: fix the (undocumented) Sphere and Cube test shapes.
|
|
37
|
+
- examples.model.fpscamera: don't normalize the movement input.
|
|
38
|
+
- window: Fix ImageMouseCursor positioning not adapting to scaling (#1278).
|
|
39
|
+
|
|
40
|
+
|
|
1
41
|
pyglet 2.1.2
|
|
2
42
|
|
|
3
43
|
Bugfixes
|
|
@@ -1,44 +1,45 @@
|
|
|
1
1
|
"""An example sprite previewer using Qt and pyglet together.
|
|
2
2
|
|
|
3
3
|
It allows you to edit the fragment and vertex shaders, then compile them
|
|
4
|
-
to get a live view. Errors and success will be printed to the console.
|
|
5
|
-
|
|
6
|
-
|
|
4
|
+
to get a live view. Errors and success will be printed to the console. Users
|
|
5
|
+
running GNOME on Linux may need the --use-qt-file-dialog flag to prevent invisible
|
|
6
|
+
window issues. A brief feature overview is located after the license notes below.
|
|
7
7
|
|
|
8
8
|
Important license notes:
|
|
9
9
|
|
|
10
10
|
1. Libraries can use licenses which impose requirements beyond those of
|
|
11
11
|
pyglet's BSD-style style license.
|
|
12
|
-
2. This example defaults to using
|
|
13
|
-
|
|
14
|
-
3.
|
|
12
|
+
2. This example defaults to using PySide6 by default, but can also use
|
|
13
|
+
PyQt6 due to their nearly-identical APIs.
|
|
14
|
+
3. PySide6 uses the LGPL license while PyQt6 uses a GPL / commercial
|
|
15
15
|
dual-license approach.
|
|
16
16
|
|
|
17
17
|
To the best knowledge of the contributors, this example and derivatives
|
|
18
18
|
are only obligated to meet the restrictions of the LGPL because it does
|
|
19
|
-
not use any
|
|
19
|
+
not use any PyQt6-specific features. Please see the following for more
|
|
20
20
|
information:
|
|
21
21
|
|
|
22
22
|
* The licenses and documentation for the libraries you plan to use
|
|
23
|
-
*
|
|
23
|
+
* This guide for prior versions of PySide and PyQt:
|
|
24
|
+
thttps://www.pythonguis.com/faq/pyqt5-vs-pyside2/
|
|
24
25
|
|
|
25
|
-
|
|
26
|
+
For additional certainty, please consult a legal professional.
|
|
26
27
|
|
|
27
28
|
|
|
28
29
|
Example features:
|
|
29
30
|
|
|
30
31
|
You can choose the current Qt binding in two ways:
|
|
31
32
|
|
|
32
|
-
1. Add
|
|
33
|
+
1. Add PySide6 or PyQt6 as the first argument after the launch command
|
|
33
34
|
when running the script in the terminal
|
|
34
|
-
2. Set the PYGLET_QT_BACKEND environment variable to either
|
|
35
|
-
|
|
35
|
+
2. Set the PYGLET_QT_BACKEND environment variable to either PySide6 or
|
|
36
|
+
PyQt6.
|
|
36
37
|
|
|
37
38
|
The priority order is:
|
|
38
39
|
|
|
39
40
|
1. positional argument
|
|
40
41
|
2. environment variable
|
|
41
|
-
3. default to
|
|
42
|
+
3. default to PySide6
|
|
42
43
|
|
|
43
44
|
To load images, choose File -> Open Image.
|
|
44
45
|
|
|
@@ -65,17 +66,17 @@ from typing import TYPE_CHECKING, Final, Mapping
|
|
|
65
66
|
# Constants for choosing a Qt backend and summarizing their licensing
|
|
66
67
|
ENV_VARIABLE: Final[str] = 'PYGLET_QT_BACKEND'
|
|
67
68
|
|
|
68
|
-
|
|
69
|
-
|
|
69
|
+
PYSIDE6: Final[str] = 'PySide6'
|
|
70
|
+
PYQT6: Final[str] = 'PyQt6'
|
|
70
71
|
|
|
71
72
|
valid_backends: Final[dict[str, str]] = {
|
|
72
|
-
|
|
73
|
-
|
|
73
|
+
PYSIDE6: "LGPL; may allow releasing under non-GPL licenses",
|
|
74
|
+
PYQT6: "Dual GPL / Commercial license; requires GPL or a fee",
|
|
74
75
|
}
|
|
75
76
|
|
|
76
|
-
# Default to
|
|
77
|
+
# Default to PySide6 as part of allowing non-GPL licenses
|
|
77
78
|
# This is necessary but not sufficient to allow this.
|
|
78
|
-
DEFAULT: Final[str] =
|
|
79
|
+
DEFAULT: Final[str] = PYSIDE6
|
|
79
80
|
|
|
80
81
|
|
|
81
82
|
# Argument parser for run-time config as __main__
|
|
@@ -83,8 +84,8 @@ parser = argparse.ArgumentParser(
|
|
|
83
84
|
description=dedent("""\
|
|
84
85
|
A sprite & shader previewer using Qt and pyglet together.
|
|
85
86
|
|
|
86
|
-
It defaults to
|
|
87
|
-
be helpful to users who want to avoid spreading
|
|
87
|
+
It defaults to PySide6, but can run on PyQt6. The details of how may
|
|
88
|
+
be helpful to users who want to avoid spreading PyQt6's GPL license
|
|
88
89
|
while using it as a fallback. See the docstrings and comments in the
|
|
89
90
|
source to learn more.
|
|
90
91
|
"""),
|
|
@@ -138,19 +139,21 @@ print(f"Selected {backend} as the Qt binding from the {reason}'s value.")
|
|
|
138
139
|
# Perform UI imports according to the detected configuration
|
|
139
140
|
import pyglet
|
|
140
141
|
|
|
141
|
-
# Use
|
|
142
|
-
# to help avoid infection by
|
|
143
|
-
# uses of
|
|
142
|
+
# Use PySide6 for type checking, static analysis, tests, and linting
|
|
143
|
+
# to help avoid infection by PyQt6's GPL license since tools will mark
|
|
144
|
+
# uses of PyQt6-specific features as missing. For example, pyright is
|
|
144
145
|
# one of the strict type checking and linting tools which can help.
|
|
145
|
-
if TYPE_CHECKING or backend ==
|
|
146
|
-
from
|
|
147
|
-
from
|
|
148
|
-
from
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
from
|
|
153
|
-
from
|
|
146
|
+
if TYPE_CHECKING or backend == PYSIDE6:
|
|
147
|
+
from PySide6 import QtCore, QtWidgets, QtGui
|
|
148
|
+
from PySide6.QtGui import QWheelEvent
|
|
149
|
+
from PySide6.QtWidgets import QFileDialog
|
|
150
|
+
from PySide6.QtOpenGLWidgets import QOpenGLWidget
|
|
151
|
+
|
|
152
|
+
elif backend == PYQT6:
|
|
153
|
+
from PyQt6 import QtCore, QtWidgets, QtGui
|
|
154
|
+
from PyQt6.QtGui import QWheelEvent
|
|
155
|
+
from PyQt6.QtWidgets import QFileDialog
|
|
156
|
+
from PyQt6.QtOpenGLWidgets import QOpenGLWidget
|
|
154
157
|
|
|
155
158
|
else: # Handle import edge cases
|
|
156
159
|
raise ValueError(
|
|
@@ -348,7 +351,7 @@ class Ui_MainWindow:
|
|
|
348
351
|
self.sprite = None
|
|
349
352
|
self.program = None
|
|
350
353
|
|
|
351
|
-
def get_file_dialog_options(self) -> QFileDialog.
|
|
354
|
+
def get_file_dialog_options(self) -> QFileDialog.Option:
|
|
352
355
|
"""Convert instance attributes to a file dialog options object.
|
|
353
356
|
|
|
354
357
|
At the moment, it supports choosing which dialog to use. This is
|
|
@@ -358,9 +361,9 @@ class Ui_MainWindow:
|
|
|
358
361
|
You may want to expand on this in your own application with
|
|
359
362
|
additional options.
|
|
360
363
|
"""
|
|
361
|
-
options = QFileDialog.
|
|
364
|
+
options = QFileDialog.Option()
|
|
362
365
|
if not self.use_native_file_dialog:
|
|
363
|
-
options |= QFileDialog.DontUseNativeDialog
|
|
366
|
+
options |= QFileDialog.Option.DontUseNativeDialog
|
|
364
367
|
|
|
365
368
|
return options
|
|
366
369
|
|
|
@@ -383,7 +386,10 @@ class Ui_MainWindow:
|
|
|
383
386
|
self.verticalLayout = QtWidgets.QVBoxLayout()
|
|
384
387
|
self.verticalLayout.setObjectName("verticalLayout")
|
|
385
388
|
self.label = QtWidgets.QLabel(self.centralwidget)
|
|
386
|
-
self.label.setAlignment(
|
|
389
|
+
self.label.setAlignment(
|
|
390
|
+
QtCore.Qt.AlignmentFlag.AlignLeading
|
|
391
|
+
| QtCore.Qt.AlignmentFlag.AlignLeft
|
|
392
|
+
| QtCore.Qt.AlignmentFlag.AlignVCenter)
|
|
387
393
|
self.label.setObjectName("label")
|
|
388
394
|
self.verticalLayout.addWidget(self.label)
|
|
389
395
|
self.vertex_source_edit = QtWidgets.QTextEdit(self.centralwidget)
|
|
@@ -428,23 +434,23 @@ class Ui_MainWindow:
|
|
|
428
434
|
MainWindow.setStatusBar(self.statusbar)
|
|
429
435
|
|
|
430
436
|
# Add menu bar menus, entries, and hotkeys
|
|
431
|
-
self.actionOpen_Image =
|
|
437
|
+
self.actionOpen_Image = QtGui.QAction(MainWindow)
|
|
432
438
|
self.actionOpen_Image.setObjectName("actionOpen_Image")
|
|
433
439
|
self.actionOpen_Image.triggered.connect(self.loadImages)
|
|
434
440
|
self.actionOpen_Image.setShortcut("Ctrl+I")
|
|
435
441
|
|
|
436
|
-
self.actionOpen_Shader =
|
|
442
|
+
self.actionOpen_Shader = QtGui.QAction(MainWindow)
|
|
437
443
|
self.actionOpen_Shader.setObjectName("actionOpen_Shader")
|
|
438
444
|
self.actionOpen_Shader.triggered.connect(self.loadShaders)
|
|
439
445
|
self.actionOpen_Shader.setShortcut("Ctrl+O")
|
|
440
446
|
|
|
441
|
-
self.actionSave_Shader =
|
|
447
|
+
self.actionSave_Shader = QtGui.QAction(MainWindow)
|
|
442
448
|
self.actionSave_Shader.setObjectName("actionSave_Shader")
|
|
443
449
|
self.actionSave_Shader.triggered.connect(self.saveShaders)
|
|
444
450
|
self.actionSave_Shader.setStatusTip('Saves both Shader Files')
|
|
445
451
|
self.actionSave_Shader.setShortcut("Ctrl+S")
|
|
446
452
|
|
|
447
|
-
self.actionExit =
|
|
453
|
+
self.actionExit = QtGui.QAction(MainWindow)
|
|
448
454
|
self.actionExit.triggered.connect(self.closeProgram)
|
|
449
455
|
self.actionExit.setObjectName("actionExit")
|
|
450
456
|
self.menuFile.addAction(self.actionOpen_Image)
|
|
@@ -457,7 +463,7 @@ class Ui_MainWindow:
|
|
|
457
463
|
|
|
458
464
|
self.imageMenu = QtWidgets.QMenu(self.menubar)
|
|
459
465
|
self.imageMenu.setObjectName("imageMenu")
|
|
460
|
-
self.noImageAction =
|
|
466
|
+
self.noImageAction = QtGui.QAction(MainWindow)
|
|
461
467
|
self.noImageAction.setDisabled(True)
|
|
462
468
|
self.imageMenu.addAction(self.noImageAction)
|
|
463
469
|
|
|
@@ -518,7 +524,7 @@ class Ui_MainWindow:
|
|
|
518
524
|
if not self.images:
|
|
519
525
|
self.imageMenu.removeAction(self.noImageAction)
|
|
520
526
|
|
|
521
|
-
action =
|
|
527
|
+
action = QtGui.QAction(self._window)
|
|
522
528
|
shader_name = f"sprite_texture{len(self.images)}"
|
|
523
529
|
action.setText(f"{os.path.basename(fileName)} ({shader_name})")
|
|
524
530
|
action.fileName = fileName
|
|
@@ -565,7 +571,7 @@ class Ui_MainWindow:
|
|
|
565
571
|
vert_filename.write_text(self.vertex_source_edit.toPlainText())
|
|
566
572
|
frag_filename.write_text(self.fragSourceEdit.toPlainText())
|
|
567
573
|
|
|
568
|
-
def removeImage(self, actionWidget:
|
|
574
|
+
def removeImage(self, actionWidget: QtGui.QAction) -> None:
|
|
569
575
|
if self.imageMenu:
|
|
570
576
|
self.imageMenu.removeAction(actionWidget)
|
|
571
577
|
|
|
@@ -775,4 +781,4 @@ if __name__ == "__main__":
|
|
|
775
781
|
sys.excepthook = excepthook
|
|
776
782
|
|
|
777
783
|
# Start the application and return its exit code
|
|
778
|
-
sys.exit(app.
|
|
784
|
+
sys.exit(app.exec())
|
|
@@ -211,14 +211,17 @@ master_doc = "index"
|
|
|
211
211
|
|
|
212
212
|
# General information about the project.
|
|
213
213
|
project = "pyglet"
|
|
214
|
-
copyright = "2006-2008, Alex Holkner. 2008-
|
|
214
|
+
copyright = f"2006-2008, Alex Holkner. 2008-{now.year} pyglet contributors"
|
|
215
215
|
|
|
216
216
|
# The version info for the project you're documenting, acts as replacement for
|
|
217
217
|
# |version| and |release|, also used in various other places throughout the
|
|
218
218
|
# built documents.
|
|
219
219
|
#
|
|
220
220
|
# The short X.Y version.
|
|
221
|
-
version
|
|
221
|
+
if pyglet.version.count(".") == 1:
|
|
222
|
+
version = pyglet.version
|
|
223
|
+
else:
|
|
224
|
+
version = pyglet.version.rsplit('.', 1)[0]
|
|
222
225
|
# The full version, including alpha/beta/rc tags.
|
|
223
226
|
release = pyglet.version
|
|
224
227
|
|
|
@@ -1,13 +1,9 @@
|
|
|
1
1
|
pyglet Documentation
|
|
2
2
|
====================
|
|
3
3
|
|
|
4
|
-
..
|
|
5
|
-
This
|
|
6
|
-
|
|
7
|
-
`2.0 maintenance <https://pyglet.readthedocs.io/en/pyglet-2.0-maintenance/>`_.
|
|
8
|
-
Documentation for the 1.5 series, which is the last to support legacy OpenGL,
|
|
9
|
-
can be found here:
|
|
10
|
-
`1.5 maintenance <https://pyglet.readthedocs.io/en/pyglet-1.5-maintenance/>`_.
|
|
4
|
+
.. note::
|
|
5
|
+
This is the documentation for pyglet version |version|.
|
|
6
|
+
If you need a different one use the docs version selector.
|
|
11
7
|
|
|
12
8
|
**pyglet** is a cross-platform windowing and multimedia library for Python,
|
|
13
9
|
intended for developing games and other visually rich applications. It supports
|
|
@@ -30,10 +26,9 @@ Some of the features of pyglet are:
|
|
|
30
26
|
use it for both commercial and other open-source projects with very little
|
|
31
27
|
restriction.
|
|
32
28
|
|
|
33
|
-
Please join our `Discord
|
|
29
|
+
Please join the conversation on our `Discord server <https://discord.gg/QXyegWe>`_.!
|
|
34
30
|
|
|
35
31
|
.. _Discord: https://discord.gg/QXyegWe
|
|
36
|
-
.. _mailing list: http://groups.google.com/group/pyglet-users
|
|
37
32
|
|
|
38
33
|
If this is your first time reading about pyglet, we suggest you start at
|
|
39
34
|
:doc:`programming_guide/quickstart`.
|
|
@@ -6,19 +6,14 @@ Contributing
|
|
|
6
6
|
Communication
|
|
7
7
|
-------------
|
|
8
8
|
|
|
9
|
-
pyglet communication occurs mostly in our
|
|
10
|
-
`discord server <https://discord.gg/QXyegWe>`_,
|
|
11
|
-
and
|
|
12
|
-
`mailing list <http://groups.google.com/group/pyglet-users>`_.
|
|
9
|
+
pyglet communication occurs mostly in our `Discord server <https://discord.gg/QXyegWe>`_.
|
|
13
10
|
|
|
14
11
|
Issue Tracker
|
|
15
12
|
-------------
|
|
16
13
|
|
|
17
14
|
You can use the `issue tracker <https://github.com/pyglet/pyglet/issues>`_
|
|
18
|
-
to report any bug or compatibility issue.
|
|
19
|
-
|
|
20
|
-
We prefer the tracker to address discussions on specific bugs, and address
|
|
21
|
-
broader topics of pyglet in the mailing list.
|
|
15
|
+
to report any bug or compatibility issue. If your issue is more complex than what can be
|
|
16
|
+
covered in a ticket, also consider joining the `Discord server <https://discord.gg/QXyegWe>`_.
|
|
22
17
|
|
|
23
18
|
Getting the latest development version
|
|
24
19
|
--------------------------------------
|
|
@@ -68,10 +63,8 @@ Contact
|
|
|
68
63
|
|
|
69
64
|
pyglet is developed by many individual volunteers, and there is no central
|
|
70
65
|
point of contact. If you have a question about developing with pyglet, or you
|
|
71
|
-
wish to contribute, please join the
|
|
72
|
-
|
|
73
|
-
or the
|
|
74
|
-
`mailing list <http://groups.google.com/group/pyglet-users>`_.
|
|
66
|
+
wish to contribute, please join the `Discord server <https://discord.gg/QXyegWe>`_.
|
|
67
|
+
|
|
75
68
|
|
|
76
69
|
For legal issues, please contact
|
|
77
70
|
`Alex Holkner <mailto:Alex.Holkner@gmail.com>`_.
|
|
@@ -526,7 +526,7 @@ same behavior as a PhysicalObject plus a little extra, so we’ll need to call
|
|
|
526
526
|
PhysicalObject's `update()` method and then respond to input::
|
|
527
527
|
|
|
528
528
|
def update(self, dt):
|
|
529
|
-
super(
|
|
529
|
+
super().update(dt)
|
|
530
530
|
|
|
531
531
|
if self.keys['left']:
|
|
532
532
|
self.rotation -= self.rotate_speed * dt
|
|
@@ -699,7 +699,7 @@ gracefully, we must write a simple but slightly enhanced `delete()` method::
|
|
|
699
699
|
|
|
700
700
|
def delete(self):
|
|
701
701
|
self.engine_sprite.delete()
|
|
702
|
-
super(
|
|
702
|
+
super().delete()
|
|
703
703
|
|
|
704
704
|
The Player class is now cleaned up and ready to go.
|
|
705
705
|
|
|
@@ -890,7 +890,7 @@ subclass of PhysicalObject::
|
|
|
890
890
|
"""Bullets fired by the player"""
|
|
891
891
|
|
|
892
892
|
def __init__(self, *args, **kwargs):
|
|
893
|
-
super(
|
|
893
|
+
super().__init__(
|
|
894
894
|
resources.bullet_image, *args, **kwargs)
|
|
895
895
|
|
|
896
896
|
To get bullets to disappear after a time, we could keep track of our own
|
|
@@ -906,7 +906,7 @@ We can do this as soon as the object is initialized by adding a call to
|
|
|
906
906
|
:meth:`pyglet.clock.schedule_once` to the constructor::
|
|
907
907
|
|
|
908
908
|
def __init__(self, *args, **kwargs):
|
|
909
|
-
super(
|
|
909
|
+
super().__init__(resources.bullet_image, *args, **kwargs)
|
|
910
910
|
pyglet.clock.schedule_once(self.die, 0.5)
|
|
911
911
|
|
|
912
912
|
There’s still more work to be done on the Bullet class, but before we
|
|
@@ -924,7 +924,7 @@ to its constructor::
|
|
|
924
924
|
|
|
925
925
|
class Player(physicalobject.PhysicalObject):
|
|
926
926
|
def __init__(self, *args, **kwargs):
|
|
927
|
-
super(
|
|
927
|
+
super().__init__(img=resources.player_image, *args, **kwargs)
|
|
928
928
|
...
|
|
929
929
|
self.bullet_speed = 700.0
|
|
930
930
|
|
|
@@ -1065,7 +1065,7 @@ to pass a specific image to the superclass, passing along any other parameters::
|
|
|
1065
1065
|
|
|
1066
1066
|
class Asteroid(physicalobject.PhysicalObject):
|
|
1067
1067
|
def __init__(self, *args, **kwargs):
|
|
1068
|
-
super(
|
|
1068
|
+
super().__init__(resources.asteroid_image, *args, **kwargs)
|
|
1069
1069
|
|
|
1070
1070
|
Now we need to write a new `handle_collision_with()` method. It should create
|
|
1071
1071
|
a random number of new, smaller asteroids with random velocities. However,
|
|
@@ -1077,7 +1077,7 @@ We want to keep the old behavior of ignoring other asteroids, so start the
|
|
|
1077
1077
|
method with a call to the superclass’s method::
|
|
1078
1078
|
|
|
1079
1079
|
def handle_collision_with(self, other_object):
|
|
1080
|
-
super(
|
|
1080
|
+
super().handle_collision_with(other_object)
|
|
1081
1081
|
|
|
1082
1082
|
Now we can say that if it’s supposed to die, and it’s big enough, then we
|
|
1083
1083
|
should create two or three new asteroids with random rotations and velocities.
|
|
@@ -1088,7 +1088,7 @@ like they come from the same object::
|
|
|
1088
1088
|
|
|
1089
1089
|
class Asteroid:
|
|
1090
1090
|
def handle_collision_with(self, other_object):
|
|
1091
|
-
super(
|
|
1091
|
+
super().handle_collision_with(other_object)
|
|
1092
1092
|
if self.dead and self.scale > 0.25:
|
|
1093
1093
|
num_asteroids = random.randint(2, 3)
|
|
1094
1094
|
for i in range(num_asteroids):
|
|
@@ -1107,13 +1107,13 @@ rotation every frame.
|
|
|
1107
1107
|
Add the attribute in the constructor::
|
|
1108
1108
|
|
|
1109
1109
|
def __init__(self, *args, **kwargs):
|
|
1110
|
-
super(
|
|
1110
|
+
super().__init__(resources.asteroid_image, *args, **kwargs)
|
|
1111
1111
|
self.rotate_speed = random.random() * 100.0 - 50.0
|
|
1112
1112
|
|
|
1113
1113
|
Then write the update() method::
|
|
1114
1114
|
|
|
1115
1115
|
def update(self, dt):
|
|
1116
|
-
super(
|
|
1116
|
+
super().update(dt)
|
|
1117
1117
|
self.rotation += self.rotate_speed * dt
|
|
1118
1118
|
|
|
1119
1119
|
The last thing we need to do is go over to load.py and have the asteroid()
|
|
@@ -1146,12 +1146,4 @@ I’m going to leave it as an exercise for you to do the following::
|
|
|
1146
1146
|
|
|
1147
1147
|
Good luck! With a little effort, you should be able to figure out most of
|
|
1148
1148
|
these things on your own. If you have trouble, join us on the pyglet
|
|
1149
|
-
|
|
1150
|
-
|
|
1151
|
-
Also, in addition to this example game, there is yet *another* Asteroids clone
|
|
1152
|
-
available in the `/examples/astraea/` folder in the pyglet source directory.
|
|
1153
|
-
In comparison to this example game excercise we've just completed,
|
|
1154
|
-
Astraea is a complete game with a proper menu, score system, and additional
|
|
1155
|
-
graphical effects. No step-by-step documentation is available for Astraea,
|
|
1156
|
-
but the code itself should be easy to understand and illustrates some nice
|
|
1157
|
-
techniques.
|
|
1149
|
+
`Discord server <https://discord.gg/QXyegWe>`_.
|
|
@@ -20,7 +20,7 @@ through the :ref:`guide_events` section of the documentation. Widgets are by nat
|
|
|
20
20
|
very tightly associated with input events, so this is necessary to fully grasp their
|
|
21
21
|
usage.
|
|
22
22
|
|
|
23
|
-
Example code can be found in
|
|
23
|
+
Example code can be found in ``examples/gui/widgets.py`` in the pyglet source repository.
|
|
24
24
|
|
|
25
25
|
|
|
26
26
|
Creating a Widget
|
|
@@ -30,13 +30,16 @@ Included Widgets are :py:class:`~pyglet.gui.widgets.PushButton`,
|
|
|
30
30
|
and :py:class:`~pyglet.gui.widgets.TextEntry`. They each have different arguments,
|
|
31
31
|
which will be shown in the API documentation. For our example, we will create a
|
|
32
32
|
'PushButton' widget, which requires you to provide at least two images. These two
|
|
33
|
-
images will visually represent the "pressed" and "
|
|
33
|
+
images will visually represent the "pressed" and "unpressed" states of the button.
|
|
34
34
|
This widget can also take an optional image for 'hover', but we'll skip that for now::
|
|
35
35
|
|
|
36
36
|
pressed_img = pyglet.resource.image("button_pressed.png")
|
|
37
|
-
|
|
37
|
+
unpressed_img = pyglet.resource.image("button_unpressed.png")
|
|
38
38
|
|
|
39
|
-
pushbutton = pyglet.gui.PushButton(
|
|
39
|
+
pushbutton = pyglet.gui.PushButton(
|
|
40
|
+
x=100, y=300, pressed=pressed_img,
|
|
41
|
+
unpressed=unpressed_img, batch=batch,
|
|
42
|
+
)
|
|
40
43
|
|
|
41
44
|
We now have a PushButton widget, but it won't yet do anything. It will be drawn on
|
|
42
45
|
screen, however, if included as part of a :py:class:`~pyglet.graphics.Batch` as shown
|
|
@@ -46,18 +49,18 @@ events dispatched by the Window::
|
|
|
46
49
|
my_window.push_handlers(pushbutton)
|
|
47
50
|
|
|
48
51
|
The widget should now change appearance when you click on it. It will switch between
|
|
49
|
-
the provided images (pressed and
|
|
52
|
+
the provided images (pressed and unpressed states). You can try adding the 'hover'
|
|
50
53
|
image as well, for more visual feedback.
|
|
51
54
|
|
|
52
55
|
Now that our widget is receiving events, we can now take of the events that are
|
|
53
|
-
produced
|
|
54
|
-
events: '
|
|
56
|
+
produced *by* the widget. In this case, the PushButton widget dispatches two
|
|
57
|
+
events: 'on_press' and 'on_release'. To wire these up, we simply set handlers
|
|
55
58
|
for them::
|
|
56
59
|
|
|
57
|
-
def my_on_press_handler():
|
|
60
|
+
def my_on_press_handler(widget):
|
|
58
61
|
print("Button Pressed!")
|
|
59
62
|
|
|
60
|
-
def my_on_release_handler():
|
|
63
|
+
def my_on_release_handler(widget):
|
|
61
64
|
print("Button Released...")
|
|
62
65
|
|
|
63
66
|
pushbutton.set_handler('on_press', my_on_press_handler)
|
|
@@ -112,7 +115,7 @@ Custom widgets
|
|
|
112
115
|
--------------
|
|
113
116
|
For users who are interested in creating their own custom Widgets, the
|
|
114
117
|
:py:class:`~pyglet.gui.widgets.WidgetBase` base class is available for
|
|
115
|
-
subclassing. This base class has most of the
|
|
118
|
+
subclassing. This base class has most of the relevant Window events
|
|
116
119
|
pre-defined, and is ready to be pushed as a handler. Custom subclasses
|
|
117
120
|
can then override whichever mouse or keyboard events they need, depending
|
|
118
121
|
on the application. Some additional helper properties are also provided.
|
|
@@ -69,7 +69,7 @@ sprites might share the same bullet image.
|
|
|
69
69
|
A Sprite is constructed given an image or animation, and can be directly
|
|
70
70
|
drawn with the :py:meth:`~pyglet.sprite.Sprite.draw` method::
|
|
71
71
|
|
|
72
|
-
sprite = pyglet.sprite.Sprite(img=image)
|
|
72
|
+
sprite = pyglet.sprite.Sprite(img=image, x=100, y=50)
|
|
73
73
|
|
|
74
74
|
@window.event
|
|
75
75
|
def on_draw():
|
|
@@ -106,12 +106,12 @@ When sprites are collected into a batch, no guarantee is made about the order
|
|
|
106
106
|
in which they will be drawn. If you need to ensure some sprites are drawn
|
|
107
107
|
before others (for example, landscape tiles might be drawn before character
|
|
108
108
|
sprites, which might be drawn before some particle effect sprites), use two
|
|
109
|
-
or more :py:class:`~pyglet.graphics.
|
|
109
|
+
or more :py:class:`~pyglet.graphics.Group` objects to specify the
|
|
110
110
|
draw order::
|
|
111
111
|
|
|
112
112
|
batch = pyglet.graphics.Batch()
|
|
113
|
-
background = pyglet.graphics.
|
|
114
|
-
foreground = pyglet.graphics.
|
|
113
|
+
background = pyglet.graphics.Group(order=0)
|
|
114
|
+
foreground = pyglet.graphics.Group(order=1)
|
|
115
115
|
|
|
116
116
|
sprites = [pyglet.sprite.Sprite(image, batch=batch, group=background),
|
|
117
117
|
pyglet.sprite.Sprite(image, batch=batch, group=background),
|
|
@@ -158,9 +158,8 @@ image. For example, to center the image at ``(x, y)``::
|
|
|
158
158
|
|
|
159
159
|
You can also specify an optional `z` component to the
|
|
160
160
|
:py:meth:`~pyglet.image.AbstractImage.blit` method.
|
|
161
|
-
This has no effect unless you have
|
|
162
|
-
|
|
163
|
-
image is drawn *behind* the first, even though it is drawn after it::
|
|
161
|
+
This has no effect unless you have enabled depth testing. In the following example,
|
|
162
|
+
the second image is drawn *behind* the first, even though it is drawn after it::
|
|
164
163
|
|
|
165
164
|
from pyglet.gl import *
|
|
166
165
|
glEnable(GL_DEPTH_TEST)
|
|
@@ -168,9 +167,10 @@ image is drawn *behind* the first, even though it is drawn after it::
|
|
|
168
167
|
kitten.blit(x, y, 0)
|
|
169
168
|
kitten.blit(x, y, -0.5)
|
|
170
169
|
|
|
171
|
-
The default pyglet projection has a depth range of (-
|
|
170
|
+
The default pyglet projection has a depth range of (-8192, 8192) -- images drawn
|
|
172
171
|
with a z value outside this range will not be visible, regardless of whether
|
|
173
|
-
depth testing is enabled or not.
|
|
172
|
+
depth testing is enabled or not. (You can create your own Window projection matrix
|
|
173
|
+
if you have specific needs).
|
|
174
174
|
|
|
175
175
|
Images with an alpha channel can be blended with the existing framebuffer. To
|
|
176
176
|
do this you need to supply OpenGL with a blend equation. The following code
|
|
@@ -582,8 +582,8 @@ Image grids
|
|
|
582
582
|
^^^^^^^^^^^
|
|
583
583
|
|
|
584
584
|
An "image grid" is a single image which is divided into several smaller images
|
|
585
|
-
by drawing an imaginary grid over it. The following image shows an image
|
|
586
|
-
|
|
585
|
+
by drawing an imaginary grid over it. The following image shows an image that
|
|
586
|
+
can be used for an asteroid explosion animation.
|
|
587
587
|
|
|
588
588
|
.. figure:: img/explosion.png
|
|
589
589
|
|
|
@@ -1,10 +1,8 @@
|
|
|
1
1
|
Installation
|
|
2
2
|
============
|
|
3
3
|
|
|
4
|
-
.. note:: These instructions apply to pyglet |version|.
|
|
5
|
-
|
|
6
4
|
pyglet is a pure Python library, with no hard dependencies on other modules.
|
|
7
|
-
No special steps or
|
|
5
|
+
No special steps or compilation are required for installation. You can install
|
|
8
6
|
from `on PyPI <https://pypi.python.org/pypi/pyglet>`_ via **pip**. For example:
|
|
9
7
|
|
|
10
8
|
.. code-block:: sh
|
|
@@ -402,7 +402,7 @@ Before adding a new motion, please do the following:
|
|
|
402
402
|
#. Discuss the addition and any remaining questions with maintainers by either:
|
|
403
403
|
|
|
404
404
|
* `Filing a GitHub Issue <https://github.com/pyglet/pyglet/issues>`_
|
|
405
|
-
* `
|
|
405
|
+
* `Joining the Discord server <https://github.com/pyglet/pyglet#contact>`_
|
|
406
406
|
|
|
407
407
|
Then, once you're ready:
|
|
408
408
|
|