pyglet 2.1.13__py3-none-any.whl → 3.0.dev1__py3-none-any.whl
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/__init__.py +67 -61
- pyglet/__init__.pyi +15 -8
- pyglet/app/__init__.py +22 -13
- pyglet/app/async_app.py +212 -0
- pyglet/app/base.py +2 -1
- pyglet/app/{xlib.py → linux.py} +3 -3
- pyglet/config/__init__.py +101 -0
- pyglet/config/gl/__init__.py +30 -0
- pyglet/config/gl/egl.py +120 -0
- pyglet/config/gl/macos.py +262 -0
- pyglet/config/gl/windows.py +267 -0
- pyglet/config/gl/x11.py +142 -0
- pyglet/customtypes.py +43 -2
- pyglet/display/__init__.py +8 -6
- pyglet/display/base.py +3 -63
- pyglet/display/cocoa.py +12 -17
- pyglet/display/emscripten.py +39 -0
- pyglet/display/headless.py +23 -30
- pyglet/display/wayland.py +157 -0
- pyglet/display/win32.py +5 -21
- pyglet/display/xlib.py +19 -27
- pyglet/display/xlib_vidmoderestore.py +2 -2
- pyglet/enums.py +183 -0
- pyglet/event.py +0 -1
- pyglet/experimental/geoshader_sprite.py +15 -13
- pyglet/experimental/hidraw.py +6 -15
- pyglet/experimental/multitexture_sprite.py +31 -19
- pyglet/experimental/particles.py +13 -35
- pyglet/font/__init__.py +251 -85
- pyglet/font/base.py +116 -61
- pyglet/font/dwrite/__init__.py +349 -204
- pyglet/font/dwrite/dwrite_lib.py +27 -5
- pyglet/font/fontconfig.py +14 -6
- pyglet/font/freetype.py +138 -87
- pyglet/font/freetype_lib.py +19 -0
- pyglet/font/group.py +179 -0
- pyglet/font/harfbuzz/__init__.py +3 -3
- pyglet/font/pyodide_js.py +310 -0
- pyglet/font/quartz.py +319 -126
- pyglet/font/ttf.py +45 -3
- pyglet/font/user.py +14 -19
- pyglet/font/win32.py +45 -21
- pyglet/graphics/__init__.py +8 -787
- pyglet/graphics/allocation.py +115 -1
- pyglet/graphics/api/__init__.py +77 -0
- pyglet/graphics/api/base.py +299 -0
- pyglet/graphics/api/gl/__init__.py +58 -0
- pyglet/graphics/api/gl/base.py +24 -0
- pyglet/graphics/{vertexbuffer.py → api/gl/buffer.py} +104 -159
- pyglet/graphics/api/gl/cocoa/context.py +76 -0
- pyglet/graphics/api/gl/context.py +391 -0
- pyglet/graphics/api/gl/default_shaders.py +0 -0
- pyglet/graphics/api/gl/draw.py +627 -0
- pyglet/graphics/api/gl/egl/__init__.py +0 -0
- pyglet/graphics/api/gl/egl/context.py +92 -0
- pyglet/graphics/api/gl/enums.py +76 -0
- pyglet/graphics/api/gl/framebuffer.py +315 -0
- pyglet/graphics/api/gl/gl.py +5463 -0
- pyglet/graphics/api/gl/gl_info.py +188 -0
- pyglet/graphics/api/gl/global_opengl.py +226 -0
- pyglet/{gl → graphics/api/gl}/lib.py +34 -18
- pyglet/graphics/api/gl/shader.py +1476 -0
- pyglet/graphics/api/gl/shapes.py +55 -0
- pyglet/graphics/api/gl/sprite.py +102 -0
- pyglet/graphics/api/gl/state.py +219 -0
- pyglet/graphics/api/gl/text.py +190 -0
- pyglet/graphics/api/gl/texture.py +1526 -0
- pyglet/graphics/{vertexarray.py → api/gl/vertexarray.py} +11 -13
- pyglet/graphics/api/gl/vertexdomain.py +751 -0
- pyglet/graphics/api/gl/win32/__init__.py +0 -0
- pyglet/graphics/api/gl/win32/context.py +108 -0
- pyglet/graphics/api/gl/win32/wgl_info.py +24 -0
- pyglet/graphics/api/gl/xlib/__init__.py +0 -0
- pyglet/graphics/api/gl/xlib/context.py +174 -0
- pyglet/{gl → graphics/api/gl/xlib}/glx_info.py +26 -31
- pyglet/graphics/api/gl1/__init__.py +0 -0
- pyglet/{gl → graphics/api/gl1}/gl_compat.py +3 -2
- pyglet/graphics/api/gl2/__init__.py +0 -0
- pyglet/graphics/api/gl2/buffer.py +320 -0
- pyglet/graphics/api/gl2/draw.py +600 -0
- pyglet/graphics/api/gl2/global_opengl.py +122 -0
- pyglet/graphics/api/gl2/shader.py +200 -0
- pyglet/graphics/api/gl2/shapes.py +51 -0
- pyglet/graphics/api/gl2/sprite.py +79 -0
- pyglet/graphics/api/gl2/text.py +175 -0
- pyglet/graphics/api/gl2/vertexdomain.py +364 -0
- pyglet/graphics/api/webgl/__init__.py +233 -0
- pyglet/graphics/api/webgl/buffer.py +302 -0
- pyglet/graphics/api/webgl/context.py +234 -0
- pyglet/graphics/api/webgl/draw.py +590 -0
- pyglet/graphics/api/webgl/enums.py +76 -0
- pyglet/graphics/api/webgl/framebuffer.py +360 -0
- pyglet/graphics/api/webgl/gl.py +1537 -0
- pyglet/graphics/api/webgl/gl_info.py +130 -0
- pyglet/graphics/api/webgl/shader.py +1346 -0
- pyglet/graphics/api/webgl/shapes.py +92 -0
- pyglet/graphics/api/webgl/sprite.py +102 -0
- pyglet/graphics/api/webgl/state.py +227 -0
- pyglet/graphics/api/webgl/text.py +187 -0
- pyglet/graphics/api/webgl/texture.py +1227 -0
- pyglet/graphics/api/webgl/vertexarray.py +54 -0
- pyglet/graphics/api/webgl/vertexdomain.py +616 -0
- pyglet/graphics/api/webgl/webgl_js.pyi +307 -0
- pyglet/{image → graphics}/atlas.py +33 -32
- pyglet/graphics/base.py +10 -0
- pyglet/graphics/buffer.py +245 -0
- pyglet/graphics/draw.py +578 -0
- pyglet/graphics/framebuffer.py +26 -0
- pyglet/graphics/instance.py +178 -69
- pyglet/graphics/shader.py +267 -1553
- pyglet/graphics/state.py +83 -0
- pyglet/graphics/texture.py +703 -0
- pyglet/graphics/vertexdomain.py +695 -538
- pyglet/gui/ninepatch.py +10 -10
- pyglet/gui/widgets.py +120 -10
- pyglet/image/__init__.py +20 -1973
- pyglet/image/animation.py +12 -12
- pyglet/image/base.py +730 -0
- pyglet/image/codecs/__init__.py +9 -0
- pyglet/image/codecs/bmp.py +53 -30
- pyglet/image/codecs/dds.py +53 -31
- pyglet/image/codecs/gdiplus.py +38 -14
- pyglet/image/codecs/gdkpixbuf2.py +0 -2
- pyglet/image/codecs/js_image.py +99 -0
- pyglet/image/codecs/ktx2.py +161 -0
- pyglet/image/codecs/pil.py +1 -1
- pyglet/image/codecs/png.py +1 -1
- pyglet/image/codecs/wic.py +11 -2
- pyglet/info.py +26 -24
- pyglet/input/__init__.py +8 -0
- pyglet/input/base.py +163 -105
- pyglet/input/controller.py +13 -19
- pyglet/input/controller_db.py +39 -24
- pyglet/input/emscripten/__init__.py +18 -0
- pyglet/input/emscripten/gamepad_js.py +397 -0
- pyglet/input/linux/__init__.py +11 -5
- pyglet/input/linux/evdev.py +10 -11
- pyglet/input/linux/x11_xinput.py +2 -2
- pyglet/input/linux/x11_xinput_tablet.py +1 -1
- pyglet/input/macos/__init__.py +7 -2
- pyglet/input/macos/darwin_gc.py +559 -0
- pyglet/input/win32/__init__.py +1 -1
- pyglet/input/win32/directinput.py +34 -29
- pyglet/input/win32/xinput.py +11 -61
- pyglet/lib.py +3 -3
- pyglet/libs/__init__.py +1 -1
- pyglet/{gl → libs/darwin}/agl.py +1 -1
- pyglet/libs/darwin/cocoapy/__init__.py +2 -2
- pyglet/libs/darwin/cocoapy/cocoahelpers.py +181 -0
- pyglet/libs/darwin/cocoapy/cocoalibs.py +31 -0
- pyglet/libs/darwin/cocoapy/cocoatypes.py +27 -0
- pyglet/libs/darwin/cocoapy/runtime.py +81 -45
- pyglet/libs/darwin/coreaudio.py +4 -4
- pyglet/{gl → libs/darwin}/lib_agl.py +9 -8
- pyglet/libs/darwin/quartzkey.py +1 -3
- pyglet/libs/egl/__init__.py +2 -0
- pyglet/libs/egl/egl_lib.py +576 -0
- pyglet/libs/egl/eglext.py +51 -5
- pyglet/libs/linux/__init__.py +0 -0
- pyglet/libs/linux/egl/__init__.py +0 -0
- pyglet/libs/linux/egl/eglext.py +22 -0
- pyglet/libs/linux/glx/__init__.py +0 -0
- pyglet/{gl → libs/linux/glx}/glx.py +13 -14
- pyglet/{gl → libs/linux/glx}/glxext_arb.py +408 -192
- pyglet/{gl → libs/linux/glx}/glxext_mesa.py +1 -1
- pyglet/{gl → libs/linux/glx}/glxext_nv.py +345 -164
- pyglet/{gl → libs/linux/glx}/lib_glx.py +3 -2
- pyglet/libs/linux/wayland/__init__.py +0 -0
- pyglet/libs/linux/wayland/client.py +1068 -0
- pyglet/libs/linux/wayland/lib_wayland.py +207 -0
- pyglet/libs/linux/wayland/wayland_egl.py +38 -0
- pyglet/libs/{wayland → linux/wayland}/xkbcommon.py +26 -0
- pyglet/libs/{x11 → linux/x11}/xf86vmode.py +4 -4
- pyglet/libs/{x11 → linux/x11}/xinerama.py +2 -2
- pyglet/libs/{x11 → linux/x11}/xinput.py +10 -10
- pyglet/libs/linux/x11/xrandr.py +0 -0
- pyglet/libs/{x11 → linux/x11}/xrender.py +1 -1
- pyglet/libs/shared/__init__.py +0 -0
- pyglet/libs/shared/spirv/__init__.py +0 -0
- pyglet/libs/shared/spirv/lib_shaderc.py +85 -0
- pyglet/libs/shared/spirv/lib_spirv_cross.py +126 -0
- pyglet/libs/win32/__init__.py +28 -8
- pyglet/libs/win32/constants.py +59 -48
- pyglet/libs/win32/context_managers.py +20 -3
- pyglet/libs/win32/dinput.py +105 -88
- pyglet/{gl → libs/win32}/lib_wgl.py +52 -26
- pyglet/libs/win32/types.py +58 -23
- pyglet/{gl → libs/win32}/wgl.py +32 -25
- pyglet/{gl → libs/win32}/wglext_arb.py +364 -2
- pyglet/media/__init__.py +9 -10
- pyglet/media/codecs/__init__.py +12 -1
- pyglet/media/codecs/base.py +99 -96
- pyglet/media/codecs/ffmpeg.py +2 -2
- pyglet/media/codecs/ffmpeg_lib/libavformat.py +3 -8
- pyglet/media/codecs/webaudio_pyodide.py +111 -0
- pyglet/media/drivers/__init__.py +9 -4
- pyglet/media/drivers/base.py +4 -4
- pyglet/media/drivers/openal/__init__.py +1 -1
- pyglet/media/drivers/openal/adaptation.py +3 -3
- pyglet/media/drivers/pulse/__init__.py +1 -1
- pyglet/media/drivers/pulse/adaptation.py +3 -3
- pyglet/media/drivers/pyodide_js/__init__.py +8 -0
- pyglet/media/drivers/pyodide_js/adaptation.py +288 -0
- pyglet/media/drivers/xaudio2/adaptation.py +3 -3
- pyglet/media/player.py +276 -193
- pyglet/media/player_worker_thread.py +1 -1
- pyglet/model/__init__.py +39 -29
- pyglet/model/codecs/base.py +4 -4
- pyglet/model/codecs/gltf.py +3 -3
- pyglet/model/codecs/obj.py +71 -43
- pyglet/resource.py +129 -78
- pyglet/shapes.py +154 -194
- pyglet/sprite.py +47 -164
- pyglet/text/__init__.py +44 -54
- pyglet/text/caret.py +12 -7
- pyglet/text/document.py +19 -17
- pyglet/text/formats/html.py +2 -2
- pyglet/text/formats/structured.py +10 -40
- pyglet/text/layout/__init__.py +20 -13
- pyglet/text/layout/base.py +176 -287
- pyglet/text/layout/incremental.py +9 -10
- pyglet/text/layout/scrolling.py +7 -95
- pyglet/window/__init__.py +183 -172
- pyglet/window/cocoa/__init__.py +62 -51
- pyglet/window/cocoa/pyglet_delegate.py +2 -25
- pyglet/window/cocoa/pyglet_view.py +9 -8
- pyglet/window/dialog/__init__.py +184 -0
- pyglet/window/dialog/base.py +99 -0
- pyglet/window/dialog/darwin.py +121 -0
- pyglet/window/dialog/linux.py +72 -0
- pyglet/window/dialog/windows.py +194 -0
- pyglet/window/emscripten/__init__.py +779 -0
- pyglet/window/headless/__init__.py +44 -28
- pyglet/window/key.py +2 -0
- pyglet/window/mouse.py +2 -2
- pyglet/window/wayland/__init__.py +377 -0
- pyglet/window/win32/__init__.py +101 -46
- pyglet/window/xlib/__init__.py +104 -66
- {pyglet-2.1.13.dist-info → pyglet-3.0.dev1.dist-info}/METADATA +2 -3
- pyglet-3.0.dev1.dist-info/RECORD +322 -0
- {pyglet-2.1.13.dist-info → pyglet-3.0.dev1.dist-info}/WHEEL +1 -1
- pyglet/gl/__init__.py +0 -208
- pyglet/gl/base.py +0 -499
- pyglet/gl/cocoa.py +0 -309
- pyglet/gl/gl.py +0 -4625
- pyglet/gl/gl.pyi +0 -2320
- pyglet/gl/gl_compat.pyi +0 -3097
- pyglet/gl/gl_info.py +0 -190
- pyglet/gl/headless.py +0 -166
- pyglet/gl/wgl_info.py +0 -36
- pyglet/gl/wglext_nv.py +0 -1096
- pyglet/gl/win32.py +0 -268
- pyglet/gl/xlib.py +0 -295
- pyglet/image/buffer.py +0 -274
- pyglet/image/codecs/s3tc.py +0 -354
- pyglet/libs/x11/xrandr.py +0 -166
- pyglet-2.1.13.dist-info/RECORD +0 -234
- /pyglet/{libs/wayland → graphics/api/gl/cocoa}/__init__.py +0 -0
- /pyglet/libs/{egl → linux/egl}/egl.py +0 -0
- /pyglet/libs/{egl → linux/egl}/lib.py +0 -0
- /pyglet/libs/{ioctl.py → linux/ioctl.py} +0 -0
- /pyglet/libs/{wayland → linux/wayland}/gbm.py +0 -0
- /pyglet/libs/{x11 → linux/x11}/__init__.py +0 -0
- /pyglet/libs/{x11 → linux/x11}/cursorfont.py +0 -0
- /pyglet/libs/{x11 → linux/x11}/xlib.py +0 -0
- /pyglet/libs/{x11 → linux/x11}/xsync.py +0 -0
- {pyglet-2.1.13.dist-info/licenses → pyglet-3.0.dev1.dist-info}/LICENSE +0 -0
pyglet/experimental/hidraw.py
CHANGED
|
@@ -1,30 +1,21 @@
|
|
|
1
1
|
"""Work in progress HIDRAW device abstraction for Linux"""
|
|
2
2
|
|
|
3
3
|
import os
|
|
4
|
-
import fcntl
|
|
5
4
|
import ctypes
|
|
6
|
-
import warnings
|
|
7
5
|
|
|
8
|
-
from ctypes import c_int as _int
|
|
9
6
|
from ctypes import c_uint as _uint
|
|
10
7
|
from ctypes import c_uint8 as _u8
|
|
11
|
-
from ctypes import c_uint16 as _u16
|
|
12
8
|
from ctypes import c_int16 as _s16
|
|
13
9
|
from ctypes import c_uint32 as _u32
|
|
14
|
-
from ctypes import c_int32 as _s32
|
|
15
|
-
from ctypes import c_int64 as _s64
|
|
16
10
|
from ctypes import create_string_buffer
|
|
17
11
|
|
|
18
|
-
from concurrent.futures import ThreadPoolExecutor
|
|
19
|
-
|
|
20
12
|
import pyglet
|
|
21
13
|
|
|
22
|
-
from pyglet.app.
|
|
23
|
-
from pyglet.libs.ioctl import _IOR, _IOR_str, _IOWR_len
|
|
24
|
-
from pyglet.input.base import Device
|
|
25
|
-
from pyglet.input.base import DeviceOpenException
|
|
14
|
+
from pyglet.app.linux import LinuxSelectDevice
|
|
15
|
+
from pyglet.libs.linux.ioctl import _IOR, _IOR_str, _IOWR_len
|
|
16
|
+
from pyglet.input.base import Device
|
|
17
|
+
from pyglet.input.base import DeviceOpenException
|
|
26
18
|
from pyglet.input.linux.evdev_constants import *
|
|
27
|
-
from pyglet.input.controller import get_mapping, Relation, create_guid
|
|
28
19
|
|
|
29
20
|
|
|
30
21
|
# From /linux/blob/master/include/uapi/linux/hidraw.h
|
|
@@ -83,7 +74,7 @@ def get_set_bits(bytestring):
|
|
|
83
74
|
return bits
|
|
84
75
|
|
|
85
76
|
|
|
86
|
-
class HIDRawDevice(
|
|
77
|
+
class HIDRawDevice(LinuxSelectDevice, Device):
|
|
87
78
|
_fileno = None
|
|
88
79
|
|
|
89
80
|
def __init__(self, display, filename):
|
|
@@ -150,7 +141,7 @@ class HIDRawDevice(XlibSelectDevice, Device):
|
|
|
150
141
|
# def ff_upload_effect(self, structure):
|
|
151
142
|
# os.write(self._fileno, structure)
|
|
152
143
|
|
|
153
|
-
#
|
|
144
|
+
# LinuxSelectDevice interface
|
|
154
145
|
|
|
155
146
|
def fileno(self):
|
|
156
147
|
return self._fileno
|
|
@@ -7,12 +7,25 @@ from __future__ import annotations
|
|
|
7
7
|
from typing import TYPE_CHECKING
|
|
8
8
|
|
|
9
9
|
import pyglet
|
|
10
|
-
from pyglet.gl import
|
|
11
|
-
|
|
10
|
+
from pyglet.graphics.api.gl import (
|
|
11
|
+
GL_BLEND,
|
|
12
|
+
GL_MAX_TEXTURE_IMAGE_UNITS,
|
|
13
|
+
GL_ONE_MINUS_SRC_ALPHA,
|
|
14
|
+
GL_SRC_ALPHA,
|
|
15
|
+
GL_TEXTURE0,
|
|
16
|
+
GL_TRIANGLES,
|
|
17
|
+
GLint,
|
|
18
|
+
glActiveTexture,
|
|
19
|
+
glBindTexture,
|
|
20
|
+
glBlendFunc,
|
|
21
|
+
glDisable,
|
|
22
|
+
glEnable,
|
|
23
|
+
glGetIntegerv,
|
|
24
|
+
)
|
|
12
25
|
|
|
13
26
|
if TYPE_CHECKING:
|
|
14
|
-
from pyglet.image import Texture, AbstractImage, Animation
|
|
15
27
|
from pyglet.graphics import Batch, Group, ShaderProgram
|
|
28
|
+
from pyglet.image import _AbstractImage, Animation, Texture
|
|
16
29
|
|
|
17
30
|
|
|
18
31
|
class MultiTextureSpriteGroup(pyglet.graphics.Group):
|
|
@@ -113,14 +126,14 @@ class MultiTextureSpriteGroup(pyglet.graphics.Group):
|
|
|
113
126
|
|
|
114
127
|
# Allows the default shader to pick the appropriate sampler for the fragment shader
|
|
115
128
|
_SAMPLER_TYPES = {
|
|
116
|
-
pyglet.gl.GL_TEXTURE_2D: "sampler2D",
|
|
117
|
-
pyglet.gl.GL_TEXTURE_2D_ARRAY: "sampler2DArray"
|
|
129
|
+
pyglet.graphics.api.gl.GL_TEXTURE_2D: "sampler2D",
|
|
130
|
+
pyglet.graphics.api.gl.GL_TEXTURE_2D_ARRAY: "sampler2DArray",
|
|
118
131
|
}
|
|
119
132
|
|
|
120
133
|
# Allows the default shader to grab the correct coords based on texture type
|
|
121
134
|
_SAMPLER_COORDS = {
|
|
122
|
-
pyglet.gl.GL_TEXTURE_2D: ".xy",
|
|
123
|
-
pyglet.gl.GL_TEXTURE_2D_ARRAY: ""
|
|
135
|
+
pyglet.graphics.api.gl.GL_TEXTURE_2D: ".xy",
|
|
136
|
+
pyglet.graphics.api.gl.GL_TEXTURE_2D_ARRAY: "",
|
|
124
137
|
}
|
|
125
138
|
|
|
126
139
|
|
|
@@ -137,9 +150,9 @@ def _get_default_mt_shader(images: dict[str, Texture]) -> ShaderProgram:
|
|
|
137
150
|
assert len(images) <= max_tex.value, f"Only {max_tex.value} Texture Units are available."
|
|
138
151
|
|
|
139
152
|
# Generate the default vertex shader
|
|
140
|
-
in_tex_coords = '\n'.join([f"in vec3 {name}_coords;" for name in images
|
|
141
|
-
out_tex_coords = '\n'.join([f"out vec3 {name}_coords_frag;" for name in images
|
|
142
|
-
tex_coords_assignments = '\n'.join([f"{name}_coords_frag = {name}_coords;" for name in images
|
|
153
|
+
in_tex_coords = '\n'.join([f"in vec3 {name}_coords;" for name in images])
|
|
154
|
+
out_tex_coords = '\n'.join([f"out vec3 {name}_coords_frag;" for name in images])
|
|
155
|
+
tex_coords_assignments = '\n'.join([f"{name}_coords_frag = {name}_coords;" for name in images])
|
|
143
156
|
|
|
144
157
|
vertex_source = f"""
|
|
145
158
|
#version 150 core
|
|
@@ -182,7 +195,7 @@ def _get_default_mt_shader(images: dict[str, Texture]) -> ShaderProgram:
|
|
|
182
195
|
}}
|
|
183
196
|
"""
|
|
184
197
|
|
|
185
|
-
in_tex_coords = '\n'.join([f"in vec3 {name}_coords_frag;" for name in images
|
|
198
|
+
in_tex_coords = '\n'.join([f"in vec3 {name}_coords_frag;" for name in images])
|
|
186
199
|
uniform_samplers = '\n'.join([f"uniform {_SAMPLER_TYPES[tex.target]} {name};" for name,tex in images.items()])
|
|
187
200
|
tex_operations = '\n'.join([f" color = layer(texture({name}, {name}_coords_frag{_SAMPLER_COORDS[tex.target]}), color);" for name, tex in images.items()])
|
|
188
201
|
fragment_source = f"""
|
|
@@ -206,7 +219,7 @@ def _get_default_mt_shader(images: dict[str, Texture]) -> ShaderProgram:
|
|
|
206
219
|
}}
|
|
207
220
|
"""
|
|
208
221
|
|
|
209
|
-
return pyglet.
|
|
222
|
+
return pyglet.graphics.api.core.current_context.create_program((vertex_source, 'vertex'), (fragment_source, 'fragment'))
|
|
210
223
|
|
|
211
224
|
|
|
212
225
|
class MultiTextureSprite(pyglet.sprite.Sprite):
|
|
@@ -252,7 +265,7 @@ class MultiTextureSprite(pyglet.sprite.Sprite):
|
|
|
252
265
|
group_class = MultiTextureSpriteGroup
|
|
253
266
|
|
|
254
267
|
def __init__(self,
|
|
255
|
-
images: dict[str,
|
|
268
|
+
images: dict[str, _AbstractImage | Animation],
|
|
256
269
|
x: float = 0, y: float = 0, z: float = 0,
|
|
257
270
|
blend_src: int = GL_SRC_ALPHA,
|
|
258
271
|
blend_dest: int = GL_ONE_MINUS_SRC_ALPHA,
|
|
@@ -390,8 +403,7 @@ class MultiTextureSprite(pyglet.sprite.Sprite):
|
|
|
390
403
|
getattr(self._vertex_list,f"{key}_coords")[:] = self._textures[key].tex_coords
|
|
391
404
|
|
|
392
405
|
def _create_vertex_list(self) -> None:
|
|
393
|
-
"""
|
|
394
|
-
Override so we can send over texture coords for each texture being used.
|
|
406
|
+
"""Override so we can send over texture coords for each texture being used.
|
|
395
407
|
"""
|
|
396
408
|
tex_coords = {}
|
|
397
409
|
for name, tex in self._textures.items():
|
|
@@ -439,7 +451,7 @@ class MultiTextureSprite(pyglet.sprite.Sprite):
|
|
|
439
451
|
|
|
440
452
|
return 0
|
|
441
453
|
|
|
442
|
-
def get_layer(self, name: str) ->
|
|
454
|
+
def get_layer(self, name: str) -> _AbstractImage | Animation | None:
|
|
443
455
|
"""Return the requested layer. If it is not found then None is returned
|
|
444
456
|
|
|
445
457
|
Args:
|
|
@@ -448,12 +460,12 @@ class MultiTextureSprite(pyglet.sprite.Sprite):
|
|
|
448
460
|
"""
|
|
449
461
|
if name in self._animations:
|
|
450
462
|
return self._animations[name]
|
|
451
|
-
|
|
463
|
+
if name in self._textures:
|
|
452
464
|
return self._textures[name]
|
|
453
465
|
|
|
454
466
|
return None
|
|
455
467
|
|
|
456
|
-
def set_layer(self, name: str, img:
|
|
468
|
+
def set_layer(self, name: str, img: _AbstractImage | Animation) -> None:
|
|
457
469
|
"""Sets the layer to the new image or animation.
|
|
458
470
|
|
|
459
471
|
This method has no effect if name is not a valid layer. Note: if you
|
|
@@ -504,7 +516,7 @@ class MultiTextureSprite(pyglet.sprite.Sprite):
|
|
|
504
516
|
raise NotImplementedError("MultiTextureSprite does not support the image property. Use get_layer instead.")
|
|
505
517
|
|
|
506
518
|
@image.setter
|
|
507
|
-
def image(self, img:
|
|
519
|
+
def image(self, img: _AbstractImage | Animation) -> None:
|
|
508
520
|
raise NotImplementedError("MultiTextureSprite does not support the image property. Use set_layer instead.")
|
|
509
521
|
|
|
510
522
|
@property
|
pyglet/experimental/particles.py
CHANGED
|
@@ -7,7 +7,8 @@ import time
|
|
|
7
7
|
|
|
8
8
|
import pyglet
|
|
9
9
|
from pyglet import clock, event, graphics, image
|
|
10
|
-
from pyglet.
|
|
10
|
+
from pyglet.graphics import GeometryMode
|
|
11
|
+
from pyglet.graphics.api.gl import *
|
|
11
12
|
|
|
12
13
|
_is_pyglet_doc_run = hasattr(sys, "is_pyglet_doc_run") and sys.is_pyglet_doc_run
|
|
13
14
|
|
|
@@ -176,49 +177,26 @@ fragment_source = """#version 150
|
|
|
176
177
|
|
|
177
178
|
|
|
178
179
|
def get_default_shader():
|
|
179
|
-
return pyglet.
|
|
180
|
-
|
|
181
|
-
|
|
180
|
+
return pyglet.graphics.api.get_cached_shader(
|
|
181
|
+
"default_particles",
|
|
182
|
+
(vertex_source, 'vertex'),
|
|
183
|
+
(geometry_source, 'geometry'),
|
|
184
|
+
(fragment_source, 'fragment'),
|
|
185
|
+
)
|
|
182
186
|
|
|
183
187
|
|
|
184
188
|
class EmitterGroup(graphics.Group):
|
|
185
189
|
def __init__(self, texture, blend_src, blend_dest, program, parent=None):
|
|
186
190
|
super().__init__(parent=parent)
|
|
187
191
|
self.texture = texture
|
|
188
|
-
self.
|
|
189
|
-
self.
|
|
192
|
+
self.set_shader_program(program)
|
|
193
|
+
self.set_texture(texture)
|
|
194
|
+
self.set_blend(blend_src, blend_dest)
|
|
190
195
|
self.program = program
|
|
191
196
|
|
|
192
|
-
def
|
|
193
|
-
self.program.use()
|
|
194
|
-
|
|
195
|
-
glActiveTexture(GL_TEXTURE0)
|
|
196
|
-
glBindTexture(self.texture.target, self.texture.id)
|
|
197
|
-
|
|
198
|
-
glEnable(GL_BLEND)
|
|
199
|
-
glBlendFunc(self.blend_src, self.blend_dest)
|
|
200
|
-
|
|
201
|
-
def unset_state(self):
|
|
202
|
-
glDisable(GL_BLEND)
|
|
203
|
-
self.program.stop()
|
|
204
|
-
|
|
205
|
-
def __repr__(self):
|
|
197
|
+
def __repr__(self) -> str:
|
|
206
198
|
return f"{self.__class__.__name__}({self.texture})"
|
|
207
199
|
|
|
208
|
-
def __eq__(self, other):
|
|
209
|
-
return (other.__class__ is self.__class__ and
|
|
210
|
-
self.program is other.program and
|
|
211
|
-
self.parent == other.parent and
|
|
212
|
-
self.texture.target == other.texture.target and
|
|
213
|
-
self.texture.id == other.texture.id and
|
|
214
|
-
self.blend_src == other.blend_src and
|
|
215
|
-
self.blend_dest == other.blend_dest)
|
|
216
|
-
|
|
217
|
-
def __hash__(self):
|
|
218
|
-
return hash((self.program, self.parent,
|
|
219
|
-
self.texture.id, self.texture.target,
|
|
220
|
-
self.blend_src, self.blend_dest))
|
|
221
|
-
|
|
222
200
|
|
|
223
201
|
class Emitter(event.EventDispatcher):
|
|
224
202
|
_batch = None
|
|
@@ -267,7 +245,7 @@ class Emitter(event.EventDispatcher):
|
|
|
267
245
|
texture = self._texture
|
|
268
246
|
count = self._count
|
|
269
247
|
self._vertex_list = self.program.vertex_list(
|
|
270
|
-
count,
|
|
248
|
+
count, GeometryMode.POINTS, self._batch, self._group,
|
|
271
249
|
position=('f', (self._x, self._y, self._z) * count),
|
|
272
250
|
|
|
273
251
|
size=('f', (texture.width, texture.height, texture.anchor_x, texture.anchor_y) * count),
|