pyglet 2.1.dev3__tar.gz → 2.1.dev4__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.dev3 → pyglet-2.1.dev4}/PKG-INFO +7 -3
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/README.md +6 -2
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/RELEASE_NOTES +26 -2
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/contrib/toys/follow_mouse.py +11 -1
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/doc/index.rst +1 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/doc/internal/doc.rst +31 -1
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/doc/programming_guide/events.rst +1 -1
- pyglet-2.1.dev4/doc/programming_guide/math.rst +115 -0
- pyglet-2.1.dev4/doc/programming_guide/opengles.rst +94 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/doc/programming_guide/quickstart.rst +4 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/doc/programming_guide/rendering.rst +28 -10
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/examples/events/register_event_type.py +1 -1
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/examples/events/window_platform_event.py +1 -2
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/examples/game/version1/asteroid.py +1 -1
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/examples/game/version2/asteroid.py +1 -1
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/examples/game/version2/game/load.py +3 -1
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/examples/game/version3/asteroid.py +1 -1
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/examples/game/version3/game/player.py +2 -1
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/examples/game/version3/game/resources.py +1 -1
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/examples/game/version4/asteroid.py +1 -1
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/examples/game/version4/game/player.py +2 -1
- {pyglet-2.1.dev3/examples/game/version5 → pyglet-2.1.dev4/examples/game/version4}/game/resources.py +1 -1
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/examples/game/version5/asteroid.py +2 -2
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/examples/game/version5/game/player.py +2 -1
- {pyglet-2.1.dev3/examples/game/version4 → pyglet-2.1.dev4/examples/game/version5}/game/resources.py +1 -1
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/examples/graphics/image_convert.py +0 -1
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/examples/graphics/image_display.py +7 -2
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/examples/gui/widgets.py +4 -4
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/examples/input/input.py +0 -1
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/examples/input/joystick.py +0 -1
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/examples/media/media_info.py +1 -1
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/examples/media/media_player.py +12 -6
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/examples/media/noisy/noisy.py +0 -1
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/examples/media/soundspace/reader.py +2 -1
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/examples/media/soundspace/soundspace.py +5 -5
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/examples/media/synthesizer.py +1 -1
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/examples/media/video.py +0 -1
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/examples/model/fpscamera.py +5 -5
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/examples/opengl/egl_context.py +7 -2
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/examples/opengl/minimal_shader.py +12 -1
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/examples/opengl/opengl_core.py +6 -3
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/examples/opengl/torus.py +8 -1
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/examples/programming_guide/events.py +0 -1
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/examples/programming_guide/hello_world.py +2 -2
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/examples/shapes.py +1 -1
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/examples/sprite/display_sprite.py +1 -1
- pyglet-2.1.dev4/examples/text/advanced_font.py +59 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/examples/text/html_label.py +2 -2
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/examples/text/text_input.py +2 -2
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/examples/timer.py +1 -1
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/examples/window/camera_group.py +2 -3
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/experimental/dist_field/README +1 -2
- pyglet-2.1.dev4/experimental/dist_field/renderfield.py +269 -0
- pyglet-2.1.dev4/experimental/instancing/sprite_instance.py +70 -0
- pyglet-2.1.dev4/experimental/instancing/sprite_instance_object.py +100 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/experimental/svg_test.py +22 -1
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/make.py +7 -3
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/pyglet/__init__.py +55 -29
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/pyglet/__init__.pyi +7 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/pyglet/app/win32.py +1 -1
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/pyglet/display/__init__.py +4 -2
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/pyglet/display/cocoa.py +4 -4
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/pyglet/display/headless.py +1 -1
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/pyglet/display/win32.py +22 -2
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/pyglet/display/xlib.py +13 -9
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/pyglet/event.py +21 -14
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/pyglet/experimental/particles.py +73 -39
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/pyglet/font/__init__.py +4 -6
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/pyglet/font/directwrite.py +5 -4
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/pyglet/font/freetype.py +3 -3
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/pyglet/font/freetype_lib.py +3 -3
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/pyglet/font/quartz.py +1 -1
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/pyglet/font/win32.py +4 -4
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/pyglet/gl/__init__.py +23 -16
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/pyglet/gl/agl.py +1 -1
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/pyglet/gl/base.py +66 -37
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/pyglet/gl/cocoa.py +69 -61
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/pyglet/gl/gl.py +5 -2
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/pyglet/gl/gl_compat.py +18 -3
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/pyglet/gl/gl_info.py +47 -64
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/pyglet/gl/glx.py +10 -19
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/pyglet/gl/glx_info.py +38 -19
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/pyglet/gl/glxext_arb.py +6 -10
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/pyglet/gl/glxext_mesa.py +1 -1
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/pyglet/gl/glxext_nv.py +4 -8
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/pyglet/gl/headless.py +54 -40
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/pyglet/gl/lib.py +21 -17
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/pyglet/gl/lib_agl.py +10 -4
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/pyglet/gl/lib_glx.py +16 -8
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/pyglet/gl/lib_wgl.py +17 -11
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/pyglet/gl/wgl_info.py +10 -12
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/pyglet/gl/win32.py +77 -56
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/pyglet/gl/xlib.py +63 -32
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/pyglet/graphics/__init__.py +246 -159
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/pyglet/graphics/allocation.py +61 -81
- pyglet-2.1.dev4/pyglet/graphics/instance.py +77 -0
- pyglet-2.1.dev4/pyglet/graphics/shader.py +1493 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/pyglet/graphics/vertexarray.py +20 -11
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/pyglet/graphics/vertexbuffer.py +106 -78
- pyglet-2.1.dev4/pyglet/graphics/vertexdomain.py +888 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/pyglet/image/__init__.py +104 -85
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/pyglet/image/codecs/__init__.py +9 -8
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/pyglet/lib.py +53 -55
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/pyglet/libs/win32/__init__.py +1 -1
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/pyglet/libs/win32/dinput.py +12 -10
- pyglet-2.1.dev4/pyglet/math.py +1486 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/pyglet/shapes.py +6 -1
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/pyglet/text/__init__.py +23 -4
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/pyglet/text/caret.py +4 -4
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/pyglet/text/document.py +16 -16
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/pyglet/text/formats/html.py +4 -4
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/pyglet/text/formats/structured.py +3 -3
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/pyglet/text/layout/base.py +55 -36
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/pyglet/window/__init__.py +21 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/pyglet/window/cocoa/pyglet_textview.py +8 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/pyglet/window/win32/__init__.py +5 -13
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/pyglet/window/xlib/__init__.py +1 -0
- pyglet-2.1.dev4/pyproject.toml +112 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/tests/interactive/text/test_style.py +4 -10
- pyglet-2.1.dev3/tests/unit/test_math.py → pyglet-2.1.dev4/tests/unit/math/test_mat.py +34 -42
- pyglet-2.1.dev4/tests/unit/math/test_quat.py +33 -0
- pyglet-2.1.dev4/tests/unit/math/test_vec2.py +416 -0
- pyglet-2.1.dev4/tests/unit/math/test_vec3.py +377 -0
- pyglet-2.1.dev4/tests/unit/math/test_vec4.py +397 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/tools/gengl.py +21 -22
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/tools/wraptypes/wrap.py +52 -57
- pyglet-2.1.dev3/doc/README.md +0 -48
- pyglet-2.1.dev3/doc/programming_guide/math.rst +0 -76
- pyglet-2.1.dev3/examples/text/advanced_font.py +0 -49
- pyglet-2.1.dev3/experimental/dist_field/renderfield.py +0 -274
- pyglet-2.1.dev3/pyglet/graphics/shader.py +0 -1209
- pyglet-2.1.dev3/pyglet/graphics/vertexdomain.py +0 -526
- pyglet-2.1.dev3/pyglet/math.py +0 -972
- pyglet-2.1.dev3/pyproject.toml +0 -79
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/.coveragerc +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/.github/ISSUE_TEMPLATE/questions--or-other.md +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/.github/workflows/codeql.yml +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/.github/workflows/unittests.yml +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/.gitignore +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/.readthedocs.yml +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/LICENSE +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/MANIFEST.in +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/contrib/aseprite_codec/README +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/contrib/aseprite_codec/asedemo.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/contrib/aseprite_codec/aseprite.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/contrib/aseprite_codec/running.ase +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/contrib/logo3d/logo3d.jpg +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/contrib/logo3d/logo3d.obj.zip +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/contrib/logo3d/logo3d.wings +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/contrib/qt_sprite_preview.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/contrib/scenemanager.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/doc/Makefile +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/doc/_static/css/custom.css +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/doc/_static/favicon.ico +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/doc/_static/logo.png +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/doc/_static/logo5.svg +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/doc/_static/relatedlogo.png +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/doc/conf.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/doc/external_resources.rst +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/doc/internal/contributing.rst +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/doc/internal/dist.rst +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/doc/internal/generated.rst +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/doc/internal/gl.rst +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/doc/internal/media_logging_manual.rst +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/doc/internal/media_manual.rst +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/doc/internal/testing.rst +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/doc/internal/virtualenv.rst +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/doc/internal/wraptypes-class.svg +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/doc/internal/wraptypes.rst +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/doc/make.bat +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/doc/modules/app.rst +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/doc/modules/canvas.rst +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/doc/modules/clock.rst +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/doc/modules/customtypes.rst +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/doc/modules/event.rst +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/doc/modules/font.rst +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/doc/modules/gl.rst +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/doc/modules/graphics/allocation.rst +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/doc/modules/graphics/index.rst +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/doc/modules/graphics/shader.rst +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/doc/modules/graphics/vertexbuffer.rst +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/doc/modules/graphics/vertexdomain.rst +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/doc/modules/gui.rst +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/doc/modules/image/animation.rst +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/doc/modules/image/atlas.rst +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/doc/modules/image/buffer.rst +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/doc/modules/image/index.rst +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/doc/modules/info.rst +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/doc/modules/input.rst +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/doc/modules/math.rst +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/doc/modules/media.rst +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/doc/modules/media_synthesis.rst +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/doc/modules/pyglet.rst +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/doc/modules/resource.rst +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/doc/modules/shapes.rst +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/doc/modules/sprite.rst +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/doc/modules/text/caret.rst +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/doc/modules/text/document.rst +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/doc/modules/text/index.rst +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/doc/modules/text/layout.rst +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/doc/modules/window.rst +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/doc/modules/window_key.rst +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/doc/modules/window_mouse.rst +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/doc/programming_guide/context.rst +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/doc/programming_guide/debug.rst +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/doc/programming_guide/eventloop.rst +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/doc/programming_guide/examplegame.rst +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/doc/programming_guide/gl.rst +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/doc/programming_guide/gui.rst +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/doc/programming_guide/image.rst +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/doc/programming_guide/img/abstract_image.png +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/doc/programming_guide/img/abstract_image.svg +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/doc/programming_guide/img/buffer_image.png +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/doc/programming_guide/img/buffer_image.svg +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/doc/programming_guide/img/context_flow.png +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/doc/programming_guide/img/context_flow.svg +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/doc/programming_guide/img/cursor_mac_crosshair.png +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/doc/programming_guide/img/cursor_mac_default.png +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/doc/programming_guide/img/cursor_mac_hand.png +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/doc/programming_guide/img/cursor_mac_no.png +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/doc/programming_guide/img/cursor_mac_size_down.png +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/doc/programming_guide/img/cursor_mac_size_left.png +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/doc/programming_guide/img/cursor_mac_size_left_right.png +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/doc/programming_guide/img/cursor_mac_size_right.png +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/doc/programming_guide/img/cursor_mac_size_up.png +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/doc/programming_guide/img/cursor_mac_size_up_down.png +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/doc/programming_guide/img/cursor_mac_text.png +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/doc/programming_guide/img/cursor_mac_wait.png +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/doc/programming_guide/img/cursor_win_crosshair.png +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/doc/programming_guide/img/cursor_win_default.png +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/doc/programming_guide/img/cursor_win_hand.png +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/doc/programming_guide/img/cursor_win_help.png +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/doc/programming_guide/img/cursor_win_no.png +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/doc/programming_guide/img/cursor_win_size.png +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/doc/programming_guide/img/cursor_win_size_left_right.png +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/doc/programming_guide/img/cursor_win_size_nesw.png +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/doc/programming_guide/img/cursor_win_size_nwse.png +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/doc/programming_guide/img/cursor_win_size_up_down.png +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/doc/programming_guide/img/cursor_win_text.png +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/doc/programming_guide/img/cursor_win_wait.png +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/doc/programming_guide/img/cursor_win_wait_arrow.png +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/doc/programming_guide/img/explosion.png +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/doc/programming_guide/img/font_metrics.png +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/doc/programming_guide/img/font_metrics.svg +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/doc/programming_guide/img/image_classes.png +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/doc/programming_guide/img/image_classes.svg +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/doc/programming_guide/img/image_grid.png +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/doc/programming_guide/img/image_grid.svg +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/doc/programming_guide/img/image_sequence.png +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/doc/programming_guide/img/image_sequence.svg +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/doc/programming_guide/img/mouse_coordinates.png +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/doc/programming_guide/img/mouse_coordinates.svg +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/doc/programming_guide/img/screens.png +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/doc/programming_guide/img/screens.svg +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/doc/programming_guide/img/text_classes.png +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/doc/programming_guide/img/text_classes.svg +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/doc/programming_guide/img/window_location.png +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/doc/programming_guide/img/window_location.svg +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/doc/programming_guide/img/window_osx_borderless.png +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/doc/programming_guide/img/window_osx_default.png +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/doc/programming_guide/img/window_osx_dialog.png +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/doc/programming_guide/img/window_osx_tool.png +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/doc/programming_guide/img/window_xp_default.png +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/doc/programming_guide/img/window_xp_dialog.png +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/doc/programming_guide/img/window_xp_overlay.png +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/doc/programming_guide/img/window_xp_tool.png +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/doc/programming_guide/img/window_xp_transparent.png +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/doc/programming_guide/input.rst +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/doc/programming_guide/installation.rst +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/doc/programming_guide/keyboard.rst +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/doc/programming_guide/media.rst +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/doc/programming_guide/migration.rst +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/doc/programming_guide/mouse.rst +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/doc/programming_guide/options.rst +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/doc/programming_guide/resources.rst +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/doc/programming_guide/shapes.rst +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/doc/programming_guide/text.rst +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/doc/programming_guide/time.rst +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/doc/programming_guide/windowing.rst +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/doc/requirements.txt +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/examples/clipboard.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/examples/dpi_scaled_window.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/examples/events/events_key_state_handler.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/examples/events/window_events.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/examples/file_dialog.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/examples/game/resources/asteroid.png +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/examples/game/resources/bullet.png +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/examples/game/resources/bullet.wav +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/examples/game/resources/engine_flame.png +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/examples/game/resources/player.png +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/examples/game/version1/game/__init__.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/examples/game/version1/game/load.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/examples/game/version1/game/resources.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/examples/game/version2/game/__init__.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/examples/game/version2/game/physicalobject.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/examples/game/version2/game/player.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/examples/game/version2/game/resources.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/examples/game/version3/game/__init__.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/examples/game/version3/game/load.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/examples/game/version3/game/physicalobject.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/examples/game/version3/game/util.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/examples/game/version4/game/__init__.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/examples/game/version4/game/asteroid.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/examples/game/version4/game/bullet.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/examples/game/version4/game/load.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/examples/game/version4/game/physicalobject.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/examples/game/version4/game/util.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/examples/game/version5/game/__init__.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/examples/game/version5/game/asteroid.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/examples/game/version5/game/bullet.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/examples/game/version5/game/load.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/examples/game/version5/game/physicalobject.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/examples/game/version5/game/util.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/examples/gui/bar.png +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/examples/gui/button_hover.png +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/examples/gui/button_pressed.png +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/examples/gui/button_unpressed.png +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/examples/gui/knob.png +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/examples/hello_world.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/examples/input/apple_remote.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/examples/input/controller.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/examples/input/tablet.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/examples/media/noisy/README +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/examples/media/noisy/ball.png +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/examples/media/noisy/ball.wav +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/examples/media/soundspace/README +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/examples/media/soundspace/res/bass.wav +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/examples/media/soundspace/res/drums.wav +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/examples/media/soundspace/res/guitar.wav +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/examples/media/soundspace/res/piano.wav +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/examples/media/soundspace/res/space.txt +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/examples/model/box.mtl +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/examples/model/box.obj +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/examples/model/logo3d.mtl +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/examples/model/logo3d.obj +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/examples/model/model.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/examples/model/pyglet.png +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/examples/opengl/compute_shader.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/examples/opengl/opengl_context.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/examples/opengl/opengl_scissor.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/examples/opengl/pyglet.png +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/examples/programming_guide/animation.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/examples/programming_guide/dinosaur.gif +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/examples/programming_guide/image_viewer.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/examples/programming_guide/kitten.jpg +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/examples/programming_guide/window_subclass.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/examples/resources/kitten.jpg +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/examples/resources/pyglet.png +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/examples/sprite/depth_sprite.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/examples/sprite/multi_texture_sprite.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/examples/sprite/sprite_batching.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/examples/text/pyglet.png +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/examples/window/camera.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/examples/window/fixed_resolution.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/examples/window/fps_change.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/examples/window/multiple_windows.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/examples/window/overlay_window.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/examples/window/transparent_window.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/experimental/dist_field/genfield.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/experimental/dist_field/py.df.png +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/experimental/dist_field/py.png +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/experimental/flaccodec.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/experimental/hello_world.svg +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/experimental/spritebenchmark.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/experimental/wayland/gbm_egl_context.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/experimental/win32priority.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/pyglet/app/__init__.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/pyglet/app/base.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/pyglet/app/cocoa.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/pyglet/app/xlib.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/pyglet/clock.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/pyglet/customtypes.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/pyglet/display/base.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/pyglet/display/xlib_vidmoderestore.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/pyglet/experimental/README.md +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/pyglet/experimental/geoshader_sprite.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/pyglet/experimental/hidraw.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/pyglet/experimental/net.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/pyglet/extlibs/__init__.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/pyglet/extlibs/earcut.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/pyglet/extlibs/png.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/pyglet/font/base.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/pyglet/font/fontconfig.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/pyglet/font/ttf.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/pyglet/font/user.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/pyglet/gl/wgl.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/pyglet/gl/wglext_arb.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/pyglet/gl/wglext_nv.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/pyglet/gui/__init__.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/pyglet/gui/frame.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/pyglet/gui/ninepatch.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/pyglet/gui/widgets.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/pyglet/image/animation.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/pyglet/image/atlas.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/pyglet/image/buffer.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/pyglet/image/codecs/bmp.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/pyglet/image/codecs/dds.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/pyglet/image/codecs/gdiplus.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/pyglet/image/codecs/gdkpixbuf2.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/pyglet/image/codecs/gif.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/pyglet/image/codecs/pil.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/pyglet/image/codecs/png.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/pyglet/image/codecs/quartz.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/pyglet/image/codecs/s3tc.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/pyglet/image/codecs/wic.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/pyglet/info.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/pyglet/input/__init__.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/pyglet/input/base.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/pyglet/input/controller.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/pyglet/input/controller_db.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/pyglet/input/linux/__init__.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/pyglet/input/linux/evdev.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/pyglet/input/linux/evdev_constants.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/pyglet/input/linux/x11_xinput.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/pyglet/input/linux/x11_xinput_tablet.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/pyglet/input/macos/__init__.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/pyglet/input/macos/darwin_hid.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/pyglet/input/win32/__init__.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/pyglet/input/win32/directinput.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/pyglet/input/win32/wintab.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/pyglet/input/win32/xinput.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/pyglet/libs/__init__.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/pyglet/libs/darwin/__init__.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/pyglet/libs/darwin/cocoapy/__init__.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/pyglet/libs/darwin/cocoapy/cocoalibs.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/pyglet/libs/darwin/cocoapy/cocoatypes.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/pyglet/libs/darwin/cocoapy/runtime.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/pyglet/libs/darwin/coreaudio.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/pyglet/libs/darwin/quartzkey.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/pyglet/libs/egl/__init__.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/pyglet/libs/egl/egl.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/pyglet/libs/egl/eglext.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/pyglet/libs/egl/lib.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/pyglet/libs/ioctl.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/pyglet/libs/wayland/__init__.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/pyglet/libs/wayland/gbm.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/pyglet/libs/wayland/xkbcommon.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/pyglet/libs/win32/com.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/pyglet/libs/win32/constants.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/pyglet/libs/win32/context_managers.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/pyglet/libs/win32/libwintab.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/pyglet/libs/win32/types.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/pyglet/libs/win32/winkey.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/pyglet/libs/x11/__init__.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/pyglet/libs/x11/cursorfont.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/pyglet/libs/x11/xf86vmode.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/pyglet/libs/x11/xinerama.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/pyglet/libs/x11/xinput.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/pyglet/libs/x11/xlib.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/pyglet/libs/x11/xsync.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/pyglet/media/__init__.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/pyglet/media/buffered_logger.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/pyglet/media/codecs/__init__.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/pyglet/media/codecs/base.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/pyglet/media/codecs/coreaudio.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/pyglet/media/codecs/ffmpeg.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/pyglet/media/codecs/ffmpeg_lib/__init__.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/pyglet/media/codecs/ffmpeg_lib/compat.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/pyglet/media/codecs/ffmpeg_lib/libavcodec.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/pyglet/media/codecs/ffmpeg_lib/libavformat.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/pyglet/media/codecs/ffmpeg_lib/libavutil.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/pyglet/media/codecs/ffmpeg_lib/libswresample.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/pyglet/media/codecs/ffmpeg_lib/libswscale.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/pyglet/media/codecs/gstreamer.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/pyglet/media/codecs/pyogg.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/pyglet/media/codecs/wave.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/pyglet/media/codecs/wmf.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/pyglet/media/devices/__init__.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/pyglet/media/devices/base.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/pyglet/media/devices/win32.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/pyglet/media/drivers/__init__.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/pyglet/media/drivers/base.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/pyglet/media/drivers/directsound/__init__.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/pyglet/media/drivers/directsound/adaptation.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/pyglet/media/drivers/directsound/exceptions.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/pyglet/media/drivers/directsound/interface.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/pyglet/media/drivers/directsound/lib_dsound.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/pyglet/media/drivers/listener.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/pyglet/media/drivers/openal/__init__.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/pyglet/media/drivers/openal/adaptation.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/pyglet/media/drivers/openal/interface.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/pyglet/media/drivers/openal/lib_alc.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/pyglet/media/drivers/openal/lib_openal.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/pyglet/media/drivers/pulse/__init__.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/pyglet/media/drivers/pulse/adaptation.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/pyglet/media/drivers/pulse/interface.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/pyglet/media/drivers/pulse/lib_pulseaudio.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/pyglet/media/drivers/silent/__init__.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/pyglet/media/drivers/silent/adaptation.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/pyglet/media/drivers/xaudio2/__init__.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/pyglet/media/drivers/xaudio2/adaptation.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/pyglet/media/drivers/xaudio2/interface.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/pyglet/media/drivers/xaudio2/lib_xaudio2.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/pyglet/media/exceptions.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/pyglet/media/instrumentation.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/pyglet/media/player.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/pyglet/media/player_worker_thread.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/pyglet/media/synthesis.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/pyglet/model/__init__.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/pyglet/model/codecs/__init__.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/pyglet/model/codecs/gltf.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/pyglet/model/codecs/obj.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/pyglet/resource.py +2 -2
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/pyglet/sprite.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/pyglet/text/formats/__init__.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/pyglet/text/formats/attributed.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/pyglet/text/formats/plaintext.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/pyglet/text/layout/__init__.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/pyglet/text/layout/incremental.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/pyglet/text/layout/scrolling.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/pyglet/text/runlist.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/pyglet/util.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/pyglet/window/cocoa/__init__.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/pyglet/window/cocoa/pyglet_delegate.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/pyglet/window/cocoa/pyglet_view.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/pyglet/window/cocoa/pyglet_window.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/pyglet/window/cocoa/systemcursor.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/pyglet/window/event.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/pyglet/window/headless/__init__.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/pyglet/window/key.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/pyglet/window/mouse.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/pytest.ini +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/setup.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/tests/__init__.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/tests/annotations.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/tests/base/__init__.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/tests/base/data.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/tests/base/event_loop.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/tests/base/interactive.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/tests/base/performance.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/tests/conftest.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/tests/data/fonts/README +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/tests/data/fonts/action_man.ttf +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/tests/data/fonts/action_man_bold.ttf +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/tests/data/fonts/action_man_bold_italic.ttf +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/tests/data/fonts/action_man_italic.ttf +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/tests/data/fonts/courR12-ISO8859-1.pcf +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/tests/data/images/8bpp.gif +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/tests/data/images/cursor.png +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/tests/data/images/dinosaur.gif +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/tests/data/images/gdk_close.png +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/tests/data/images/grey_background.png +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/tests/data/images/icon1.png +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/tests/data/images/icon_size1.png +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/tests/data/images/icon_size2.png +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/tests/data/images/icon_size3.png +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/tests/data/images/icon_size4.png +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/tests/data/images/icon_size5.png +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/tests/data/images/l.png +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/tests/data/images/la.png +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/tests/data/images/multitexture.png +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/tests/data/images/rgb.png +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/tests/data/images/rgb_16bpp.bmp +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/tests/data/images/rgb_1bpp.bmp +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/tests/data/images/rgb_24bpp.bmp +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/tests/data/images/rgb_32bpp.bmp +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/tests/data/images/rgb_4bpp.bmp +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/tests/data/images/rgb_8bpp.bmp +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/tests/data/images/rgb_8bpp.png +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/tests/data/images/rgb_8bpp_trans.png +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/tests/data/images/rgb_dxt1.dds +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/tests/data/images/rgba.png +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/tests/data/images/rgba_32bpp.bmp +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/tests/data/images/rgba_dxt1.dds +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/tests/data/images/rgba_dxt3.dds +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/tests/data/images/rgba_dxt5.dds +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/tests/data/images/tests.interactive.test_interactive_test_base._Test.test_1.001.png +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/tests/data/media/README +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/tests/data/media/alert.wav +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/tests/data/media/login.wav +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/tests/data/media/logout.wav +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/tests/data/media/receive.wav +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/tests/data/media/send.wav +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/tests/data/media/synthesis_sawtooth_16_11025_1ch.wav +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/tests/data/media/synthesis_sawtooth_16_44800_1ch.wav +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/tests/data/media/synthesis_silence_16_11025_1ch.wav +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/tests/data/media/synthesis_silence_16_44800_1ch.wav +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/tests/data/media/synthesis_simplefm_16_11025_1ch.wav +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/tests/data/media/synthesis_simplefm_16_44800_1ch.wav +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/tests/data/media/synthesis_sine_16_11025_1ch.wav +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/tests/data/media/synthesis_sine_16_44800_1ch.wav +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/tests/data/media/synthesis_square_16_11025_1ch.wav +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/tests/data/media/synthesis_square_16_44800_1ch.wav +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/tests/data/media/synthesis_triangle_16_11025_1ch.wav +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/tests/data/media/synthesis_triangle_16_44800_1ch.wav +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/tests/data/models/logo3d.mtl +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/tests/data/models/logo3d.obj +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/tests/integration/__init__.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/tests/integration/app/__init__.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/tests/integration/app/test_eventloop.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/tests/integration/font/test_fontconfig.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/tests/integration/font/test_freetype_face.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/tests/integration/graphics/__init__.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/tests/integration/graphics/test_allocation.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/tests/integration/graphics/test_batch_migration.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/tests/integration/image/__init__.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/tests/integration/image/test_gdkpixbuf2.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/tests/integration/image/test_imagegrid.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/tests/integration/image/test_texture3d.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/tests/integration/media/__init__.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/tests/integration/media/mock_player.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/tests/integration/media/test_directsound.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/tests/integration/media/test_driver.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/tests/integration/media/test_openal.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/tests/integration/media/test_player.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/tests/integration/media/test_pulse.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/tests/integration/model/__init__.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/tests/integration/model/test_loading.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/tests/integration/platform/__init__.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/tests/integration/platform/test_win_context_managers.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/tests/integration/platform/test_win_multicore_clock.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/tests/integration/resource/__init__.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/tests/integration/resource/dir1/dir1/f3.txt +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/tests/integration/resource/dir1/f2.txt +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/tests/integration/resource/dir1/res.zip +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/tests/integration/resource/dir2/f6.txt +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/tests/integration/resource/f1.txt +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/tests/integration/resource/rgbm.png +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/tests/integration/resource/test_resource_image_loading.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/tests/integration/resource/test_resource_loading.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/tests/integration/text/__init__.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/tests/integration/text/test_empty_document.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/tests/integration/text/test_label_creation.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/tests/integration/text/test_layout_creation.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/tests/integration/window/__init__.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/tests/integration/window/test_context_share.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/tests/integration/window/test_event_sequence.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/tests/integration/window/test_window_caption.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/tests/interactive/__init__.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/tests/interactive/conftest.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/tests/interactive/image/__init__.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/tests/interactive/image/test_image.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/tests/interactive/media/__init__.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/tests/interactive/media/test_player.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/tests/interactive/screenshots/committed/README +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/tests/interactive/screenshots/session/README +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/tests/interactive/shapes/test_shapes.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/tests/interactive/test_interactive_test_base.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/tests/interactive/text/__init__.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/tests/interactive/text/test_caret_color.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/tests/interactive/text/test_content_valign.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/tests/interactive/text/test_html.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/tests/interactive/text/test_inline_elements.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/tests/interactive/text/test_inline_elements_style_change.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/tests/interactive/text/test_multiline_wrap.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/tests/interactive/text/test_plain.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/tests/interactive/window/__init__.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/tests/interactive/window/test_window_events.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/tests/interactive/window/test_window_fullscreen.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/tests/interactive/window/test_window_modes.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/tests/interactive/window/test_window_multisample.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/tests/interactive/window/test_window_open.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/tests/interactive/window/test_window_settings.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/tests/interactive/window/test_window_styles.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/tests/interactive/window/window_util.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/tests/interactive/windowed_test_base.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/tests/requirements.txt +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/tests/unit/__init__.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/tests/unit/conftest.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/tests/unit/media/__init__.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/tests/unit/media/test_listener.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/tests/unit/media/test_player.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/tests/unit/media/test_sources.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/tests/unit/media/test_synthesis.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/tests/unit/shapes/__init__.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/tests/unit/shapes/conftest.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/tests/unit/shapes/test_bordered_rectangle.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/tests/unit/shapes/test_shapes.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/tests/unit/test_atlas.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/tests/unit/test_clock.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/tests/unit/test_clock_freq.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/tests/unit/test_events.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/tests/unit/test_font.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/tests/unit/test_input.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/tests/unit/test_resource_path.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/tests/unit/test_sprite.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/tests/unit/test_text.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/tests/unit/text/__init__.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/tests/unit/text/test_caret.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/tests/unit/text/test_layout.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/tools/al_info.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/tools/ffmpeg/bokeh_timeline.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/tools/ffmpeg/compare.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/tools/ffmpeg/configure.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/tools/ffmpeg/extractors.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/tools/ffmpeg/fs.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/tools/ffmpeg/mp.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/tools/ffmpeg/mpexceptions.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/tools/ffmpeg/playmany.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/tools/ffmpeg/readme_ffmpeg_debbuging_branch.txt +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/tools/ffmpeg/readme_run_tests.txt +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/tools/ffmpeg/report.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/tools/ffmpeg/reports.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/tools/ffmpeg/retry_crashed.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/tools/ffmpeg/run_test_suite.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/tools/ffmpeg/summarize.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/tools/ffmpeg/test_instrumentation.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/tools/ffmpeg/timeline.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/tools/gencontrollerdb.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/tools/genwrappers.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/tools/gl.template +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/tools/gl.xml +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/tools/gl_info.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/tools/inspect_font.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/tools/requirements.txt +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/tools/wgl.h +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/tools/wraptypes/__init__.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/tools/wraptypes/cparser.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/tools/wraptypes/ctypesparser.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/tools/wraptypes/lex.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/tools/wraptypes/preprocessor.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/tools/wraptypes/yacc.py +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/website/LICENSE.txt +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/website/README.rst +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/website/assets/favicon.ico +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/website/assets/static/css/example-custom-styles.css +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/website/assets/static/images/pyglet.png +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/website/content/404.html/contents.lr +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/website/content/404.html/ngc-5793.jpg +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/website/content/authors/benjamin/contents.lr +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/website/content/authors/benjamin/pyglet.png +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/website/content/authors/contents.lr +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/website/content/blog/contents.lr +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/website/content/blog/welcome-blog/contents.lr +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/website/content/contents.lr +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/website/content/eclipse.jpg +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/website/pyglet.lektorproject +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/website/themes/lektor-icon/AUTHORS.txt +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/website/themes/lektor-icon/CHANGELOG.md +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/website/themes/lektor-icon/CONTRIBUTING.md +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/website/themes/lektor-icon/LICENSE.txt +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/website/themes/lektor-icon/NOTICE.txt +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/website/themes/lektor-icon/README.md +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/website/themes/lektor-icon/assets/static/css/bootstrap.css +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/website/themes/lektor-icon/assets/static/css/icomoon.css +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/website/themes/lektor-icon/assets/static/css/magnific-popup.css +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/website/themes/lektor-icon/assets/static/css/style.css +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/website/themes/lektor-icon/assets/static/fonts/bootstrap/glyphicons-halflings-regular.ttf +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/website/themes/lektor-icon/assets/static/fonts/bootstrap/glyphicons-halflings-regular.woff +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/website/themes/lektor-icon/assets/static/fonts/bootstrap/glyphicons-halflings-regular.woff2 +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/website/themes/lektor-icon/assets/static/fonts/icomoon/icomoon.ttf +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/website/themes/lektor-icon/assets/static/fonts/icomoon/icomoon.woff +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/website/themes/lektor-icon/assets/static/images/Preloader_2.gif +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/website/themes/lektor-icon/assets/static/images/placeholder_person.png +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/website/themes/lektor-icon/assets/static/js/jquery-3.3.1.min.js +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/website/themes/lektor-icon/assets/static/js/jquery.easing.min.js +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/website/themes/lektor-icon/assets/static/js/jquery.magnific-popup.min.js +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/website/themes/lektor-icon/assets/static/js/jquery.stellar.js +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/website/themes/lektor-icon/assets/static/js/jquery.stellar.min.js +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/website/themes/lektor-icon/assets/static/js/jquery.waypoints.min.js +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/website/themes/lektor-icon/assets/static/js/magnific-popup-options.js +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/website/themes/lektor-icon/assets/static/js/main-singlelayout.js +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/website/themes/lektor-icon/assets/static/js/main.js +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/website/themes/lektor-icon/flowblocks/content.ini +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/website/themes/lektor-icon/flowblocks/gallery.ini +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/website/themes/lektor-icon/flowblocks/gallery_item.ini +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/website/themes/lektor-icon/flowblocks/member.ini +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/website/themes/lektor-icon/flowblocks/mission.ini +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/website/themes/lektor-icon/flowblocks/mission_tab.ini +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/website/themes/lektor-icon/flowblocks/service.ini +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/website/themes/lektor-icon/flowblocks/services.ini +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/website/themes/lektor-icon/flowblocks/team.ini +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/website/themes/lektor-icon/images/blog-index.png +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/website/themes/lektor-icon/images/full-blog.png +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/website/themes/lektor-icon/images/full-page.png +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/website/themes/lektor-icon/images/gallery-404.png +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/website/themes/lektor-icon/images/gallery-singlepage.png +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/website/themes/lektor-icon/images/mainpage-screenshots.png +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/website/themes/lektor-icon/images/responsive-layout.png +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/website/themes/lektor-icon/models/404.ini +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/website/themes/lektor-icon/models/author.ini +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/website/themes/lektor-icon/models/authors.ini +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/website/themes/lektor-icon/models/blog-post.ini +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/website/themes/lektor-icon/models/blog.ini +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/website/themes/lektor-icon/models/page.ini +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/website/themes/lektor-icon/models/single-layout.ini +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/website/themes/lektor-icon/templates/404.html +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/website/themes/lektor-icon/templates/author.html +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/website/themes/lektor-icon/templates/authors.html +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/website/themes/lektor-icon/templates/blocks/content.html +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/website/themes/lektor-icon/templates/blocks/gallery.html +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/website/themes/lektor-icon/templates/blocks/mission.html +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/website/themes/lektor-icon/templates/blocks/services.html +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/website/themes/lektor-icon/templates/blocks/team.html +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/website/themes/lektor-icon/templates/blog-layout.html +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/website/themes/lektor-icon/templates/blog-post.html +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/website/themes/lektor-icon/templates/blog.html +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/website/themes/lektor-icon/templates/layout.html +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/website/themes/lektor-icon/templates/macros/blog.html +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/website/themes/lektor-icon/templates/macros/pagination.html +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/website/themes/lektor-icon/templates/none.html +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/website/themes/lektor-icon/templates/page.html +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/website/themes/lektor-icon/templates/single-layout.html +0 -0
- {pyglet-2.1.dev3 → pyglet-2.1.dev4}/website/themes/lektor-icon/theme.ini +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: pyglet
|
|
3
|
-
Version: 2.1.
|
|
3
|
+
Version: 2.1.dev4
|
|
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
|
|
@@ -128,10 +128,14 @@ code, is a bug that deserves to be reported on a ticket.
|
|
|
128
128
|
|
|
129
129
|
## Building Docs
|
|
130
130
|
|
|
131
|
+
[Documentation and Type Hints]: https://pyglet.readthedocs.io/en/latest/internal/doc.html
|
|
132
|
+
|
|
133
|
+
To get started quickly:
|
|
134
|
+
|
|
131
135
|
pip install -r doc/requirements.txt
|
|
132
|
-
python
|
|
136
|
+
python make.py docs
|
|
133
137
|
|
|
134
|
-
Please check [
|
|
138
|
+
Please check [Documentation and Type Hints][] guide to learn more.
|
|
135
139
|
|
|
136
140
|
## Testing
|
|
137
141
|
|
|
@@ -119,10 +119,14 @@ code, is a bug that deserves to be reported on a ticket.
|
|
|
119
119
|
|
|
120
120
|
## Building Docs
|
|
121
121
|
|
|
122
|
+
[Documentation and Type Hints]: https://pyglet.readthedocs.io/en/latest/internal/doc.html
|
|
123
|
+
|
|
124
|
+
To get started quickly:
|
|
125
|
+
|
|
122
126
|
pip install -r doc/requirements.txt
|
|
123
|
-
python
|
|
127
|
+
python make.py docs
|
|
124
128
|
|
|
125
|
-
Please check [
|
|
129
|
+
Please check [Documentation and Type Hints][] guide to learn more.
|
|
126
130
|
|
|
127
131
|
## Testing
|
|
128
132
|
|
|
@@ -2,13 +2,37 @@ pyglet 2.0.16
|
|
|
2
2
|
|
|
3
3
|
Changes and Improvements
|
|
4
4
|
------------------------
|
|
5
|
-
- library-wide overhaul of docstrings, and addition of type hints (#1084)
|
|
5
|
+
- library-wide overhaul of docstrings, and addition of type hints. (#1084)
|
|
6
|
+
- sprite: Add `blend_mode` property to change BLEND_MODE without needing to re-create the Sprite.
|
|
7
|
+
- sprite: Deprecate `AdvancedSprite`, and merge functionality into default `Sprite` class.
|
|
8
|
+
- sprite: Add `get_sprite_group` method, allowing easy usage of custom SpriteGroups in subclasses.
|
|
9
|
+
- image: Code for `Texture.blit` has been inlined. (#1109)
|
|
10
|
+
- shapes: Concave polygon can be drawn by earcutting a polygon. (#1121)
|
|
11
|
+
- shapes: Add Rounded Rectangle shape. (#1131)
|
|
12
|
+
- shapes: Add `thickness` property to `Box` shapes.
|
|
13
|
+
- libs: Add `pyglet.libs.ioctl` module, to consolidate shared code on Linux.
|
|
14
|
+
- gui: Add a pseudo "nine-path" Sprite-like class for variable sized windows.
|
|
15
|
+
- math: Add `match` statement support to Vec classes.
|
|
16
|
+
- graphics: Don't re-create a Shader each call to `draw` or `draw_indexed`.
|
|
17
|
+
- pyglet.options: Add runtime typing enforcement to user-set options.
|
|
18
|
+
- pyglet.experimental: Add simple GPU-based particle system in `particles` module.
|
|
19
|
+
- text.layout: Update `on_style_text` to be more efficient.
|
|
6
20
|
|
|
7
21
|
Bugfixes
|
|
8
22
|
--------
|
|
9
|
-
-
|
|
23
|
+
- window.macos: Fix constant appearance of blinking caret on M1 based Macs. (#1160)
|
|
24
|
+
- window.xlib: Avoid XSet/UnsetICFocus calls when _have_utf8 is False. (#1049)
|
|
25
|
+
- window.win32: Fix application not updating timers and redrawing during moves. (#1125)
|
|
10
26
|
- shapes: Add missing `thickness` property to Box.
|
|
11
27
|
- shapes: Add missing docstrings to `Arc` `thickness` property.
|
|
28
|
+
- shapes: Fix ShapeBase.group setter to only migrate batch when batch is not None. (#1090)
|
|
29
|
+
- shapes: BezierCurve: fix miter artifacts from #1134. (#1155)
|
|
30
|
+
- examples: Fix "more" button outline in soundspace example. (#1085)
|
|
31
|
+
- tests: Fix a rarely-failing audio time test. (#1092)
|
|
32
|
+
- input.controller: Fix accidentially missed mappings.
|
|
33
|
+
- graphics.shader: Add missing parent program reference in Uniforms (#1103)
|
|
34
|
+
- graphics.domain: Fix VertexList.resize method.
|
|
35
|
+
- text.directwrite: Fix crash with dw_legacy_naming. Check if a custom collection exists before find a font with it.
|
|
12
36
|
|
|
13
37
|
|
|
14
38
|
pyglet 2.0.15
|
|
@@ -16,7 +16,17 @@ import sys
|
|
|
16
16
|
import random
|
|
17
17
|
|
|
18
18
|
import pyglet
|
|
19
|
-
from pyglet.gl import
|
|
19
|
+
from pyglet.gl import (
|
|
20
|
+
glEnable,
|
|
21
|
+
glBlendFunc,
|
|
22
|
+
glFlush,
|
|
23
|
+
Config,
|
|
24
|
+
GL_BLEND,
|
|
25
|
+
GL_LINE_SMOOTH,
|
|
26
|
+
GL_LINES,
|
|
27
|
+
GL_SRC_ALPHA,
|
|
28
|
+
GL_ONE_MINUS_SRC_ALPHA,
|
|
29
|
+
)
|
|
20
30
|
|
|
21
31
|
# open a single-buffered window so we can do cheap accumulation
|
|
22
32
|
config = Config(double_buffer=False)
|
|
@@ -61,6 +61,7 @@ If you are migrating from an older version of pyglet, please read through
|
|
|
61
61
|
programming_guide/time
|
|
62
62
|
programming_guide/context
|
|
63
63
|
programming_guide/gl
|
|
64
|
+
programming_guide/opengles
|
|
64
65
|
programming_guide/math
|
|
65
66
|
programming_guide/eventloop
|
|
66
67
|
programming_guide/examplegame
|
|
@@ -191,7 +191,8 @@ some helper functions for common build and distribution related tasks. For docs,
|
|
|
191
191
|
./make.py docs --open
|
|
192
192
|
|
|
193
193
|
|
|
194
|
-
If the build succeeds,
|
|
194
|
+
If the build succeeds, a browser window will open. You can skip this by omitting `--open`.
|
|
195
|
+
The generated static web pages will be in ``doc/_build/html``.
|
|
195
196
|
|
|
196
197
|
You can also build the documentation by using Sphinx's ``Makefile``:
|
|
197
198
|
|
|
@@ -202,6 +203,35 @@ You can also build the documentation by using Sphinx's ``Makefile``:
|
|
|
202
203
|
make.bat html # Windows
|
|
203
204
|
|
|
204
205
|
|
|
206
|
+
Note that there are also additional build targets beyond HTML, but
|
|
207
|
+
they may require installing additional dependencies. Run ``make help``
|
|
208
|
+
to see a list of them:
|
|
209
|
+
|
|
210
|
+
.. code:: console
|
|
211
|
+
|
|
212
|
+
$ make help
|
|
213
|
+
Please use `make <target>' where <target> is one of
|
|
214
|
+
html to make standalone HTML files
|
|
215
|
+
dirhtml to make HTML files named index.html in directories
|
|
216
|
+
singlehtml to make a single large HTML file
|
|
217
|
+
pickle to make pickle files
|
|
218
|
+
json to make JSON files
|
|
219
|
+
htmlhelp to make HTML files and a HTML help project
|
|
220
|
+
qthelp to make HTML files and a qthelp project
|
|
221
|
+
devhelp to make HTML files and a Devhelp project
|
|
222
|
+
epub to make an epub
|
|
223
|
+
latex to make LaTeX files, you can set PAPER=a4 or PAPER=letter
|
|
224
|
+
latexpdf to make LaTeX files and run them through pdflatex
|
|
225
|
+
text to make text files
|
|
226
|
+
man to make manual pages
|
|
227
|
+
texinfo to make Texinfo files
|
|
228
|
+
info to make Texinfo files and run them through makeinfo
|
|
229
|
+
gettext to make PO message catalogs
|
|
230
|
+
changes to make an overview of all changed/added/deprecated items
|
|
231
|
+
linkcheck to check all external links for integrity
|
|
232
|
+
doctest to run all doctests embedded in the documentation (if enabled)
|
|
233
|
+
|
|
234
|
+
|
|
205
235
|
auto-generated details
|
|
206
236
|
^^^^^^^^^^^^^^^^^^^^^^
|
|
207
237
|
|
|
@@ -17,7 +17,7 @@ your own classes easily.
|
|
|
17
17
|
Even handlers are simply functions or methods that are written to accept the same
|
|
18
18
|
arguments as the dispatched event. Event handlers can be registered or unregistered
|
|
19
19
|
during runtime. More than one handler can be registered to receive the same events,
|
|
20
|
-
which is described in the following sections. Event dispatchers can
|
|
20
|
+
which is described in the following sections. Event dispatchers can *optionally* have
|
|
21
21
|
default handlers for some of their events. Your own handlers can replace these entirely,
|
|
22
22
|
or just be added on.
|
|
23
23
|
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
.. _guide_math:
|
|
2
|
+
|
|
3
|
+
Matrix and Vector Math
|
|
4
|
+
======================
|
|
5
|
+
|
|
6
|
+
Modern OpenGL depends on matrixes for projection, translation, and other things. To
|
|
7
|
+
provide out-of-the-box functionality, pyglet's :py:mod:`~pyglet.math` module includes
|
|
8
|
+
the necessary Matrix and Vector types to cover common use cases. Provided types are:
|
|
9
|
+
:py:class:`~pyglet.math.Vec2`, :py:class:`~pyglet.math.Vec3`, :py:class:`~pyglet.math.Vec4`,
|
|
10
|
+
:py:class:`~pyglet.math.Mat3`, and :py:class:`~pyglet.math.Mat4`.
|
|
11
|
+
|
|
12
|
+
See the :py:mod:`~pyglet.math` API documentation for a full list of methods and operations
|
|
13
|
+
that these objects support.
|
|
14
|
+
|
|
15
|
+
.. note:: Matrix and Vector types are ``tuple`` subclasses. They are therefore
|
|
16
|
+
immutable - all operations return a **new** object; they are not updated in-place.
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
Creating a Matrix
|
|
20
|
+
-----------------
|
|
21
|
+
A Matrix can be created with no arguments, or by passing the initial values::
|
|
22
|
+
|
|
23
|
+
my_matrix = Mat4()
|
|
24
|
+
# or
|
|
25
|
+
my_matrix = Mat4(1.0, 0.0, 0.0, 0.0,
|
|
26
|
+
0.0, 1.0, 0.0, 0.0,
|
|
27
|
+
0.0, 0.0, 1.0, 0.0,
|
|
28
|
+
0.0, 0.0, 0.0, 1.0)
|
|
29
|
+
|
|
30
|
+
If no arguments are given on creation, an "identity" matrix will be created by default.
|
|
31
|
+
(1.0 on the main diagonal, as shown here).
|
|
32
|
+
|
|
33
|
+
More conveniently, you can also create matrixes from one of their helper class methods.
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
Matrix Helper Methods
|
|
37
|
+
---------------------
|
|
38
|
+
When working with 3D graphics in OpenGL, A common operation is setting a perspective
|
|
39
|
+
projection matrix. The ``Mat4`` class includes a helper method for this task. The arguments
|
|
40
|
+
are similar to what you will find in popular OpenGL math libraries::
|
|
41
|
+
|
|
42
|
+
# Perspective (3D) projection matrix:
|
|
43
|
+
projection = Mat4.perspective_projection(aspect_ratio, z_near=0.1, z_far=255, fov=60)
|
|
44
|
+
|
|
45
|
+
For setting a projection matrix on the current OpenGL context, pyglet Windows have
|
|
46
|
+
a ``projection`` property. This points to a projection matrix used by all of pyglet's
|
|
47
|
+
built-in classes, and can be set as follows::
|
|
48
|
+
|
|
49
|
+
my_matrix = Mat4.perspective_projection(aspect_ratio, z_near=0.1, z_far=255)
|
|
50
|
+
window.projection = my_matrix
|
|
51
|
+
|
|
52
|
+
For working with 2D graphics, a helper method also exists for creating orthogonal projection
|
|
53
|
+
matrixes, which is created and set in a similar way::
|
|
54
|
+
|
|
55
|
+
# Orthographic (2D) projection matrix:
|
|
56
|
+
my_matrix = Mat4.orthogonal_projection(0, width, 0, height, z_near=-255, z_far=255)
|
|
57
|
+
window.projection = my_matrix
|
|
58
|
+
|
|
59
|
+
By default, pyglet is already set up with an orthographic projection matrix. It automatically
|
|
60
|
+
updates this 2D matrix whenever a Window is created or resized. This is done inside of the
|
|
61
|
+
Window's ``on_resize`` event handler. If you plan to set your own 3D or 2D projection matrix,
|
|
62
|
+
a useful pattern is to override the default ``on_resize`` event handler with your own::
|
|
63
|
+
|
|
64
|
+
@window.event
|
|
65
|
+
def on_resize(width, height):
|
|
66
|
+
# window.viewport = (0, 0, width, height)
|
|
67
|
+
window.projection = Mat4.perspective_projection(window.aspect_ratio, z_near=0.1, z_far=255)
|
|
68
|
+
return pyglet.event.EVENT_HANDLED # Don't call the default handler
|
|
69
|
+
|
|
70
|
+
|
|
71
|
+
In addition to the ``projection`` property, pyglet Windows also contain a ``view`` property that
|
|
72
|
+
points to another matrix that is used internally by pyglet's built-in classes. The view matrix
|
|
73
|
+
gets multiplied with the projection matrix, controlling the final positioning and rendering of
|
|
74
|
+
pyglet's built-in objects like Sprites, Shapes, and text. Unlike the projection matrix the view
|
|
75
|
+
matrix defaults to an indentity matrix, and therefore has no effect initially. This makes it useful
|
|
76
|
+
for users to set their own matrix on it, and controll zooming or translating (panning) a "camera".
|
|
77
|
+
The ``Mat4`` class contains helper methods for creating these types of matrixes::
|
|
78
|
+
|
|
79
|
+
# translate the camera +100 on the X axis:
|
|
80
|
+
view_matrix = Mat4.from_translation(vector=Vec3(x=100, y=0, z=0))
|
|
81
|
+
# or scale by 2X (be careful of the Z values):
|
|
82
|
+
view_matrix = Mat4.from_scale(vector=Vec3(x=2.0, y=2.0, z=1.0))
|
|
83
|
+
|
|
84
|
+
window.view = view_matrix
|
|
85
|
+
|
|
86
|
+
You can of course create multiple matrixes and multiply them together, such as to zoom and
|
|
87
|
+
then translate, or translate and then zoom, etc. Be careful of multiplication order, as matrix
|
|
88
|
+
multiplication is non-commutative.
|
|
89
|
+
|
|
90
|
+
See the :py:mod:`~pyglet.math` API documentation for a full list of helper class methods.
|
|
91
|
+
|
|
92
|
+
|
|
93
|
+
Matrix Multiplication
|
|
94
|
+
---------------------
|
|
95
|
+
Matrix classes in pyglet use the Python ``matmul`` (``@``) operator for matrix multiplication.
|
|
96
|
+
The ``star`` operator (``*``) is not allowed, and will raise an exception. For example::
|
|
97
|
+
|
|
98
|
+
new_matrix = rotation_matrix @ translation_matrix
|
|
99
|
+
|
|
100
|
+
|
|
101
|
+
Creating Vectors
|
|
102
|
+
----------------
|
|
103
|
+
pyglet includes classes for 2D, 3D, and 4D vectors: :py:class:`~pyglet.math.Vec2`,
|
|
104
|
+
:py:class:`~pyglet.math.Vec3` and :py:class:`~pyglet.math.Vec4`. These Vec types support
|
|
105
|
+
most mathematical operations, and implement helper methods for most common vector operations.
|
|
106
|
+
Vecs are created with their values.
|
|
107
|
+
|
|
108
|
+
myvec2 = Vec2() # same as Vec(x=0.0, y=0.0)
|
|
109
|
+
myvec2 = Vec2(-4.5, 3.0)
|
|
110
|
+
myvec3 = Vec3(100.0, 400.0, 1.0)
|
|
111
|
+
|
|
112
|
+
|
|
113
|
+
Vector Operations
|
|
114
|
+
-----------------
|
|
115
|
+
TBD
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
.. _programming-guide-opengles:
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
OpenGL ES
|
|
5
|
+
=========
|
|
6
|
+
|
|
7
|
+
Pyglet has experimental support for OpenGL ES 3.2, with some limitations. Devices like Raspberry Pi 4
|
|
8
|
+
and 5 supports OpenGL ES 3.1 with extensions covering most of the missing 3.2 features (with the
|
|
9
|
+
exception of tessellation shaders). There are likely other devices with ES support that can run Pyglet.
|
|
10
|
+
|
|
11
|
+
Creating a window / context
|
|
12
|
+
---------------------------
|
|
13
|
+
|
|
14
|
+
In order to successfully create a context and window with OpenGL ES we first need to:
|
|
15
|
+
|
|
16
|
+
* Likely disable the shadow window because very few environments supports this
|
|
17
|
+
* Pass in a custom config at window creation specifying OpenGL ES and version
|
|
18
|
+
|
|
19
|
+
Example::
|
|
20
|
+
|
|
21
|
+
import pyglet
|
|
22
|
+
|
|
23
|
+
# Disable shadow window
|
|
24
|
+
pyglet.options.shadow_window = False
|
|
25
|
+
|
|
26
|
+
# Query the best config for the screen
|
|
27
|
+
display = pyglet.display.get_display()
|
|
28
|
+
screen = display.get_default_screen()
|
|
29
|
+
config = screen.get_best_config()
|
|
30
|
+
|
|
31
|
+
# Specify that we want to use OpenGL ES 3.1
|
|
32
|
+
# This is very specific to the Raspberry Pi 4 and 5. Use 3.2 if you can.
|
|
33
|
+
config.opengl_api = "gles"
|
|
34
|
+
config.major_version = 3
|
|
35
|
+
config.minor_version = 1
|
|
36
|
+
|
|
37
|
+
# Create the window
|
|
38
|
+
window = pyglet.window.Window(config=config)
|
|
39
|
+
|
|
40
|
+
|
|
41
|
+
Limitations
|
|
42
|
+
-----------
|
|
43
|
+
|
|
44
|
+
Multisampling
|
|
45
|
+
~~~~~~~~~~~~
|
|
46
|
+
|
|
47
|
+
Be careful with enabling multisampling on the window. Likely
|
|
48
|
+
``get_best_config()`` will not have multisampling enabled.
|
|
49
|
+
|
|
50
|
+
Textures
|
|
51
|
+
~~~~~~~~
|
|
52
|
+
|
|
53
|
+
Pixel format for textures and images are limited to ``RGBA``. If you try to
|
|
54
|
+
load any other pixel format through pyglet's image loading functions you
|
|
55
|
+
will get an error when they are turned into OpenGL textures later.
|
|
56
|
+
|
|
57
|
+
The reason for this limitation is that OpenGL ES does not support pixel
|
|
58
|
+
format conversion during pixel transfer, meaning when calling ``glTexImage``
|
|
59
|
+
to upload pixel data to the GPU, the pixel format must match the internalformat.
|
|
60
|
+
In desktop OpenGL an RGB image will be automatically converted to RGBA during
|
|
61
|
+
this transfer. This is not supported in OpenGL ES.
|
|
62
|
+
|
|
63
|
+
You are, however, free to create your own textures with any pixel format
|
|
64
|
+
using the gl bindings directly.
|
|
65
|
+
|
|
66
|
+
Compute Shader
|
|
67
|
+
~~~~~~~~~~~~~~
|
|
68
|
+
|
|
69
|
+
If you are planning to bind textures to image units with the intention of
|
|
70
|
+
using them in a compute shader, you need to create these textures yourself
|
|
71
|
+
using the gl bindings and allocate space using ``glTexStorage``. Pyglet is
|
|
72
|
+
using ``glTexImage`` to allocate space and upload the pixel data for textures.
|
|
73
|
+
|
|
74
|
+
The difference here is that ``glTexStorage`` creates immutable storage. You can
|
|
75
|
+
only call it once and then fill the allocated space with pixel data using
|
|
76
|
+
``glTexSubImage``. ``glTexImage`` on the other hand can be called multiple times
|
|
77
|
+
reallocating the texture storage each time. Likely OpenGL ES doesn't want to
|
|
78
|
+
deal with the extra complexity of validating the texture storage of images
|
|
79
|
+
every time a compute shader is dispatched.
|
|
80
|
+
|
|
81
|
+
In short: Create your own textures with immutable storage if you are planning
|
|
82
|
+
to use them in a compute shader.
|
|
83
|
+
|
|
84
|
+
Shaders
|
|
85
|
+
-------
|
|
86
|
+
|
|
87
|
+
Pyglet's shader system supports basic conversion between GLSL 1.5/3.3 shaders
|
|
88
|
+
to GLES 3.2 shaders when running in OpenGL ES mode. This is to ensure that
|
|
89
|
+
pyglet's built-in shaders also works with GL ES. This system is not perfect
|
|
90
|
+
and are likely to have some flaws.
|
|
91
|
+
|
|
92
|
+
Currently the shaders are converted to ES 3.1 shaders as a careful approach
|
|
93
|
+
manually enabling extensions needed for ES 3.2. Precisions qualifiers are
|
|
94
|
+
injected using ``mediump`` by default.
|
|
@@ -8,6 +8,10 @@ when presented with a large amount of reference material to read.
|
|
|
8
8
|
This chapter gives a very quick introduction to pyglet without going into
|
|
9
9
|
too much detail.
|
|
10
10
|
|
|
11
|
+
.. Note::
|
|
12
|
+
If you intend to use OpenGL ES with pyglet on devices like the Raspberry
|
|
13
|
+
Pi, please read the :ref:`programming-guide-opengles` section first.
|
|
14
|
+
|
|
11
15
|
Hello, World
|
|
12
16
|
------------
|
|
13
17
|
|
|
@@ -5,7 +5,11 @@ Shaders and Rendering
|
|
|
5
5
|
|
|
6
6
|
At the lowest level, pyglet uses OpenGL to draw graphics in program windows.
|
|
7
7
|
The OpenGL interface is exposed via the :py:mod:`pyglet.gl` module
|
|
8
|
-
(see :ref:`
|
|
8
|
+
(see :ref:`guid
|
|
9
|
+
|
|
10
|
+
.. Note::
|
|
11
|
+
If you intend to use OpenGL ES with pyglet on devices like the Raspberry
|
|
12
|
+
Pi, please read the :ref:`programming-guide-opengles` section first.
|
|
9
13
|
|
|
10
14
|
For new users, however, using the OpenGL interface directly can be daunting.
|
|
11
15
|
The :py:mod:`pyglet.graphics` module provides high level abstractions that
|
|
@@ -147,12 +151,12 @@ Then you can set (or get) the value using the uniform name as a key::
|
|
|
147
151
|
program['time'] = delta_time
|
|
148
152
|
|
|
149
153
|
|
|
150
|
-
Uniform
|
|
151
|
-
|
|
154
|
+
Uniform Blocks and Uniform Buffer Objects
|
|
155
|
+
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
156
|
+
|
|
157
|
+
Pyglet also introspects and makes Uniform Blocks (or Interface Blocks) available, including ways to manage and use Uniform Buffer Objects.
|
|
152
158
|
|
|
153
|
-
Pyglet
|
|
154
|
-
share uniforms between different programs. For example, by default, Pyglet's ``projection`` and ``view`` matrix
|
|
155
|
-
are both contained in the ``WindowBlock`` uniform block. Which looks like this in the vertex shader::
|
|
159
|
+
By default, Pyglet's ``projection`` and ``view`` matrix are both contained in the ``WindowBlock`` uniform block. Which looks like this in the vertex shader::
|
|
156
160
|
|
|
157
161
|
uniform WindowBlock
|
|
158
162
|
{
|
|
@@ -162,8 +166,11 @@ are both contained in the ``WindowBlock`` uniform block. Which looks like this i
|
|
|
162
166
|
|
|
163
167
|
You can view what uniform blocks exist in a :py:class:`~pyglet.graphics.shader.ShaderProgram` using the `uniform_blocks`
|
|
164
168
|
property. This is a dictionary containing a Uniform Block name key to a :py:class:`~pyglet.graphics.shader.UniformBlock`
|
|
165
|
-
object value. In the above example, the name would be ``WindowBlock`` while the ``window`` identifier is used in the GLSL
|
|
166
|
-
|
|
169
|
+
object value. In the above example, the name would be ``WindowBlock`` while the ``window`` instance identifier is used in the GLSL shader itself.
|
|
170
|
+
|
|
171
|
+
Normally with OpenGL, you would have to manually assign a global binding point value to each Uniform Block for each Shader Program, as they are created. With Pyglet, the global binding values and assignments are all taken care of internally.
|
|
172
|
+
|
|
173
|
+
Uniform Blocks can be a convenient way to update uniforms of multiple Shader Programs at once, as their data is shared. This allows you to access the same information from multiple Shader Programs without having to bind every program using it, just to modify the uniform values. This can be achieved through a :py:class:`~pyglet.graphics.shader.UniformBufferObject`.
|
|
167
174
|
|
|
168
175
|
To modify the uniforms in a :py:class:`~pyglet.graphics.shader.UniformBlock`, you must first create a
|
|
169
176
|
:py:class:`~pyglet.graphics.shader.UniformBufferObject` using the
|
|
@@ -171,12 +178,23 @@ To modify the uniforms in a :py:class:`~pyglet.graphics.shader.UniformBlock`, yo
|
|
|
171
178
|
|
|
172
179
|
ubo = program.uniform_blocks['WindowBlock'].create_ubo()
|
|
173
180
|
|
|
174
|
-
The :py:class:`~pyglet.graphics.shader.UniformBufferObject` can then be used
|
|
175
|
-
access to its uniforms::
|
|
181
|
+
The :py:class:`~pyglet.graphics.shader.UniformBufferObject` can then be used as a context manager for easy
|
|
182
|
+
access to update its uniforms::
|
|
176
183
|
|
|
177
184
|
with ubo as window_block:
|
|
178
185
|
window_block.projection[:] = new_matrix
|
|
179
186
|
|
|
187
|
+
You can also create multiple :py:class:`~pyglet.graphics.shader.UniformBufferObject` instances if you need to swap between different sets of data. Calling :py:meth:`~pyglet.graphics.shader.UniformBufferObject.bind` will bind the buffers data to the associated binding point.
|
|
188
|
+
|
|
189
|
+
There may come a point where you don't want a specific :py:class:`~pyglet.graphics.shader.ShaderProgram`, or a group of them, to use the same uniform data set as the rest of your shaders. At this point, you will have to modify the binding point of those Uniform Blocks to one that is unused. This can be done through :py:meth:`~pyglet.graphics.shader.UniformBlock.set_binding`. Once the binding has been set, you will have to create a new :py:class:`~pyglet.graphics.shader.UniformBufferObject` using the :py:meth:`~pyglet.graphics.shader.UniformBlock.create_ubo` method again and supply it with your new data set.
|
|
190
|
+
|
|
191
|
+
.. warning:: When assigning custom binding points through py:meth:`~pyglet.graphics.shader.UniformBlock.set_binding`, it is recommended to use an unassigned binding point, as unexpected behavior may occur. A warning will be output if such a collision occurs.
|
|
192
|
+
|
|
193
|
+
The maximum binding point value is determined by the hardware. This can be retrieved by calling :py:func:`~pyglet.graphics.shader.get_maximum_binding_count`. It is recommended to use a number
|
|
194
|
+
higher than the amount of Uniform Blocks in your application to prevent collisions.
|
|
195
|
+
|
|
196
|
+
.. note:: Binding point 0 cannot be set, as it is used internally for ``WindowBlock``.
|
|
197
|
+
|
|
180
198
|
|
|
181
199
|
Creating Vertex Lists
|
|
182
200
|
^^^^^^^^^^^^^^^^^^^^^
|
|
@@ -41,7 +41,7 @@ def create_alarm(dt):
|
|
|
41
41
|
@register_event_type('on_wake_up')
|
|
42
42
|
class Alarms(EventDispatcher):
|
|
43
43
|
def on_wake_up(self, dt):
|
|
44
|
-
print('Yet another {} seconds wasted! Wake up!'
|
|
44
|
+
print(f'Yet another {dt} seconds wasted! Wake up!')
|
|
45
45
|
|
|
46
46
|
|
|
47
47
|
alarms = Alarms()
|
|
@@ -10,7 +10,6 @@ A message will be printed to stdout when the following events are caught:
|
|
|
10
10
|
|
|
11
11
|
"""
|
|
12
12
|
|
|
13
|
-
from __future__ import print_function
|
|
14
13
|
|
|
15
14
|
import pyglet
|
|
16
15
|
|
|
@@ -23,7 +22,7 @@ if pyglet.compat_platform.startswith('linux'):
|
|
|
23
22
|
|
|
24
23
|
elif pyglet.compat_platform == 'darwin':
|
|
25
24
|
_have_cocoa = True
|
|
26
|
-
from pyglet.window.cocoa import *
|
|
25
|
+
# from pyglet.window.cocoa import *
|
|
27
26
|
|
|
28
27
|
elif pyglet.compat_platform in ('win32', 'cygwin'):
|
|
29
28
|
_have_win32 = True
|
|
@@ -12,7 +12,7 @@ level_label = pyglet.text.Label(text="Version 1: Static Graphics",
|
|
|
12
12
|
# Initialize the player sprite
|
|
13
13
|
player_ship = pyglet.sprite.Sprite(img=resources.player_image, x=400, y=300)
|
|
14
14
|
|
|
15
|
-
# Make three asteroids so we have something to shoot at
|
|
15
|
+
# Make three asteroids so we have something to shoot at
|
|
16
16
|
asteroids = load.asteroids(3, player_ship.position)
|
|
17
17
|
|
|
18
18
|
|
|
@@ -17,7 +17,7 @@ player_ship = player.Player(x=400, y=300, batch=main_batch)
|
|
|
17
17
|
# Make three sprites to represent remaining lives
|
|
18
18
|
player_lives = load.player_lives(2, main_batch)
|
|
19
19
|
|
|
20
|
-
# Make three asteroids so we have something to shoot at
|
|
20
|
+
# Make three asteroids so we have something to shoot at
|
|
21
21
|
asteroids = load.asteroids(3, player_ship.position, main_batch)
|
|
22
22
|
|
|
23
23
|
# Store all objects that update each frame in a list
|
|
@@ -17,7 +17,7 @@ player_ship = player.Player(x=400, y=300, batch=main_batch)
|
|
|
17
17
|
# Make three sprites to represent remaining lives
|
|
18
18
|
player_lives = load.player_lives(2, main_batch)
|
|
19
19
|
|
|
20
|
-
# Make three asteroids so we have something to shoot at
|
|
20
|
+
# Make three asteroids so we have something to shoot at
|
|
21
21
|
asteroids = load.asteroids(3, player_ship.position, main_batch)
|
|
22
22
|
|
|
23
23
|
# Store all objects that update each frame in a list
|
|
@@ -21,7 +21,7 @@ center_image(bullet_image)
|
|
|
21
21
|
asteroid_image = pyglet.resource.image("asteroid.png")
|
|
22
22
|
center_image(asteroid_image)
|
|
23
23
|
|
|
24
|
-
# The engine flame should not be centered on the ship. Rather, it should be shown
|
|
24
|
+
# The engine flame should not be centered on the ship. Rather, it should be shown
|
|
25
25
|
# behind it. To achieve this effect, we just set the anchor point outside the
|
|
26
26
|
# image bounds.
|
|
27
27
|
engine_image = pyglet.resource.image("engine_flame.png")
|
|
@@ -17,7 +17,7 @@ player_ship = player.Player(x=400, y=300, batch=main_batch)
|
|
|
17
17
|
# Make three sprites to represent remaining lives
|
|
18
18
|
player_lives = load.player_lives(2, main_batch)
|
|
19
19
|
|
|
20
|
-
# Make three asteroids so we have something to shoot at
|
|
20
|
+
# Make three asteroids so we have something to shoot at
|
|
21
21
|
asteroids = load.asteroids(3, player_ship.position, main_batch)
|
|
22
22
|
|
|
23
23
|
# Store all objects that update each frame in a list
|
{pyglet-2.1.dev3/examples/game/version5 → pyglet-2.1.dev4/examples/game/version4}/game/resources.py
RENAMED
|
@@ -21,7 +21,7 @@ center_image(bullet_image)
|
|
|
21
21
|
asteroid_image = pyglet.resource.image("asteroid.png")
|
|
22
22
|
center_image(asteroid_image)
|
|
23
23
|
|
|
24
|
-
# The engine flame should not be centered on the ship. Rather, it should be shown
|
|
24
|
+
# The engine flame should not be centered on the ship. Rather, it should be shown
|
|
25
25
|
# behind it. To achieve this effect, we just set the anchor point outside the
|
|
26
26
|
# image bounds.
|
|
27
27
|
engine_image = pyglet.resource.image("engine_flame.png")
|
|
@@ -56,7 +56,7 @@ def reset_level(num_lives=2):
|
|
|
56
56
|
# Make three sprites to represent remaining lives
|
|
57
57
|
player_lives = load.player_lives(num_lives, main_batch)
|
|
58
58
|
|
|
59
|
-
# Make some asteroids so we have something to shoot at
|
|
59
|
+
# Make some asteroids so we have something to shoot at
|
|
60
60
|
asteroids = load.asteroids(num_asteroids, player_ship.position, main_batch)
|
|
61
61
|
|
|
62
62
|
# Store all objects that update each frame in a list
|
|
@@ -120,7 +120,7 @@ def update(dt):
|
|
|
120
120
|
for to_remove in [obj for obj in game_objects if obj.dead]:
|
|
121
121
|
if to_remove == player_ship:
|
|
122
122
|
player_dead = True
|
|
123
|
-
# If the dying object spawned any new objects, add those to the
|
|
123
|
+
# If the dying object spawned any new objects, add those to the
|
|
124
124
|
# game_objects list later
|
|
125
125
|
to_add.extend(to_remove.new_objects)
|
|
126
126
|
|
{pyglet-2.1.dev3/examples/game/version4 → pyglet-2.1.dev4/examples/game/version5}/game/resources.py
RENAMED
|
@@ -21,7 +21,7 @@ center_image(bullet_image)
|
|
|
21
21
|
asteroid_image = pyglet.resource.image("asteroid.png")
|
|
22
22
|
center_image(asteroid_image)
|
|
23
23
|
|
|
24
|
-
# The engine flame should not be centered on the ship. Rather, it should be shown
|
|
24
|
+
# The engine flame should not be centered on the ship. Rather, it should be shown
|
|
25
25
|
# behind it. To achieve this effect, we just set the anchor point outside the
|
|
26
26
|
# image bounds.
|
|
27
27
|
engine_image = pyglet.resource.image("engine_flame.png")
|
|
@@ -8,12 +8,17 @@ Usage::
|
|
|
8
8
|
A checkerboard background is visible behind any transparent areas.
|
|
9
9
|
"""
|
|
10
10
|
|
|
11
|
-
from __future__ import print_function
|
|
12
11
|
|
|
13
12
|
import sys
|
|
14
13
|
|
|
15
14
|
import pyglet
|
|
16
|
-
from pyglet.gl import
|
|
15
|
+
from pyglet.gl import (
|
|
16
|
+
glEnable,
|
|
17
|
+
glBlendFunc,
|
|
18
|
+
GL_BLEND,
|
|
19
|
+
GL_ONE_MINUS_SRC_ALPHA,
|
|
20
|
+
GL_SRC_ALPHA,
|
|
21
|
+
)
|
|
17
22
|
|
|
18
23
|
window = pyglet.window.Window(visible=False, resizable=True)
|
|
19
24
|
|