pyglet 2.1.dev7__tar.gz → 2.1rc2__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.dev7 → pyglet-2.1rc2}/PKG-INFO +1 -1
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/RELEASE_NOTES +20 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/doc/index.rst +3 -2
- pyglet-2.1rc2/doc/modules/models.rst +6 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/doc/programming_guide/media.rst +10 -4
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/doc/programming_guide/migration.rst +22 -8
- pyglet-2.1rc2/doc/programming_guide/models.rst +10 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/examples/dpi_scaled_window.py +15 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/examples/model/fpscamera.py +5 -6
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/examples/model/model.py +4 -2
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/pyglet/__init__.py +9 -2
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/pyglet/__init__.pyi +0 -1
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/pyglet/experimental/jobs.py +11 -9
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/pyglet/font/__init__.py +9 -9
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/pyglet/font/directwrite.py +21 -24
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/pyglet/font/fontconfig.py +68 -20
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/pyglet/font/freetype.py +13 -9
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/pyglet/font/quartz.py +8 -2
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/pyglet/font/user.py +12 -11
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/pyglet/font/win32.py +6 -2
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/pyglet/gl/base.py +8 -8
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/pyglet/gl/headless.py +4 -2
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/pyglet/graphics/shader.py +1 -2
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/pyglet/graphics/vertexbuffer.py +16 -14
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/pyglet/graphics/vertexdomain.py +6 -2
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/pyglet/input/base.py +10 -15
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/pyglet/input/controller_db.py +10 -6
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/pyglet/media/codecs/ffmpeg.py +232 -123
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/pyglet/media/codecs/ffmpeg_lib/compat.py +1 -0
- pyglet-2.1rc2/pyglet/media/codecs/ffmpeg_lib/libavcodec.py +630 -0
- pyglet-2.1rc2/pyglet/media/codecs/ffmpeg_lib/libavformat.py +467 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/pyglet/media/codecs/ffmpeg_lib/libavutil.py +81 -25
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/pyglet/media/codecs/ffmpeg_lib/libswresample.py +24 -10
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/pyglet/media/codecs/ffmpeg_lib/libswscale.py +2 -2
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/pyglet/model/__init__.py +60 -103
- pyglet-2.1rc2/pyglet/model/codecs/__init__.py +58 -0
- pyglet-2.1rc2/pyglet/model/codecs/base.py +140 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/pyglet/model/codecs/gltf.py +115 -70
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/pyglet/model/codecs/obj.py +52 -43
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/pyglet/resource.py +5 -12
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/pyglet/text/__init__.py +30 -10
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/pyglet/text/document.py +24 -24
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/pyglet/text/formats/attributed.py +1 -1
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/pyglet/text/formats/html.py +7 -7
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/pyglet/text/layout/__init__.py +2 -2
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/pyglet/text/layout/incremental.py +1 -1
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/pyglet/text/runlist.py +1 -1
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/pyglet/window/__init__.py +4 -4
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/pyglet/window/cocoa/__init__.py +5 -5
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/pyglet/window/cocoa/pyglet_textview.py +6 -2
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/pyglet/window/win32/__init__.py +3 -3
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/pyglet/window/xlib/__init__.py +33 -14
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/tests/integration/model/test_loading.py +9 -9
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/tests/integration/text/test_empty_document.py +3 -3
- pyglet-2.1.dev7/pyglet/media/codecs/ffmpeg_lib/libavcodec.py +0 -437
- pyglet-2.1.dev7/pyglet/media/codecs/ffmpeg_lib/libavformat.py +0 -317
- pyglet-2.1.dev7/pyglet/model/codecs/__init__.py +0 -63
- pyglet-2.1.dev7/pyglet/model/codecs/base.py +0 -104
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/.coveragerc +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/.github/ISSUE_TEMPLATE/questions--or-other.md +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/.github/workflows/codeql.yml +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/.github/workflows/unittests.yml +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/.gitignore +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/.readthedocs.yml +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/LICENSE +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/MANIFEST.in +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/README.md +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/contrib/aseprite_codec/README +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/contrib/aseprite_codec/asedemo.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/contrib/aseprite_codec/aseprite.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/contrib/aseprite_codec/running.ase +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/contrib/logo3d/logo3d.jpg +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/contrib/logo3d/logo3d.obj.zip +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/contrib/logo3d/logo3d.wings +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/contrib/qt_sprite_preview.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/contrib/scenemanager.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/contrib/toys/follow_mouse.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/doc/Makefile +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/doc/_static/css/custom.css +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/doc/_static/favicon.ico +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/doc/_static/logo.png +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/doc/_static/logo5.svg +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/doc/_static/relatedlogo.png +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/doc/conf.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/doc/external_resources.rst +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/doc/internal/contributing.rst +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/doc/internal/dist.rst +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/doc/internal/doc.rst +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/doc/internal/generated.rst +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/doc/internal/gl.rst +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/doc/internal/media_logging_manual.rst +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/doc/internal/media_manual.rst +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/doc/internal/testing.rst +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/doc/internal/virtualenv.rst +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/doc/internal/wraptypes-class.svg +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/doc/internal/wraptypes.rst +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/doc/make.bat +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/doc/modules/app.rst +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/doc/modules/clock.rst +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/doc/modules/customtypes.rst +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/doc/modules/display.rst +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/doc/modules/event.rst +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/doc/modules/font.rst +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/doc/modules/gl.rst +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/doc/modules/graphics/allocation.rst +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/doc/modules/graphics/index.rst +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/doc/modules/graphics/shader.rst +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/doc/modules/graphics/vertexbuffer.rst +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/doc/modules/graphics/vertexdomain.rst +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/doc/modules/gui.rst +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/doc/modules/image/animation.rst +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/doc/modules/image/atlas.rst +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/doc/modules/image/buffer.rst +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/doc/modules/image/index.rst +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/doc/modules/info.rst +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/doc/modules/input.rst +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/doc/modules/math.rst +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/doc/modules/media.rst +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/doc/modules/media_synthesis.rst +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/doc/modules/pyglet.rst +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/doc/modules/resource.rst +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/doc/modules/shapes.rst +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/doc/modules/sprite.rst +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/doc/modules/text/caret.rst +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/doc/modules/text/document.rst +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/doc/modules/text/index.rst +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/doc/modules/text/layout.rst +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/doc/modules/window.rst +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/doc/modules/window_key.rst +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/doc/modules/window_mouse.rst +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/doc/programming_guide/context.rst +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/doc/programming_guide/debug.rst +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/doc/programming_guide/eventloop.rst +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/doc/programming_guide/events.rst +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/doc/programming_guide/examplegame.rst +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/doc/programming_guide/gl.rst +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/doc/programming_guide/gui.rst +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/doc/programming_guide/image.rst +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/doc/programming_guide/img/abstract_image.png +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/doc/programming_guide/img/abstract_image.svg +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/doc/programming_guide/img/buffer_image.png +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/doc/programming_guide/img/buffer_image.svg +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/doc/programming_guide/img/context_flow.png +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/doc/programming_guide/img/context_flow.svg +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/doc/programming_guide/img/cursor_mac_crosshair.png +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/doc/programming_guide/img/cursor_mac_default.png +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/doc/programming_guide/img/cursor_mac_hand.png +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/doc/programming_guide/img/cursor_mac_no.png +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/doc/programming_guide/img/cursor_mac_size_down.png +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/doc/programming_guide/img/cursor_mac_size_left.png +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/doc/programming_guide/img/cursor_mac_size_left_right.png +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/doc/programming_guide/img/cursor_mac_size_right.png +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/doc/programming_guide/img/cursor_mac_size_up.png +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/doc/programming_guide/img/cursor_mac_size_up_down.png +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/doc/programming_guide/img/cursor_mac_text.png +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/doc/programming_guide/img/cursor_mac_wait.png +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/doc/programming_guide/img/cursor_win_crosshair.png +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/doc/programming_guide/img/cursor_win_default.png +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/doc/programming_guide/img/cursor_win_hand.png +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/doc/programming_guide/img/cursor_win_help.png +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/doc/programming_guide/img/cursor_win_no.png +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/doc/programming_guide/img/cursor_win_size.png +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/doc/programming_guide/img/cursor_win_size_left_right.png +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/doc/programming_guide/img/cursor_win_size_nesw.png +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/doc/programming_guide/img/cursor_win_size_nwse.png +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/doc/programming_guide/img/cursor_win_size_up_down.png +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/doc/programming_guide/img/cursor_win_text.png +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/doc/programming_guide/img/cursor_win_wait.png +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/doc/programming_guide/img/cursor_win_wait_arrow.png +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/doc/programming_guide/img/explosion.png +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/doc/programming_guide/img/font_metrics.png +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/doc/programming_guide/img/font_metrics.svg +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/doc/programming_guide/img/image_classes.png +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/doc/programming_guide/img/image_classes.svg +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/doc/programming_guide/img/image_grid.png +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/doc/programming_guide/img/image_grid.svg +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/doc/programming_guide/img/image_sequence.png +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/doc/programming_guide/img/image_sequence.svg +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/doc/programming_guide/img/mouse_coordinates.png +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/doc/programming_guide/img/mouse_coordinates.svg +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/doc/programming_guide/img/screens.png +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/doc/programming_guide/img/screens.svg +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/doc/programming_guide/img/text_classes.png +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/doc/programming_guide/img/text_classes.svg +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/doc/programming_guide/img/window_location.png +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/doc/programming_guide/img/window_location.svg +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/doc/programming_guide/img/window_osx_borderless.png +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/doc/programming_guide/img/window_osx_default.png +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/doc/programming_guide/img/window_osx_dialog.png +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/doc/programming_guide/img/window_osx_tool.png +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/doc/programming_guide/img/window_xp_default.png +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/doc/programming_guide/img/window_xp_dialog.png +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/doc/programming_guide/img/window_xp_overlay.png +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/doc/programming_guide/img/window_xp_tool.png +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/doc/programming_guide/img/window_xp_transparent.png +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/doc/programming_guide/input.rst +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/doc/programming_guide/installation.rst +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/doc/programming_guide/keyboard.rst +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/doc/programming_guide/math.rst +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/doc/programming_guide/mouse.rst +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/doc/programming_guide/opengles.rst +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/doc/programming_guide/options.rst +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/doc/programming_guide/quickstart.rst +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/doc/programming_guide/rendering.rst +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/doc/programming_guide/resources.rst +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/doc/programming_guide/shapes.rst +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/doc/programming_guide/text.rst +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/doc/programming_guide/time.rst +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/doc/programming_guide/windowing.rst +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/doc/requirements.txt +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/examples/clipboard.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/examples/events/events_key_state_handler.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/examples/events/register_event_type.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/examples/events/window_events.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/examples/events/window_platform_event.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/examples/file_dialog.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/examples/game/resources/asteroid.png +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/examples/game/resources/bullet.png +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/examples/game/resources/bullet.wav +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/examples/game/resources/engine_flame.png +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/examples/game/resources/player.png +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/examples/game/version1/asteroid.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/examples/game/version1/game/__init__.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/examples/game/version1/game/load.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/examples/game/version1/game/resources.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/examples/game/version2/asteroid.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/examples/game/version2/game/__init__.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/examples/game/version2/game/load.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/examples/game/version2/game/physicalobject.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/examples/game/version2/game/player.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/examples/game/version2/game/resources.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/examples/game/version3/asteroid.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/examples/game/version3/game/__init__.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/examples/game/version3/game/load.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/examples/game/version3/game/physicalobject.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/examples/game/version3/game/player.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/examples/game/version3/game/resources.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/examples/game/version3/game/util.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/examples/game/version4/asteroid.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/examples/game/version4/game/__init__.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/examples/game/version4/game/asteroid.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/examples/game/version4/game/bullet.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/examples/game/version4/game/load.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/examples/game/version4/game/physicalobject.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/examples/game/version4/game/player.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/examples/game/version4/game/resources.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/examples/game/version4/game/util.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/examples/game/version5/asteroid.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/examples/game/version5/game/__init__.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/examples/game/version5/game/asteroid.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/examples/game/version5/game/bullet.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/examples/game/version5/game/load.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/examples/game/version5/game/physicalobject.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/examples/game/version5/game/player.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/examples/game/version5/game/resources.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/examples/game/version5/game/util.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/examples/graphics/image_convert.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/examples/graphics/image_display.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/examples/gui/bar.png +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/examples/gui/button_hover.png +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/examples/gui/button_pressed.png +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/examples/gui/button_unpressed.png +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/examples/gui/knob.png +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/examples/gui/widgets.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/examples/hello_world.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/examples/input/apple_remote.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/examples/input/controller.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/examples/input/input.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/examples/input/joystick.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/examples/input/tablet.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/examples/media/media_info.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/examples/media/media_player.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/examples/media/noisy/README +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/examples/media/noisy/ball.png +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/examples/media/noisy/ball.wav +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/examples/media/noisy/noisy.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/examples/media/soundspace/README +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/examples/media/soundspace/reader.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/examples/media/soundspace/res/bass.wav +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/examples/media/soundspace/res/drums.wav +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/examples/media/soundspace/res/guitar.wav +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/examples/media/soundspace/res/piano.wav +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/examples/media/soundspace/res/space.txt +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/examples/media/soundspace/soundspace.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/examples/media/synthesizer.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/examples/media/video.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/examples/model/box.mtl +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/examples/model/box.obj +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/examples/model/logo3d.mtl +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/examples/model/logo3d.obj +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/examples/model/pyglet.png +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/examples/opengl/compute_shader.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/examples/opengl/egl_context.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/examples/opengl/minimal_shader.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/examples/opengl/opengl_context.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/examples/opengl/opengl_core.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/examples/opengl/opengl_scissor.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/examples/opengl/pyglet.png +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/examples/opengl/torus.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/examples/programming_guide/animation.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/examples/programming_guide/dinosaur.gif +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/examples/programming_guide/events.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/examples/programming_guide/hello_world.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/examples/programming_guide/image_viewer.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/examples/programming_guide/kitten.jpg +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/examples/programming_guide/window_subclass.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/examples/resources/Brick1Blue.png +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/examples/resources/Brick1Crack3.png +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/examples/resources/Brick1Gray.png +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/examples/resources/kitten.jpg +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/examples/resources/pyglet.png +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/examples/shapes.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/examples/sprite/depth_sprite.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/examples/sprite/display_sprite.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/examples/sprite/multi_texture_sprite.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/examples/sprite/sprite_batching.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/examples/text/advanced_font.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/examples/text/html_label.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/examples/text/pyglet.png +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/examples/text/text_input.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/examples/timer.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/examples/window/camera.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/examples/window/camera_group.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/examples/window/fixed_resolution.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/examples/window/fps_change.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/examples/window/multiple_windows.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/examples/window/overlay_window.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/examples/window/transparent_window.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/experimental/dist_field/README +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/experimental/dist_field/genfield.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/experimental/dist_field/py.df.png +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/experimental/dist_field/py.png +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/experimental/dist_field/renderfield.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/experimental/flaccodec.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/experimental/hello_world.svg +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/experimental/instancing/sprite_instance.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/experimental/instancing/sprite_instance_object.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/experimental/multitexture_sprite/multitexturesprite.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/experimental/spritebenchmark.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/experimental/svg_test.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/experimental/wayland/gbm_egl_context.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/experimental/win32priority.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/make.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/pyglet/app/__init__.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/pyglet/app/base.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/pyglet/app/cocoa.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/pyglet/app/win32.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/pyglet/app/xlib.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/pyglet/clock.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/pyglet/customtypes.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/pyglet/display/__init__.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/pyglet/display/__init__.pyi +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/pyglet/display/base.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/pyglet/display/cocoa.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/pyglet/display/headless.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/pyglet/display/win32.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/pyglet/display/xlib.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/pyglet/display/xlib_vidmoderestore.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/pyglet/event.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/pyglet/experimental/README.md +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/pyglet/experimental/geoshader_sprite.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/pyglet/experimental/hidraw.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/pyglet/experimental/multitexture_sprite.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/pyglet/experimental/net.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/pyglet/experimental/particles.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/pyglet/extlibs/__init__.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/pyglet/extlibs/earcut.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/pyglet/extlibs/png.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/pyglet/font/base.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/pyglet/font/freetype_lib.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/pyglet/font/ttf.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/pyglet/gl/__init__.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/pyglet/gl/agl.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/pyglet/gl/cocoa.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/pyglet/gl/gl.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/pyglet/gl/gl_compat.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/pyglet/gl/gl_info.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/pyglet/gl/glx.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/pyglet/gl/glx_info.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/pyglet/gl/glxext_arb.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/pyglet/gl/glxext_mesa.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/pyglet/gl/glxext_nv.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/pyglet/gl/lib.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/pyglet/gl/lib_agl.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/pyglet/gl/lib_glx.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/pyglet/gl/lib_wgl.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/pyglet/gl/wgl.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/pyglet/gl/wgl_info.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/pyglet/gl/wglext_arb.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/pyglet/gl/wglext_nv.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/pyglet/gl/win32.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/pyglet/gl/xlib.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/pyglet/graphics/__init__.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/pyglet/graphics/allocation.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/pyglet/graphics/instance.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/pyglet/graphics/vertexarray.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/pyglet/gui/__init__.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/pyglet/gui/frame.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/pyglet/gui/ninepatch.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/pyglet/gui/widgets.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/pyglet/image/__init__.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/pyglet/image/animation.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/pyglet/image/atlas.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/pyglet/image/buffer.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/pyglet/image/codecs/__init__.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/pyglet/image/codecs/bmp.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/pyglet/image/codecs/dds.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/pyglet/image/codecs/gdiplus.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/pyglet/image/codecs/gdkpixbuf2.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/pyglet/image/codecs/gif.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/pyglet/image/codecs/pil.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/pyglet/image/codecs/png.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/pyglet/image/codecs/quartz.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/pyglet/image/codecs/s3tc.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/pyglet/image/codecs/wic.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/pyglet/info.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/pyglet/input/__init__.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/pyglet/input/controller.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/pyglet/input/linux/__init__.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/pyglet/input/linux/evdev.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/pyglet/input/linux/evdev_constants.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/pyglet/input/linux/x11_xinput.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/pyglet/input/linux/x11_xinput_tablet.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/pyglet/input/macos/__init__.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/pyglet/input/macos/darwin_hid.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/pyglet/input/win32/__init__.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/pyglet/input/win32/directinput.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/pyglet/input/win32/wintab.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/pyglet/input/win32/xinput.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/pyglet/lib.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/pyglet/libs/__init__.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/pyglet/libs/darwin/__init__.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/pyglet/libs/darwin/cocoapy/__init__.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/pyglet/libs/darwin/cocoapy/cocoalibs.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/pyglet/libs/darwin/cocoapy/cocoatypes.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/pyglet/libs/darwin/cocoapy/runtime.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/pyglet/libs/darwin/coreaudio.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/pyglet/libs/darwin/quartzkey.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/pyglet/libs/egl/__init__.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/pyglet/libs/egl/egl.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/pyglet/libs/egl/eglext.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/pyglet/libs/egl/lib.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/pyglet/libs/ioctl.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/pyglet/libs/wayland/__init__.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/pyglet/libs/wayland/gbm.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/pyglet/libs/wayland/xkbcommon.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/pyglet/libs/win32/__init__.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/pyglet/libs/win32/com.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/pyglet/libs/win32/constants.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/pyglet/libs/win32/context_managers.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/pyglet/libs/win32/dinput.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/pyglet/libs/win32/libwintab.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/pyglet/libs/win32/types.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/pyglet/libs/win32/winkey.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/pyglet/libs/x11/__init__.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/pyglet/libs/x11/cursorfont.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/pyglet/libs/x11/xf86vmode.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/pyglet/libs/x11/xinerama.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/pyglet/libs/x11/xinput.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/pyglet/libs/x11/xlib.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/pyglet/libs/x11/xsync.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/pyglet/math.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/pyglet/media/__init__.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/pyglet/media/buffered_logger.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/pyglet/media/codecs/__init__.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/pyglet/media/codecs/base.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/pyglet/media/codecs/coreaudio.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/pyglet/media/codecs/ffmpeg_lib/__init__.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/pyglet/media/codecs/gstreamer.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/pyglet/media/codecs/pyogg.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/pyglet/media/codecs/wave.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/pyglet/media/codecs/wmf.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/pyglet/media/devices/__init__.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/pyglet/media/devices/base.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/pyglet/media/devices/win32.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/pyglet/media/drivers/__init__.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/pyglet/media/drivers/base.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/pyglet/media/drivers/directsound/__init__.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/pyglet/media/drivers/directsound/adaptation.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/pyglet/media/drivers/directsound/exceptions.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/pyglet/media/drivers/directsound/interface.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/pyglet/media/drivers/directsound/lib_dsound.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/pyglet/media/drivers/listener.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/pyglet/media/drivers/openal/__init__.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/pyglet/media/drivers/openal/adaptation.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/pyglet/media/drivers/openal/interface.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/pyglet/media/drivers/openal/lib_alc.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/pyglet/media/drivers/openal/lib_openal.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/pyglet/media/drivers/pulse/__init__.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/pyglet/media/drivers/pulse/adaptation.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/pyglet/media/drivers/pulse/interface.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/pyglet/media/drivers/pulse/lib_pulseaudio.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/pyglet/media/drivers/silent/__init__.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/pyglet/media/drivers/silent/adaptation.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/pyglet/media/drivers/xaudio2/__init__.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/pyglet/media/drivers/xaudio2/adaptation.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/pyglet/media/drivers/xaudio2/interface.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/pyglet/media/drivers/xaudio2/lib_xaudio2.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/pyglet/media/exceptions.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/pyglet/media/instrumentation.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/pyglet/media/player.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/pyglet/media/player_worker_thread.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/pyglet/media/synthesis.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2/pyglet}/py.typed +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/pyglet/shapes.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/pyglet/sprite.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/pyglet/text/caret.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/pyglet/text/formats/__init__.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/pyglet/text/formats/plaintext.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/pyglet/text/formats/structured.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/pyglet/text/layout/base.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/pyglet/text/layout/scrolling.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/pyglet/util.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/pyglet/window/cocoa/pyglet_delegate.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/pyglet/window/cocoa/pyglet_view.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/pyglet/window/cocoa/pyglet_window.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/pyglet/window/cocoa/systemcursor.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/pyglet/window/event.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/pyglet/window/headless/__init__.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/pyglet/window/key.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/pyglet/window/mouse.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/pyproject.toml +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/pytest.ini +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/setup.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/tests/__init__.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/tests/annotations.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/tests/base/__init__.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/tests/base/data.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/tests/base/event_loop.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/tests/base/interactive.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/tests/base/performance.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/tests/conftest.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/tests/data/fonts/README +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/tests/data/fonts/action_man.ttf +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/tests/data/fonts/action_man_bold.ttf +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/tests/data/fonts/action_man_bold_italic.ttf +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/tests/data/fonts/action_man_italic.ttf +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/tests/data/fonts/courR12-ISO8859-1.pcf +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/tests/data/images/8bpp.gif +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/tests/data/images/cursor.png +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/tests/data/images/dinosaur.gif +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/tests/data/images/gdk_close.png +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/tests/data/images/grey_background.png +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/tests/data/images/icon1.png +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/tests/data/images/icon_size1.png +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/tests/data/images/icon_size2.png +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/tests/data/images/icon_size3.png +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/tests/data/images/icon_size4.png +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/tests/data/images/icon_size5.png +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/tests/data/images/l.png +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/tests/data/images/la.png +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/tests/data/images/multitexture.png +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/tests/data/images/rgb.png +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/tests/data/images/rgb_16bpp.bmp +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/tests/data/images/rgb_1bpp.bmp +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/tests/data/images/rgb_24bpp.bmp +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/tests/data/images/rgb_32bpp.bmp +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/tests/data/images/rgb_4bpp.bmp +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/tests/data/images/rgb_8bpp.bmp +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/tests/data/images/rgb_8bpp.png +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/tests/data/images/rgb_8bpp_trans.png +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/tests/data/images/rgb_dxt1.dds +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/tests/data/images/rgba.png +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/tests/data/images/rgba_32bpp.bmp +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/tests/data/images/rgba_dxt1.dds +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/tests/data/images/rgba_dxt3.dds +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/tests/data/images/rgba_dxt5.dds +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/tests/data/images/tests.interactive.test_interactive_test_base._Test.test_1.001.png +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/tests/data/media/README +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/tests/data/media/alert.wav +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/tests/data/media/login.wav +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/tests/data/media/logout.wav +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/tests/data/media/receive.wav +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/tests/data/media/send.wav +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/tests/data/media/synthesis_sawtooth_16_11025_1ch.wav +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/tests/data/media/synthesis_sawtooth_16_44800_1ch.wav +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/tests/data/media/synthesis_silence_16_11025_1ch.wav +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/tests/data/media/synthesis_silence_16_44800_1ch.wav +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/tests/data/media/synthesis_simplefm_16_11025_1ch.wav +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/tests/data/media/synthesis_simplefm_16_44800_1ch.wav +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/tests/data/media/synthesis_sine_16_11025_1ch.wav +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/tests/data/media/synthesis_sine_16_44800_1ch.wav +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/tests/data/media/synthesis_square_16_11025_1ch.wav +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/tests/data/media/synthesis_square_16_44800_1ch.wav +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/tests/data/media/synthesis_triangle_16_11025_1ch.wav +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/tests/data/media/synthesis_triangle_16_44800_1ch.wav +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/tests/data/models/logo3d.mtl +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/tests/data/models/logo3d.obj +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/tests/integration/__init__.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/tests/integration/app/__init__.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/tests/integration/app/test_eventloop.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/tests/integration/conftest.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/tests/integration/font/test_fontconfig.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/tests/integration/font/test_freetype_face.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/tests/integration/graphics/__init__.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/tests/integration/graphics/test_allocation.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/tests/integration/graphics/test_batch_migration.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/tests/integration/graphics/test_shaders.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/tests/integration/image/__init__.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/tests/integration/image/test_gdkpixbuf2.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/tests/integration/image/test_imagegrid.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/tests/integration/image/test_texture3d.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/tests/integration/media/__init__.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/tests/integration/media/mock_player.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/tests/integration/media/test_directsound.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/tests/integration/media/test_driver.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/tests/integration/media/test_openal.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/tests/integration/media/test_player.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/tests/integration/media/test_pulse.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/tests/integration/model/__init__.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/tests/integration/platform/__init__.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/tests/integration/platform/test_win_context_managers.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/tests/integration/platform/test_win_multicore_clock.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/tests/integration/resource/__init__.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/tests/integration/resource/dir1/dir1/f3.txt +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/tests/integration/resource/dir1/f2.txt +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/tests/integration/resource/dir1/res.zip +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/tests/integration/resource/dir2/f6.txt +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/tests/integration/resource/f1.txt +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/tests/integration/resource/rgbm.png +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/tests/integration/resource/test_resource_image_loading.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/tests/integration/resource/test_resource_loading.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/tests/integration/test_integrations.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/tests/integration/text/__init__.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/tests/integration/text/test_label_creation.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/tests/integration/text/test_layout_creation.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/tests/integration/window/__init__.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/tests/integration/window/test_context_share.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/tests/integration/window/test_event_sequence.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/tests/integration/window/test_window_caption.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/tests/interactive/__init__.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/tests/interactive/conftest.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/tests/interactive/image/__init__.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/tests/interactive/image/test_image.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/tests/interactive/media/__init__.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/tests/interactive/media/test_player.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/tests/interactive/screenshots/committed/README +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/tests/interactive/screenshots/session/README +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/tests/interactive/shapes/test_shapes.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/tests/interactive/test_interactive_test_base.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/tests/interactive/text/__init__.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/tests/interactive/text/test_caret_color.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/tests/interactive/text/test_content_valign.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/tests/interactive/text/test_html.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/tests/interactive/text/test_inline_elements.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/tests/interactive/text/test_inline_elements_style_change.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/tests/interactive/text/test_multiline_wrap.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/tests/interactive/text/test_plain.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/tests/interactive/text/test_style.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/tests/interactive/window/__init__.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/tests/interactive/window/test_window_events.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/tests/interactive/window/test_window_fullscreen.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/tests/interactive/window/test_window_modes.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/tests/interactive/window/test_window_multisample.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/tests/interactive/window/test_window_open.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/tests/interactive/window/test_window_settings.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/tests/interactive/window/test_window_styles.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/tests/interactive/window/window_util.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/tests/interactive/windowed_test_base.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/tests/requirements.txt +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/tests/unit/__init__.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/tests/unit/conftest.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/tests/unit/math/test_mat.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/tests/unit/math/test_quat.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/tests/unit/math/test_vec2.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/tests/unit/math/test_vec3.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/tests/unit/math/test_vec4.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/tests/unit/media/__init__.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/tests/unit/media/test_listener.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/tests/unit/media/test_player.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/tests/unit/media/test_sources.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/tests/unit/media/test_synthesis.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/tests/unit/platform/__init__.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/tests/unit/platform/test_mac_objc.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/tests/unit/shader/__init__.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/tests/unit/shader/conftest.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/tests/unit/shader/test_shader.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/tests/unit/shapes/__init__.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/tests/unit/shapes/conftest.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/tests/unit/shapes/test_bordered_rectangle.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/tests/unit/shapes/test_shapes.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/tests/unit/test_atlas.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/tests/unit/test_clock.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/tests/unit/test_clock_freq.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/tests/unit/test_events.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/tests/unit/test_font.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/tests/unit/test_input.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/tests/unit/test_resource_path.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/tests/unit/test_sprite.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/tests/unit/test_text.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/tests/unit/text/__init__.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/tests/unit/text/test_caret.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/tests/unit/text/test_layout.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/tools/al_info.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/tools/ffmpeg/bokeh_timeline.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/tools/ffmpeg/compare.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/tools/ffmpeg/configure.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/tools/ffmpeg/extractors.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/tools/ffmpeg/fs.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/tools/ffmpeg/mp.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/tools/ffmpeg/mpexceptions.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/tools/ffmpeg/playmany.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/tools/ffmpeg/readme_ffmpeg_debbuging_branch.txt +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/tools/ffmpeg/readme_run_tests.txt +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/tools/ffmpeg/report.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/tools/ffmpeg/reports.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/tools/ffmpeg/retry_crashed.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/tools/ffmpeg/run_test_suite.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/tools/ffmpeg/summarize.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/tools/ffmpeg/test_instrumentation.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/tools/ffmpeg/timeline.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/tools/gencontrollerdb.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/tools/gengl.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/tools/genwrappers.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/tools/gl.template +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/tools/gl.xml +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/tools/gl_info.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/tools/inspect_font.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/tools/requirements.txt +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/tools/wgl.h +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/tools/wraptypes/__init__.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/tools/wraptypes/cparser.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/tools/wraptypes/ctypesparser.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/tools/wraptypes/lex.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/tools/wraptypes/preprocessor.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/tools/wraptypes/wrap.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/tools/wraptypes/yacc.py +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/website/LICENSE.txt +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/website/README.rst +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/website/assets/favicon.ico +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/website/assets/static/css/example-custom-styles.css +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/website/assets/static/images/pyglet.png +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/website/content/404.html/contents.lr +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/website/content/404.html/ngc-5793.jpg +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/website/content/authors/benjamin/contents.lr +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/website/content/authors/benjamin/pyglet.png +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/website/content/authors/contents.lr +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/website/content/blog/contents.lr +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/website/content/blog/welcome-blog/contents.lr +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/website/content/contents.lr +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/website/content/eclipse.jpg +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/website/pyglet.lektorproject +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/website/themes/lektor-icon/AUTHORS.txt +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/website/themes/lektor-icon/CHANGELOG.md +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/website/themes/lektor-icon/CONTRIBUTING.md +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/website/themes/lektor-icon/LICENSE.txt +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/website/themes/lektor-icon/NOTICE.txt +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/website/themes/lektor-icon/README.md +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/website/themes/lektor-icon/assets/static/css/bootstrap.css +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/website/themes/lektor-icon/assets/static/css/icomoon.css +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/website/themes/lektor-icon/assets/static/css/magnific-popup.css +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/website/themes/lektor-icon/assets/static/css/style.css +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/website/themes/lektor-icon/assets/static/fonts/bootstrap/glyphicons-halflings-regular.ttf +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/website/themes/lektor-icon/assets/static/fonts/bootstrap/glyphicons-halflings-regular.woff +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/website/themes/lektor-icon/assets/static/fonts/bootstrap/glyphicons-halflings-regular.woff2 +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/website/themes/lektor-icon/assets/static/fonts/icomoon/icomoon.ttf +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/website/themes/lektor-icon/assets/static/fonts/icomoon/icomoon.woff +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/website/themes/lektor-icon/assets/static/images/Preloader_2.gif +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/website/themes/lektor-icon/assets/static/images/placeholder_person.png +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/website/themes/lektor-icon/assets/static/js/jquery-3.3.1.min.js +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/website/themes/lektor-icon/assets/static/js/jquery.easing.min.js +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/website/themes/lektor-icon/assets/static/js/jquery.magnific-popup.min.js +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/website/themes/lektor-icon/assets/static/js/jquery.stellar.js +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/website/themes/lektor-icon/assets/static/js/jquery.stellar.min.js +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/website/themes/lektor-icon/assets/static/js/jquery.waypoints.min.js +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/website/themes/lektor-icon/assets/static/js/magnific-popup-options.js +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/website/themes/lektor-icon/assets/static/js/main-singlelayout.js +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/website/themes/lektor-icon/assets/static/js/main.js +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/website/themes/lektor-icon/flowblocks/content.ini +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/website/themes/lektor-icon/flowblocks/gallery.ini +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/website/themes/lektor-icon/flowblocks/gallery_item.ini +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/website/themes/lektor-icon/flowblocks/member.ini +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/website/themes/lektor-icon/flowblocks/mission.ini +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/website/themes/lektor-icon/flowblocks/mission_tab.ini +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/website/themes/lektor-icon/flowblocks/service.ini +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/website/themes/lektor-icon/flowblocks/services.ini +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/website/themes/lektor-icon/flowblocks/team.ini +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/website/themes/lektor-icon/images/blog-index.png +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/website/themes/lektor-icon/images/full-blog.png +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/website/themes/lektor-icon/images/full-page.png +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/website/themes/lektor-icon/images/gallery-404.png +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/website/themes/lektor-icon/images/gallery-singlepage.png +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/website/themes/lektor-icon/images/mainpage-screenshots.png +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/website/themes/lektor-icon/images/responsive-layout.png +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/website/themes/lektor-icon/models/404.ini +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/website/themes/lektor-icon/models/author.ini +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/website/themes/lektor-icon/models/authors.ini +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/website/themes/lektor-icon/models/blog-post.ini +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/website/themes/lektor-icon/models/blog.ini +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/website/themes/lektor-icon/models/page.ini +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/website/themes/lektor-icon/models/single-layout.ini +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/website/themes/lektor-icon/templates/404.html +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/website/themes/lektor-icon/templates/author.html +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/website/themes/lektor-icon/templates/authors.html +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/website/themes/lektor-icon/templates/blocks/content.html +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/website/themes/lektor-icon/templates/blocks/gallery.html +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/website/themes/lektor-icon/templates/blocks/mission.html +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/website/themes/lektor-icon/templates/blocks/services.html +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/website/themes/lektor-icon/templates/blocks/team.html +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/website/themes/lektor-icon/templates/blog-layout.html +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/website/themes/lektor-icon/templates/blog-post.html +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/website/themes/lektor-icon/templates/blog.html +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/website/themes/lektor-icon/templates/layout.html +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/website/themes/lektor-icon/templates/macros/blog.html +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/website/themes/lektor-icon/templates/macros/pagination.html +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/website/themes/lektor-icon/templates/none.html +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/website/themes/lektor-icon/templates/page.html +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/website/themes/lektor-icon/templates/single-layout.html +0 -0
- {pyglet-2.1.dev7 → pyglet-2.1rc2}/website/themes/lektor-icon/theme.ini +0 -0
|
@@ -1,3 +1,23 @@
|
|
|
1
|
+
pyglet 2.0.20
|
|
2
|
+
|
|
3
|
+
Changes and Improvements
|
|
4
|
+
------------------------
|
|
5
|
+
- media: add support for FFmpeg 7.x
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
pyglet 2.0.19
|
|
9
|
+
|
|
10
|
+
Changes and Improvements
|
|
11
|
+
------------------------
|
|
12
|
+
docs: update vertexbuffer.py module docstrings
|
|
13
|
+
|
|
14
|
+
Bugfixes
|
|
15
|
+
--------
|
|
16
|
+
- macos: stop F5 from autocompleting (#1229)
|
|
17
|
+
- input.base: Don't skip Axis Controls without names
|
|
18
|
+
- window.xlib: don't send on_mouse_release events for scrolling (#1235)
|
|
19
|
+
|
|
20
|
+
|
|
1
21
|
pyglet 2.0.18
|
|
2
22
|
|
|
3
23
|
Changes and Improvements
|
|
@@ -50,10 +50,11 @@ If you are migrating from an older version of pyglet, please read through
|
|
|
50
50
|
programming_guide/keyboard
|
|
51
51
|
programming_guide/mouse
|
|
52
52
|
programming_guide/input
|
|
53
|
-
programming_guide/shapes
|
|
54
53
|
programming_guide/image
|
|
55
|
-
programming_guide/media
|
|
56
54
|
programming_guide/text
|
|
55
|
+
programming_guide/media
|
|
56
|
+
programming_guide/shapes
|
|
57
|
+
programming_guide/models
|
|
57
58
|
programming_guide/resources
|
|
58
59
|
programming_guide/rendering
|
|
59
60
|
programming_guide/events
|
|
@@ -13,7 +13,7 @@ following are available:
|
|
|
13
13
|
#. The built-in pyglet WAV file decoder (always available)
|
|
14
14
|
#. Platform-specific APIs and libraries
|
|
15
15
|
#. PyOgg
|
|
16
|
-
#. :ref:`guide-supportedmedia-ffmpeg` version 4, 5, or
|
|
16
|
+
#. :ref:`guide-supportedmedia-ffmpeg` version 4, 5, 6, or 7.
|
|
17
17
|
|
|
18
18
|
Video is played into OpenGL textures, allowing real-time manipulation
|
|
19
19
|
by applications. Examples include use in 3D environments or shader-based
|
|
@@ -304,7 +304,7 @@ FFmpeg
|
|
|
304
304
|
^^^^^^
|
|
305
305
|
.. _FFmpeg's license overview: https://www.ffmpeg.org/legal.html
|
|
306
306
|
|
|
307
|
-
.. note:: The most recent pyglet release can use FFmpeg 4.X, 5.X,
|
|
307
|
+
.. note:: The most recent pyglet release can use FFmpeg versions 4.X, 5.X, 6.X, and 7.X
|
|
308
308
|
|
|
309
309
|
See :ref:`guide-media-ffmpeginstall` to learn more.
|
|
310
310
|
|
|
@@ -389,6 +389,7 @@ See the following to learn more:
|
|
|
389
389
|
* `The FFmpeg 4.4 license breakdown <https://ffmpeg.org/doxygen/4.4/md_LICENSE.html>`_
|
|
390
390
|
* `The FFmpeg 5.1 license breakdown <https://ffmpeg.org/doxygen/5.1/md_LICENSE.html>`_
|
|
391
391
|
* `The FFmpeg 6.0 license breakdown <https://ffmpeg.org/doxygen/6.0/md_LICENSE.html>`_
|
|
392
|
+
* `The FFmpeg 7.0 license breakdown <https://ffmpeg.org/doxygen/7.0/md_LICENSE.html>`_
|
|
392
393
|
|
|
393
394
|
.. _guide-media-ffmpeginstall:
|
|
394
395
|
|
|
@@ -400,8 +401,11 @@ in the `FFmpeg download <https://www.ffmpeg.org/download.html>`_ page. You must
|
|
|
400
401
|
choose the shared build for the targeted OS with the architecture similar to
|
|
401
402
|
the Python interpreter.
|
|
402
403
|
|
|
403
|
-
All recent pyglet versions support FFmpeg 4.x
|
|
404
|
-
|
|
404
|
+
All recent pyglet versions support FFmpeg 4.x.
|
|
405
|
+
|
|
406
|
+
* Support for version 5.X requires at least: 1.5.28.
|
|
407
|
+
* Support for version 6.X requires at least: 2.0.8.
|
|
408
|
+
* Support for version 7.X requires at least: 2.0.20.
|
|
405
409
|
|
|
406
410
|
Choose the correct architecture depending on the targeted
|
|
407
411
|
**Python interpreter**. If you're shipping your project with a 32 bits
|
|
@@ -450,6 +454,8 @@ For Linux and Mac OS::
|
|
|
450
454
|
* Exiting gracefully after the the user clicks OK on a dialog
|
|
451
455
|
* Limiting the formats your project will attempt to load
|
|
452
456
|
|
|
457
|
+
If you still have issues with the FFmpeg not being recognized, try enabling the debug flags to see if any relevant
|
|
458
|
+
information is output: ``pyglet.options.debug_lib`` and/or ``pyglet.options.debug_media``.
|
|
453
459
|
|
|
454
460
|
.. _guide-media-loading:
|
|
455
461
|
|
|
@@ -12,7 +12,10 @@ are having an issue that is not covered here, please open up an issue ticket on
|
|
|
12
12
|
|
|
13
13
|
Window "HiDPI" support
|
|
14
14
|
----------------------
|
|
15
|
-
|
|
15
|
+
The v2.1 release now provides a lot more control over how modern 'HiDPI' displays
|
|
16
|
+
are treated. This includes "retina" displays, or any display that has a non-0% zoom
|
|
17
|
+
or scale (such as 4K displays). This is exposed as new pyglet options. See
|
|
18
|
+
``pyglet.options.dpi_scaling`` for more information.
|
|
16
19
|
|
|
17
20
|
Labels & Text Layouts
|
|
18
21
|
---------------------
|
|
@@ -84,7 +87,7 @@ as booleans for a quick workaround when migrating, you can do something like thi
|
|
|
84
87
|
|
|
85
88
|
|
|
86
89
|
Vectors can also be useful for analog sticks, because it gives an easy way to
|
|
87
|
-
calculate dead-zones using
|
|
90
|
+
calculate dead-zones using ``.length()``. For example::
|
|
88
91
|
|
|
89
92
|
@controller.event
|
|
90
93
|
def on_stick_motion(controller, name, vector):
|
|
@@ -102,8 +105,8 @@ that the maximum value stays within range. For example::
|
|
|
102
105
|
|
|
103
106
|
vector = min(vector, vector.normalize())
|
|
104
107
|
|
|
105
|
-
You can also of course directly access the individual
|
|
106
|
-
|
|
108
|
+
You can also of course directly access the individual ``Vec2.x`` & ``Vec2.y`` attributes,
|
|
109
|
+
if you want to . See :py:class:`~pyglet.math.Vec2` for more details on vector types.
|
|
107
110
|
|
|
108
111
|
Gui
|
|
109
112
|
---
|
|
@@ -116,8 +119,8 @@ The :py:class:`~pyglet.gui.widget.ToggleButton` and :py:class:`~pyglet.gui.widge
|
|
|
116
119
|
widgets have a small change. Instead of the image arguments being named "pressed"
|
|
117
120
|
and "depressed", they has been renamed to the correct "pressed" and "unpressed".
|
|
118
121
|
|
|
119
|
-
Math
|
|
120
|
-
|
|
122
|
+
Math
|
|
123
|
+
----
|
|
121
124
|
In the :py:mod:`~pyglet.math` module, vector types (:py:class:`~pyglet.math.Vec2`,
|
|
122
125
|
:py:class:`~pyglet.math.Vec3`, :py:class:`~pyglet.math.Vec4`) are now
|
|
123
126
|
immutable; all operations will return a new object. In addition, all vector objects
|
|
@@ -139,12 +142,23 @@ way as vectors). For example:
|
|
|
139
142
|
Matrix objects are generally created via their helper methods, so this change should
|
|
140
143
|
hopefully not require any code updates for most users.
|
|
141
144
|
|
|
145
|
+
Models
|
|
146
|
+
------
|
|
147
|
+
The :py:mod:`~pyglet.model` module has seen some changes. This is an undocumented
|
|
148
|
+
WIP module for pyglet 2.0, and it remains so pyglet 2.1. That said, it's in a more
|
|
149
|
+
usable state now. The first change is that :py:meth:`~pyglet.model.load` now returns
|
|
150
|
+
a ``Scene`` object instead of a ``Model`` object. The Scene is a new, "pure data"
|
|
151
|
+
intermediate representation of a 3D scene, that closely mimics the layout of the glTF
|
|
152
|
+
format. The :py:meth:`~pyglet.model.Scene.create_models` method can be used to create
|
|
153
|
+
``Model`` instances from the Scene, but the Scene data can also be manually iterated
|
|
154
|
+
over for more advanced use cases.
|
|
155
|
+
|
|
142
156
|
Canvas module
|
|
143
157
|
-------------
|
|
144
|
-
The
|
|
158
|
+
The ``pyglet.canvas`` module has been renamed to ``pyglet.display``. The "canvas"
|
|
145
159
|
concept was a work-in-progress in legacy pyglet, and was never fully fleshed out.
|
|
146
160
|
It appears to have been meant to allow arbitrary renderable areas, but this type
|
|
147
|
-
of functionality can now be easily accomplished with Framebuffers. The name
|
|
161
|
+
of functionality can now be easily accomplished with Framebuffers. The name ``display``
|
|
148
162
|
is a more accurate representation of what the code in the module actually relates to.
|
|
149
163
|
The usage is the same, with just the name change::
|
|
150
164
|
|
|
@@ -71,10 +71,25 @@ def on_resize(width, height):
|
|
|
71
71
|
hello_label.position = (window.width // 2, window.height // 2, 0)
|
|
72
72
|
|
|
73
73
|
|
|
74
|
+
screens = pyglet.display.get_display().get_screens()
|
|
75
|
+
selected_screen = screens[0]
|
|
76
|
+
|
|
74
77
|
@window.event
|
|
75
78
|
def on_key_press(symbol, modifiers):
|
|
79
|
+
global selected_screen
|
|
80
|
+
if len(screens) > 1:
|
|
81
|
+
if symbol == pyglet.window.key._1:
|
|
82
|
+
selected_screen = screens[1]
|
|
83
|
+
elif symbol == pyglet.window.key._0:
|
|
84
|
+
selected_screen = screens[0]
|
|
85
|
+
|
|
76
86
|
if symbol == pyglet.window.key.SPACE:
|
|
77
87
|
window.set_size(500, 300)
|
|
88
|
+
elif symbol == pyglet.window.key.F:
|
|
89
|
+
window.set_fullscreen(False, screen=selected_screen)
|
|
90
|
+
elif symbol == pyglet.window.key.G:
|
|
91
|
+
window.set_fullscreen(True, screen=selected_screen)
|
|
92
|
+
|
|
78
93
|
|
|
79
94
|
|
|
80
95
|
@window.event
|
|
@@ -10,17 +10,16 @@ to your needs for first person games.
|
|
|
10
10
|
"""
|
|
11
11
|
|
|
12
12
|
from __future__ import annotations
|
|
13
|
+
|
|
13
14
|
import weakref
|
|
14
|
-
|
|
15
|
+
|
|
15
16
|
from math import radians, degrees
|
|
16
17
|
|
|
17
18
|
import pyglet
|
|
18
|
-
from pyglet.window import key as _key
|
|
19
19
|
|
|
20
20
|
from pyglet.gl import glEnable, GL_DEPTH_TEST, GL_CULL_FACE
|
|
21
21
|
from pyglet.math import Vec2, Vec3, Mat4, clamp
|
|
22
|
-
|
|
23
|
-
MODULE_PATH = Path(__file__).parent
|
|
22
|
+
from pyglet.window import key as _key
|
|
24
23
|
|
|
25
24
|
|
|
26
25
|
class FPSCamera:
|
|
@@ -346,8 +345,8 @@ if __name__ == "__main__":
|
|
|
346
345
|
glEnable(GL_DEPTH_TEST)
|
|
347
346
|
glEnable(GL_CULL_FACE)
|
|
348
347
|
|
|
349
|
-
model_logo = pyglet.model
|
|
350
|
-
model_box = pyglet.model
|
|
348
|
+
model_logo = pyglet.resource.model("logo3d.obj", batch=batch)
|
|
349
|
+
model_box = pyglet.resource.model("box.obj", batch=batch)
|
|
351
350
|
|
|
352
351
|
# Camera controls the global projection & view matrixes:
|
|
353
352
|
camera = FPSCamera(window, position=Vec3(0.0, 0.0, 5.0))
|
|
@@ -44,8 +44,10 @@ if __name__ == "__main__":
|
|
|
44
44
|
glEnable(GL_DEPTH_TEST)
|
|
45
45
|
glEnable(GL_CULL_FACE)
|
|
46
46
|
|
|
47
|
-
|
|
48
|
-
|
|
47
|
+
logo_scene = pyglet.resource.scene('logo3d.obj')
|
|
48
|
+
box_scene = pyglet.resource.scene('box.obj')
|
|
49
|
+
model_logo = logo_scene.create_models(batch=batch)[0] # only one model in this scene
|
|
50
|
+
model_box = box_scene.create_models(batch=batch)[0] # only one model in this scene
|
|
49
51
|
|
|
50
52
|
# Set the application wide view matrix (camera):
|
|
51
53
|
window.view = Mat4.look_at(position=Vec3(0, 0, 5), target=Vec3(0, 0, 0), up=Vec3(0, 1, 0))
|
|
@@ -15,7 +15,7 @@ if TYPE_CHECKING:
|
|
|
15
15
|
from typing import Any, Callable, ItemsView, Sized
|
|
16
16
|
|
|
17
17
|
#: The release version
|
|
18
|
-
version = '2.1.
|
|
18
|
+
version = '2.1.rc2'
|
|
19
19
|
__version__ = version
|
|
20
20
|
|
|
21
21
|
MIN_PYTHON_VERSION = 3, 8
|
|
@@ -247,7 +247,7 @@ class Options:
|
|
|
247
247
|
|
|
248
248
|
.. versionadded:: 2.0.5"""
|
|
249
249
|
|
|
250
|
-
dpi_scaling: Literal["real", "scaled", "stretch"] = "real"
|
|
250
|
+
dpi_scaling: Literal["real", "scaled", "stretch", "platform"] = "real"
|
|
251
251
|
"""For 'HiDPI' displays, Window behavior can differ between operating systems. Defaults to `'real'`.
|
|
252
252
|
|
|
253
253
|
The current options are an attempt to create consistent behavior across all of the operating systems.
|
|
@@ -270,6 +270,13 @@ class Options:
|
|
|
270
270
|
rescaling and repositioning of content will be necessary, but at the cost of blurry content depending on the extent
|
|
271
271
|
of the stretch. For example, 800x600 at 150% DPI will be 800x600 for `window.get_size()` and 1200x900 for
|
|
272
272
|
`window.get_framebuffer_size()`.
|
|
273
|
+
|
|
274
|
+
`'platform'`: A DPI aware window is created, however window sizing and framebuffer sizing is not interfered with
|
|
275
|
+
by Pyglet. Final sizes are dictated by the platform the window was created on. It is up to the user to make any
|
|
276
|
+
platform adjustments themselves such as sizing on a platform, mouse coordinate adjustments, or framebuffer size
|
|
277
|
+
handling. On Windows and X11, the framebuffer and the requested window size will always match in pixels 1:1. On
|
|
278
|
+
MacOS, depending on a Hi-DPI display, you may get a different sized framebuffer than the window size. This option
|
|
279
|
+
does allow `window.dpi` and `window.scale` to return their respective values.
|
|
273
280
|
"""
|
|
274
281
|
|
|
275
282
|
shader_bind_management: bool = True
|
|
@@ -25,16 +25,17 @@ if TYPE_CHECKING:
|
|
|
25
25
|
|
|
26
26
|
class _Worker(Thread):
|
|
27
27
|
"""A worker thread to pop and run jobs."""
|
|
28
|
-
def __init__(self, workqueue: Queue, exitevent: Event,
|
|
29
|
-
super().__init__(
|
|
30
|
-
self.
|
|
31
|
-
self.
|
|
28
|
+
def __init__(self, workqueue: Queue, exitevent: Event, index: int) -> None:
|
|
29
|
+
super().__init__(daemon=True)
|
|
30
|
+
self._queue = workqueue
|
|
31
|
+
self._exit = exitevent
|
|
32
|
+
self._index = index
|
|
32
33
|
self.start()
|
|
33
34
|
|
|
34
35
|
def run(self) -> None:
|
|
35
36
|
"""Parallel thread of execution."""
|
|
36
|
-
_exit = self.
|
|
37
|
-
_queue = self.
|
|
37
|
+
_exit = self._exit
|
|
38
|
+
_queue = self._queue
|
|
38
39
|
while not _exit.is_set():
|
|
39
40
|
func, args = _queue.get()
|
|
40
41
|
func(*args)
|
|
@@ -51,8 +52,9 @@ class JobExecutor:
|
|
|
51
52
|
`concurrent.futures` module, but does not share any code with those classes.
|
|
52
53
|
Instead, it is a more light-weight implementation intended for execution of
|
|
53
54
|
highly parallizable functions (jobs). A key difference is that JobExecutor
|
|
54
|
-
does not return `Futures
|
|
55
|
-
|
|
55
|
+
does not return `Futures`. Submitted jobs must be self-contained, or handle
|
|
56
|
+
returning values by other mechanisms. The :py:meth:`~sync` method can be
|
|
57
|
+
used to wait for all currently submitted jobs to complete.
|
|
56
58
|
"""
|
|
57
59
|
|
|
58
60
|
def __init__(self, max_workers: int | None = None) -> None:
|
|
@@ -65,7 +67,7 @@ class JobExecutor:
|
|
|
65
67
|
self._max_workers = max_workers or os.cpu_count() // 2
|
|
66
68
|
self._exitevent = Event()
|
|
67
69
|
self._queue = Queue()
|
|
68
|
-
self._threads = [_Worker(self._queue, self._exitevent,
|
|
70
|
+
self._threads = [_Worker(self._queue, self._exitevent, i) for i in range(self._max_workers)]
|
|
69
71
|
|
|
70
72
|
def submit(self, func: Callable, *args: Any) -> None:
|
|
71
73
|
"""Submit a job to be executed on .
|
|
@@ -82,7 +82,7 @@ def add_user_font(font: UserDefinedFontBase) -> None:
|
|
|
82
82
|
font_hold = shared_object_space.pyglet_font_font_hold
|
|
83
83
|
|
|
84
84
|
# Look for font name in font cache
|
|
85
|
-
descriptor = (font.name, font.size, font.
|
|
85
|
+
descriptor = (font.name, font.size, font.weight, font.italic, font.stretch, font.dpi)
|
|
86
86
|
if descriptor in font_cache:
|
|
87
87
|
msg = f"A font with parameters {descriptor} has already been created."
|
|
88
88
|
raise Exception(msg)
|
|
@@ -105,7 +105,7 @@ def have_font(name: str) -> bool:
|
|
|
105
105
|
return name in _user_fonts or _system_font_class.have_font(name)
|
|
106
106
|
|
|
107
107
|
|
|
108
|
-
def load(name: str | Iterable[str] | None = None, size: float | None = None,
|
|
108
|
+
def load(name: str | Iterable[str] | None = None, size: float | None = None, weight: str = "normal",
|
|
109
109
|
italic: bool | str = False, stretch: bool | str = False, dpi: int | None = None) -> Font:
|
|
110
110
|
"""Load a font for rendering.
|
|
111
111
|
|
|
@@ -118,10 +118,9 @@ def load(name: str | Iterable[str] | None = None, size: float | None = None, bol
|
|
|
118
118
|
size:
|
|
119
119
|
Size of the font, in points. The returned font may be an exact
|
|
120
120
|
match or the closest available.
|
|
121
|
-
|
|
122
|
-
If
|
|
123
|
-
family and size.
|
|
124
|
-
can be provided specifying the weight. For example, "semibold" or "light".
|
|
121
|
+
weight:
|
|
122
|
+
If set, a specific weight variant is returned if one exists for the given font
|
|
123
|
+
family and size. The weight is provided as a string. For example: "bold" or "light".
|
|
125
124
|
italic:
|
|
126
125
|
If True, an italic variant is returned, if one exists for the given family and size. For some Font
|
|
127
126
|
renderers, italics may have an "oblique" variation which can be specified as a string.
|
|
@@ -166,16 +165,17 @@ def load(name: str | Iterable[str] | None = None, size: float | None = None, bol
|
|
|
166
165
|
name = found_name
|
|
167
166
|
|
|
168
167
|
# Look for font name in font cache
|
|
169
|
-
descriptor = (name, size,
|
|
168
|
+
descriptor = (name, size, weight, italic, stretch, dpi)
|
|
170
169
|
if descriptor in font_cache:
|
|
171
170
|
return font_cache[descriptor]
|
|
172
171
|
|
|
173
172
|
# Not in cache, create from scratch
|
|
174
|
-
font = _system_font_class(name, size,
|
|
173
|
+
font = _system_font_class(name, size, weight=weight, italic=italic, stretch=stretch, dpi=dpi)
|
|
174
|
+
|
|
175
175
|
# Save parameters for new-style layout classes to recover
|
|
176
176
|
# TODO: add properties to the base Font so completion is proper:
|
|
177
177
|
font.size = size
|
|
178
|
-
font.
|
|
178
|
+
font.weight = weight
|
|
179
179
|
font.italic = italic
|
|
180
180
|
font.stretch = stretch
|
|
181
181
|
font.dpi = dpi
|
|
@@ -95,6 +95,9 @@ DWRITE_FONT_WEIGHT_HEAVY = 900
|
|
|
95
95
|
DWRITE_FONT_WEIGHT_EXTRA_BLACK = 950
|
|
96
96
|
|
|
97
97
|
name_to_weight = {
|
|
98
|
+
True: DWRITE_FONT_WEIGHT_BOLD, # Temporary alias for attributed text
|
|
99
|
+
False: DWRITE_FONT_WEIGHT_NORMAL, # Temporary alias for attributed text
|
|
100
|
+
None: DWRITE_FONT_WEIGHT_NORMAL, # Temporary alias for attributed text
|
|
98
101
|
"thin": DWRITE_FONT_WEIGHT_THIN,
|
|
99
102
|
"extralight": DWRITE_FONT_WEIGHT_EXTRA_LIGHT,
|
|
100
103
|
"ultralight": DWRITE_FONT_WEIGHT_ULTRA_LIGHT,
|
|
@@ -1944,7 +1947,7 @@ class DirectWriteGlyphRenderer(base.GlyphRenderer):
|
|
|
1944
1947
|
return glyph
|
|
1945
1948
|
|
|
1946
1949
|
def render_using_layout(self, text: str) -> Glyph | None:
|
|
1947
|
-
"""This will render text given the built
|
|
1950
|
+
"""This will render text given the built-in DirectWrite layout.
|
|
1948
1951
|
|
|
1949
1952
|
This process allows us to take advantage of color glyphs and fallback handling that is built into DirectWrite.
|
|
1950
1953
|
This can also handle shaping and many other features if you want to render directly to a texture.
|
|
@@ -2045,7 +2048,7 @@ class Win32DirectWriteFont(base.Font):
|
|
|
2045
2048
|
glyph_renderer_class = DirectWriteGlyphRenderer
|
|
2046
2049
|
texture_internalformat = pyglet.gl.GL_RGBA
|
|
2047
2050
|
|
|
2048
|
-
def __init__(self, name: str, size: float,
|
|
2051
|
+
def __init__(self, name: str, size: float, weight: str = "normal", italic: bool | str = False,
|
|
2049
2052
|
stretch: bool | str = False, dpi: int | None = None, locale: str | None = None) -> None:
|
|
2050
2053
|
self._filename: str | None = None
|
|
2051
2054
|
self._advance_cache = {} # Stores glyph's by the indice and advance.
|
|
@@ -2056,7 +2059,7 @@ class Win32DirectWriteFont(base.Font):
|
|
|
2056
2059
|
name = self._default_name
|
|
2057
2060
|
|
|
2058
2061
|
self._name = name
|
|
2059
|
-
self.
|
|
2062
|
+
self.weight = weight
|
|
2060
2063
|
self.size = size
|
|
2061
2064
|
self.italic = italic
|
|
2062
2065
|
self.stretch = stretch
|
|
@@ -2074,13 +2077,7 @@ class Win32DirectWriteFont(base.Font):
|
|
|
2074
2077
|
# From DPI to DIP (Device Independent Pixels) which is what the fonts rely on.
|
|
2075
2078
|
self._real_size = (self.size * self.dpi) // 72
|
|
2076
2079
|
|
|
2077
|
-
|
|
2078
|
-
if isinstance(self.bold, str):
|
|
2079
|
-
self._weight = name_to_weight[self.bold]
|
|
2080
|
-
else:
|
|
2081
|
-
self._weight = DWRITE_FONT_WEIGHT_BOLD
|
|
2082
|
-
else:
|
|
2083
|
-
self._weight = DWRITE_FONT_WEIGHT_NORMAL
|
|
2080
|
+
self._weight = name_to_weight[self.weight]
|
|
2084
2081
|
|
|
2085
2082
|
if self.italic:
|
|
2086
2083
|
if isinstance(self.italic, str):
|
|
@@ -2549,26 +2546,26 @@ class Win32DirectWriteFont(base.Font):
|
|
|
2549
2546
|
return None, None
|
|
2550
2547
|
|
|
2551
2548
|
@classmethod
|
|
2552
|
-
def find_font_face(cls, font_name: str,
|
|
2549
|
+
def find_font_face(cls, font_name: str, weight: str, italic: bool | str, stretch: bool | str) -> tuple[
|
|
2553
2550
|
IDWriteFont | None, IDWriteFontCollection | None]:
|
|
2554
|
-
"""This will search font collections for legacy RBIZ names. However, matching to
|
|
2551
|
+
"""This will search font collections for legacy RBIZ names. However, matching to weight, italic, stretch is
|
|
2555
2552
|
problematic in that there are many values. We parse the font name looking for matches to the name database,
|
|
2556
2553
|
and attempt to pick the closest match.
|
|
2557
2554
|
This will search all fonts on the system and custom loaded, and all of their font faces. Returns a collection
|
|
2558
2555
|
and IDWriteFont if successful.
|
|
2559
2556
|
"""
|
|
2560
|
-
|
|
2557
|
+
p_weight, p_italic, p_stretch = cls.parse_name(font_name, weight, italic, stretch)
|
|
2561
2558
|
|
|
2562
2559
|
_debug_print(f"directwrite: '{font_name}' not found. Attempting legacy name lookup in all collections.")
|
|
2563
2560
|
if cls._custom_collection:
|
|
2564
|
-
collection_idx = cls.find_legacy_font(cls._custom_collection, font_name,
|
|
2561
|
+
collection_idx = cls.find_legacy_font(cls._custom_collection, font_name, p_weight, p_italic, p_stretch)
|
|
2565
2562
|
if collection_idx is not None:
|
|
2566
2563
|
return collection_idx, cls._custom_collection
|
|
2567
2564
|
|
|
2568
2565
|
sys_collection = IDWriteFontCollection()
|
|
2569
2566
|
cls._write_factory.GetSystemFontCollection(byref(sys_collection), 1)
|
|
2570
2567
|
|
|
2571
|
-
collection_idx = cls.find_legacy_font(sys_collection, font_name,
|
|
2568
|
+
collection_idx = cls.find_legacy_font(sys_collection, font_name, p_weight, p_italic, p_stretch)
|
|
2572
2569
|
if collection_idx is not None:
|
|
2573
2570
|
return collection_idx, sys_collection
|
|
2574
2571
|
|
|
@@ -2582,7 +2579,7 @@ class Win32DirectWriteFont(base.Font):
|
|
|
2582
2579
|
return False
|
|
2583
2580
|
|
|
2584
2581
|
@staticmethod
|
|
2585
|
-
def parse_name(font_name: str, weight:
|
|
2582
|
+
def parse_name(font_name: str, weight: str, style: int, stretch: int) -> tuple[str, int, int]:
|
|
2586
2583
|
"""Attempt at parsing any special names in a font for legacy checks. Takes the first found."""
|
|
2587
2584
|
font_name = font_name.lower()
|
|
2588
2585
|
split_name = font_name.split(" ")
|
|
@@ -2611,7 +2608,7 @@ class Win32DirectWriteFont(base.Font):
|
|
|
2611
2608
|
return found_weight, found_style, found_stretch
|
|
2612
2609
|
|
|
2613
2610
|
@staticmethod
|
|
2614
|
-
def find_legacy_font(collection: IDWriteFontCollection, font_name: str,
|
|
2611
|
+
def find_legacy_font(collection: IDWriteFontCollection, font_name: str, weight: str, italic: bool | str, stretch: bool | str, full_debug: bool=False) -> IDWriteFont | None:
|
|
2615
2612
|
coll_count = collection.GetFontFamilyCount()
|
|
2616
2613
|
|
|
2617
2614
|
assert _debug_print(f"directwrite: Found {coll_count} fonts in collection.")
|
|
@@ -2681,7 +2678,7 @@ class Win32DirectWriteFont(base.Font):
|
|
|
2681
2678
|
|
|
2682
2679
|
# If we have matches, we've already parsed through the proper family. Now try to match.
|
|
2683
2680
|
if matches:
|
|
2684
|
-
write_font = Win32DirectWriteFont.match_closest_font(matches,
|
|
2681
|
+
write_font = Win32DirectWriteFont.match_closest_font(matches, weight, italic, stretch)
|
|
2685
2682
|
|
|
2686
2683
|
# Cleanup other matches not used.
|
|
2687
2684
|
for match in matches:
|
|
@@ -2693,7 +2690,7 @@ class Win32DirectWriteFont(base.Font):
|
|
|
2693
2690
|
return None
|
|
2694
2691
|
|
|
2695
2692
|
@staticmethod
|
|
2696
|
-
def match_closest_font(font_list: list[tuple[int, int, int, IDWriteFont]],
|
|
2693
|
+
def match_closest_font(font_list: list[tuple[int, int, int, IDWriteFont]], weight: str, italic: int, stretch: int) -> IDWriteFont | None:
|
|
2697
2694
|
"""Match the closest font to the parameters specified.
|
|
2698
2695
|
|
|
2699
2696
|
If a full match is not found, a secondary match will be found based on similar features. This can probably
|
|
@@ -2704,18 +2701,18 @@ class Win32DirectWriteFont(base.Font):
|
|
|
2704
2701
|
(f_weight, f_style, f_stretch, writefont) = match
|
|
2705
2702
|
|
|
2706
2703
|
# Found perfect match, no need for the rest.
|
|
2707
|
-
if f_weight ==
|
|
2704
|
+
if f_weight == weight and f_style == italic and f_stretch == stretch:
|
|
2708
2705
|
_debug_print(
|
|
2709
|
-
f"directwrite: full match found. (
|
|
2706
|
+
f"directwrite: full match found. (weight: {f_weight}, italic: {f_style}, stretch: {f_stretch})")
|
|
2710
2707
|
return writefont
|
|
2711
2708
|
|
|
2712
2709
|
prop_match = 0
|
|
2713
2710
|
similar_match = 0
|
|
2714
2711
|
# Look for a full match, otherwise look for close enough.
|
|
2715
2712
|
# For example, Arial Black only has Oblique, not Italic, but good enough if you want slanted text.
|
|
2716
|
-
if f_weight ==
|
|
2713
|
+
if f_weight == weight:
|
|
2717
2714
|
prop_match += 1
|
|
2718
|
-
elif
|
|
2715
|
+
elif weight != DWRITE_FONT_WEIGHT_NORMAL and f_weight != DWRITE_FONT_WEIGHT_NORMAL:
|
|
2719
2716
|
similar_match += 1
|
|
2720
2717
|
|
|
2721
2718
|
if f_style == italic:
|
|
@@ -2737,7 +2734,7 @@ class Win32DirectWriteFont(base.Font):
|
|
|
2737
2734
|
# Take the first match after sorting.
|
|
2738
2735
|
closest_match = closest[0]
|
|
2739
2736
|
_debug_print(f"directwrite: falling back to partial match. "
|
|
2740
|
-
f"(
|
|
2737
|
+
f"(weight: {closest_match[2]}, italic: {closest_match[3]}, stretch: {closest_match[4]})")
|
|
2741
2738
|
return closest_match[5]
|
|
2742
2739
|
|
|
2743
2740
|
return None
|