pyglet 2.1.3__py3-none-any.whl → 2.1.4__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.
Files changed (61) hide show
  1. pyglet/__init__.py +21 -9
  2. pyglet/__init__.pyi +3 -1
  3. pyglet/app/cocoa.py +6 -3
  4. pyglet/display/win32.py +14 -15
  5. pyglet/display/xlib_vidmoderestore.py +1 -1
  6. pyglet/extlibs/earcut.py +2 -2
  7. pyglet/font/__init__.py +3 -3
  8. pyglet/font/base.py +118 -51
  9. pyglet/font/dwrite/__init__.py +1381 -0
  10. pyglet/font/dwrite/d2d1_lib.py +637 -0
  11. pyglet/font/dwrite/d2d1_types_lib.py +60 -0
  12. pyglet/font/dwrite/dwrite_lib.py +1577 -0
  13. pyglet/font/fontconfig.py +79 -16
  14. pyglet/font/freetype.py +252 -77
  15. pyglet/font/freetype_lib.py +234 -125
  16. pyglet/font/harfbuzz/__init__.py +275 -0
  17. pyglet/font/harfbuzz/harfbuzz_lib.py +212 -0
  18. pyglet/font/quartz.py +432 -112
  19. pyglet/font/user.py +18 -11
  20. pyglet/font/win32.py +9 -1
  21. pyglet/gl/wgl.py +94 -87
  22. pyglet/gl/wglext_arb.py +472 -218
  23. pyglet/gl/wglext_nv.py +410 -188
  24. pyglet/gui/widgets.py +6 -1
  25. pyglet/image/codecs/bmp.py +3 -5
  26. pyglet/image/codecs/gdiplus.py +28 -9
  27. pyglet/image/codecs/wic.py +198 -489
  28. pyglet/image/codecs/wincodec_lib.py +413 -0
  29. pyglet/input/base.py +3 -2
  30. pyglet/input/macos/darwin_hid.py +28 -2
  31. pyglet/input/win32/directinput.py +2 -1
  32. pyglet/input/win32/xinput.py +10 -9
  33. pyglet/lib.py +14 -2
  34. pyglet/libs/darwin/cocoapy/cocoalibs.py +74 -3
  35. pyglet/libs/darwin/coreaudio.py +0 -2
  36. pyglet/libs/win32/__init__.py +4 -2
  37. pyglet/libs/win32/com.py +65 -12
  38. pyglet/libs/win32/constants.py +1 -0
  39. pyglet/libs/win32/dinput.py +1 -9
  40. pyglet/libs/win32/types.py +72 -8
  41. pyglet/media/codecs/coreaudio.py +1 -0
  42. pyglet/media/codecs/wmf.py +93 -72
  43. pyglet/media/devices/win32.py +5 -4
  44. pyglet/media/drivers/directsound/lib_dsound.py +4 -4
  45. pyglet/media/drivers/xaudio2/interface.py +21 -17
  46. pyglet/media/drivers/xaudio2/lib_xaudio2.py +42 -25
  47. pyglet/shapes.py +1 -1
  48. pyglet/text/document.py +7 -53
  49. pyglet/text/formats/attributed.py +3 -1
  50. pyglet/text/formats/plaintext.py +1 -1
  51. pyglet/text/formats/structured.py +1 -1
  52. pyglet/text/layout/base.py +76 -68
  53. pyglet/text/layout/incremental.py +38 -8
  54. pyglet/text/layout/scrolling.py +1 -1
  55. pyglet/text/runlist.py +2 -114
  56. pyglet/window/win32/__init__.py +1 -3
  57. {pyglet-2.1.3.dist-info → pyglet-2.1.4.dist-info}/METADATA +1 -1
  58. {pyglet-2.1.3.dist-info → pyglet-2.1.4.dist-info}/RECORD +60 -54
  59. pyglet/font/directwrite.py +0 -2798
  60. {pyglet-2.1.3.dist-info → pyglet-2.1.4.dist-info}/LICENSE +0 -0
  61. {pyglet-2.1.3.dist-info → pyglet-2.1.4.dist-info}/WHEEL +0 -0
@@ -3,8 +3,10 @@ from __future__ import annotations
3
3
  import sys
4
4
  from typing import TYPE_CHECKING, Any, ClassVar
5
5
 
6
+ import unicodedata
7
+
6
8
  from pyglet.event import EventDispatcher
7
- from pyglet.font.base import grapheme_break
9
+ from pyglet.font.base import grapheme_break, GlyphPosition
8
10
  from pyglet.text import runlist
9
11
  from pyglet.text.layout.base import (
10
12
  TextLayout,
@@ -118,6 +120,9 @@ class IncrementalTextLayout(TextLayout, EventDispatcher):
118
120
  #: :meta private:
119
121
  self.glyphs = []
120
122
 
123
+ #: :meta private:
124
+ self.offsets = []
125
+
121
126
  #: :meta private:
122
127
  # All lines in the document, including those hidden from view.
123
128
  self.lines = []
@@ -163,6 +168,7 @@ class IncrementalTextLayout(TextLayout, EventDispatcher):
163
168
  def on_insert_text(self, start: int, text: str) -> None:
164
169
  len_text = len(text)
165
170
  self.glyphs[start:start] = [None] * len_text
171
+ self.offsets[start:start] = [GlyphPosition(0, 0, 0, 0)] * len_text
166
172
 
167
173
  self._invalid_glyphs.insert(start, len_text)
168
174
 
@@ -186,6 +192,7 @@ class IncrementalTextLayout(TextLayout, EventDispatcher):
186
192
 
187
193
  def on_delete_text(self, start: int, end: int) -> None:
188
194
  self.glyphs[start:end] = []
195
+ self.offsets[start:end] = []
189
196
 
190
197
  # Same requirement as on_insert_text
191
198
  if self._multiline and self._content_valign != "top":
@@ -240,6 +247,7 @@ class IncrementalTextLayout(TextLayout, EventDispatcher):
240
247
  self.lines[0].descent = font.descent
241
248
  self.lines[0].paragraph_begin = self.lines[0].paragraph_end = True
242
249
  self._invalid_lines.invalidate(0, 1)
250
+ self.offsets.clear()
243
251
 
244
252
  self._update_glyphs()
245
253
  self._update_flow_glyphs()
@@ -265,16 +273,25 @@ class IncrementalTextLayout(TextLayout, EventDispatcher):
265
273
  if invalid_end - invalid_start <= 0:
266
274
  return
267
275
 
276
+
268
277
  # Find grapheme breaks and extend glyph range to encompass.
269
278
  text = self.document.text
270
279
  while invalid_start > 0:
271
- if grapheme_break(text[invalid_start - 1], text[invalid_start]):
280
+ left = text[invalid_start - 1]
281
+ right = text[invalid_start]
282
+ right_cc = unicodedata.category(right)
283
+ left_cc = unicodedata.category(left)
284
+ if grapheme_break(left, left_cc, right, right_cc):
272
285
  break
273
286
  invalid_start -= 1
274
287
 
275
288
  len_text = len(text)
276
289
  while invalid_end < len_text:
277
- if grapheme_break(text[invalid_end - 1], text[invalid_end]):
290
+ left = text[invalid_end - 1]
291
+ right = text[invalid_end]
292
+ right_cc = unicodedata.category(right)
293
+ left_cc = unicodedata.category(left)
294
+ if grapheme_break(left, left_cc, right, right_cc):
278
295
  break
279
296
  invalid_end += 1
280
297
 
@@ -285,13 +302,15 @@ class IncrementalTextLayout(TextLayout, EventDispatcher):
285
302
  for start, end, (font, element) in runs.ranges(invalid_start, invalid_end):
286
303
  if element:
287
304
  self.glyphs[start] = _InlineElementBox(element)
305
+ self.offsets[start] = GlyphPosition(0, 0, 0, 0)
288
306
  else:
289
307
  text = self.document.text[start:end]
290
- self.glyphs[start:end] = font.get_glyphs(text)
308
+ glyphs, offsets = font.get_glyphs(text)
309
+ self.glyphs[start:end] = glyphs
310
+ self.offsets[start:end] = offsets
291
311
 
292
312
  # Update owner runs
293
- owner_runs = self._get_owner_runs(self.glyphs[invalid_start:invalid_end])
294
- self._owner_runs.set_runs(invalid_start, invalid_end, owner_runs)
313
+ self._get_owner_runs(self._owner_runs, self.glyphs, invalid_start, invalid_end)
295
314
 
296
315
  # Updated glyphs need flowing
297
316
  self._invalid_flow.invalidate(invalid_start, invalid_end)
@@ -334,7 +353,7 @@ class IncrementalTextLayout(TextLayout, EventDispatcher):
334
353
  content_width_invalid = False
335
354
  next_start = invalid_start
336
355
 
337
- for line in self._flow_glyphs(self.glyphs, self._owner_runs, invalid_start, len(self._document.text)):
356
+ for line in self._flow_glyphs(self.glyphs, self.offsets, self._owner_runs, invalid_start, len(self._document.text)):
338
357
  try:
339
358
  old_line = self.lines[line_index]
340
359
  old_line.delete(self)
@@ -444,6 +463,7 @@ class IncrementalTextLayout(TextLayout, EventDispatcher):
444
463
  self._anchor_left = self._get_left_anchor()
445
464
  self._anchor_bottom = self._get_bottom_anchor()
446
465
  top_anchor = self._get_top_anchor()
466
+ group_ct = len(self.group_cache)
447
467
 
448
468
  for line in lines:
449
469
  line.delete(self)
@@ -462,6 +482,10 @@ class IncrementalTextLayout(TextLayout, EventDispatcher):
462
482
  if update_view_translation:
463
483
  self._update_view_translation()
464
484
 
485
+ # Update groups with scissor areas if any groups were changed.
486
+ if group_ct != len(self.group_cache):
487
+ self._update_scissor_area()
488
+
465
489
  @property
466
490
  def x(self) -> float:
467
491
  return self._x
@@ -478,6 +502,8 @@ class IncrementalTextLayout(TextLayout, EventDispatcher):
478
502
  @y.setter
479
503
  def y(self, y: float) -> None:
480
504
  super()._set_y(y)
505
+ # Invalidate vertices, as the vertices will have changed.
506
+ self._invalid_vertex_lines.invalidate(0, len(self.document.text))
481
507
  self._update_scissor_area()
482
508
 
483
509
  @property
@@ -495,7 +521,11 @@ class IncrementalTextLayout(TextLayout, EventDispatcher):
495
521
 
496
522
  @position.setter
497
523
  def position(self, position: tuple[float, float, float]) -> None:
524
+ old_y = self._y
498
525
  super()._set_position(position)
526
+ # Invalidate the lines if the Y changed.
527
+ if self._y != old_y:
528
+ self._invalid_vertex_lines.invalidate(0, len(self.document.text))
499
529
  self._update_view_translation()
500
530
  self._update_scissor_area()
501
531
 
@@ -544,8 +574,8 @@ class IncrementalTextLayout(TextLayout, EventDispatcher):
544
574
  if height == self._height:
545
575
  return
546
576
  self._height = height
577
+ self._update_visible_lines()
547
578
  if self._update_enabled:
548
- self._update_visible_lines()
549
579
  self._update_vertex_lists()
550
580
 
551
581
  @property
@@ -123,7 +123,7 @@ class ScrollableTextLayout(TextLayout):
123
123
  _translate_x: int = 0
124
124
  _translate_y: int = 0
125
125
 
126
- def __init__(self, document: AbstractDocument,
126
+ def __init__(self, document: AbstractDocument, # noqa: D107
127
127
  x: float = 0, y: float = 0, z: float = 0,
128
128
  width: int = None, height: int = None,
129
129
  anchor_x: AnchorX = 'left', anchor_y: AnchorY = 'bottom', rotation: float = 0, multiline: bool = False,
pyglet/text/runlist.py CHANGED
@@ -5,6 +5,7 @@ from typing import Any, Callable, Generator, Iterable, Iterator
5
5
 
6
6
 
7
7
  class _Run:
8
+ __slots__ = ('count', 'value')
8
9
  def __init__(self, value: Any, count: int) -> None:
9
10
  self.value = value
10
11
  self.count = count
@@ -33,6 +34,7 @@ class RunList:
33
34
  ``set_run(2, 5, 'x')`` would change the sequence to ``aaxxxbccccc``.
34
35
  """
35
36
  runs: list[_Run]
37
+ __slots__ = ['runs']
36
38
 
37
39
  def __init__(self, size: int, initial: Any) -> None:
38
40
  """Create a run list of the given size and a default value.
@@ -64,7 +66,6 @@ class RunList:
64
66
  for run in self.runs:
65
67
  if i <= pos <= i + run.count:
66
68
  run.count += length
67
- break
68
69
  i += run.count
69
70
 
70
71
  def delete(self, start: int, end: int) -> None:
@@ -156,60 +157,6 @@ class RunList:
156
157
  # Delete collapsed runs
157
158
  self.runs = [r for r in self.runs if r.count > 0]
158
159
 
159
- def append(self, length: int):
160
- """Append characters into end of the run list.
161
-
162
- The appended characters will take on the value immediately preceding
163
- the end of run list.
164
-
165
- Args:
166
- length:
167
- Number of characters to insert.
168
-
169
- """
170
- self.runs[-1].count += length
171
-
172
- def append_run(self, count: int, value: Any) -> None:
173
- """
174
- Append a run to the end of the run list.
175
-
176
- Args:
177
- count:
178
- Number of characters to append.
179
- value:
180
- Value to append.
181
- """
182
- if self.runs[-1].value == value:
183
- self.runs[-1].count += count
184
- return
185
- self.runs.append(_Run(value, count))
186
-
187
- def insert_run(self, pos: int, length: int, value: Any) -> None:
188
- """
189
- Insert a run into the run list.
190
-
191
- Args:
192
- pos:
193
- Position to insert run.
194
- length:
195
- Number of characters to insert.
196
- value:
197
- Value to insert.
198
- """
199
- i = 0
200
- for run_i, run in enumerate(self.runs):
201
- if i <= pos <= i + run.count:
202
- if run.value == value:
203
- run.count += length
204
- else:
205
- self.runs.insert(run_i + 1, _Run(value, length))
206
- self.runs.insert(run_i + 2, _Run(run.value, run.count - (pos - i)))
207
- run.count = pos - i
208
- # Delete collapsed runs
209
- self.runs[run_i: run_i+2] = [r for r in self.runs[run_i: run_i+2] if r.count > 0]
210
- break
211
- i += run.count
212
-
213
160
  def __iter__(self) -> Generator[tuple[int, int, Any], Any, None]:
214
161
  i = 0
215
162
  for run in self.runs:
@@ -240,65 +187,6 @@ class RunList:
240
187
 
241
188
  raise IndexError
242
189
 
243
- def set_runs(self, start: int, end: int, runs: RunList) -> None:
244
- """Set a range of runs.
245
-
246
- Args:
247
- start:
248
- Start index of range.
249
- end:
250
- End index of range, exclusive.
251
- runs:
252
- Runs to set.
253
- """
254
- if end - start <= 0:
255
- return
256
-
257
- # Find runs that need to be split
258
- i = 0
259
- start_i = None
260
- start_trim = 0
261
- end_i = None
262
- end_trim = 0
263
- for run_i, run in enumerate(self.runs):
264
- count = run.count
265
- if i < start < i + count:
266
- start_i = run_i
267
- start_trim = start - i
268
- if i < end < i + count:
269
- end_i = run_i
270
- end_trim = end - i
271
- i += count
272
-
273
- # Split runs
274
- if start_i is not None:
275
- run = self.runs[start_i]
276
- self.runs.insert(start_i, _Run(run.value, start_trim))
277
- run.count -= start_trim
278
- if end_i is not None:
279
- if end_i == start_i:
280
- end_trim -= start_trim
281
- end_i += 1
282
- start_i += 1
283
- if end_i is not None:
284
- run = self.runs[end_i]
285
- self.runs.insert(end_i, _Run(run.value, end_trim))
286
- run.count -= end_trim
287
- end_i += 1
288
-
289
- self.runs[start_i: end_i] = runs.runs
290
-
291
- # Merge adjacent runs
292
- last_run = self.runs[0]
293
- for run in self.runs[1:]:
294
- if run.value == last_run.value:
295
- run.count += last_run.count
296
- last_run.count = 0
297
- last_run = run
298
-
299
- # Delete collapsed runs
300
- self.runs = [r for r in self.runs if r.count > 0]
301
-
302
190
  def __repr__(self) -> str:
303
191
  return str(list(self))
304
192
 
@@ -2,7 +2,7 @@ from __future__ import annotations
2
2
 
3
3
  import sys
4
4
  import unicodedata
5
- from ctypes.wintypes import HICON, HWND, MSG, POINT, RECT, UINT
5
+ from ctypes.wintypes import HICON, HWND, MSG, POINT, RECT, SIZE, UINT
6
6
  from functools import lru_cache
7
7
  from typing import Callable, Sequence
8
8
 
@@ -16,8 +16,6 @@ from pyglet.libs.win32.types import (
16
16
  MINMAXINFO,
17
17
  RAWINPUT,
18
18
  RAWINPUTHEADER,
19
- RECT,
20
- SIZE,
21
19
  TRACKMOUSEEVENT,
22
20
  WCHAR,
23
21
  )
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: pyglet
3
- Version: 2.1.3
3
+ Version: 2.1.4
4
4
  Summary: pyglet is a cross-platform games and multimedia package.
5
5
  Author-email: Alex Holkner & contributors <Alex.Holkner@gmail.com>
6
6
  Requires-Python: >=3.8
@@ -1,19 +1,19 @@
1
- pyglet/__init__.py,sha256=_2cToHIzz3aWUJVu5YGot98oZ1csJgn7eGM7n5RCycA,20916
2
- pyglet/__init__.pyi,sha256=uX92LgdKvrYDvhOKRGj86k_33H-P0Yy4AvMClyKlLHo,1932
1
+ pyglet/__init__.py,sha256=kHqUDc60mK0VxKu0-zzJruaIZMBP_SxvN8zUpfd90UU,21486
2
+ pyglet/__init__.pyi,sha256=g-eSsTUa4WDTqTULiN7cRqagvW58NGCPLj9sabXRFjo,2005
3
3
  pyglet/clock.py,sha256=kGQIw6WDFOHVi5IQKCNyoOlOf65B2gVk342M200MaVo,21892
4
4
  pyglet/customtypes.py,sha256=e9AB-8WPPhhZXqfDEf4r2Lv0vAQUBjwig5EBejBDz0k,608
5
5
  pyglet/event.py,sha256=GvtY8dsJjEYeIZTlZ4BOZY4kff8Nme-yMQBMtob0ke8,18533
6
6
  pyglet/info.py,sha256=pDfF59S5uuo_QouRG3I-0j5WVrwxpVYH8EzH2a0qx_8,5835
7
- pyglet/lib.py,sha256=lf8TGjHU0vu8IQW1ihF8tWaFn0bW8UG-EFzzohTVXMA,11379
7
+ pyglet/lib.py,sha256=Mj1W_KDmUQXMg1iPLrM0pIIHDyWPO38J6qvoU_hXKjc,12013
8
8
  pyglet/math.py,sha256=BCSmydmyvRMov1t6GUXZ8Em3F_8TjU82cyvTqMj-QfI,55528
9
9
  pyglet/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
10
10
  pyglet/resource.py,sha256=EknGIAxDuc8prrGd5faOM4MNPT2q6NN4r3KQlrRg2dM,29374
11
- pyglet/shapes.py,sha256=mJQGCjnoq9Wm4J5PXp3JASVbpCxguSsaNRN3P9_RpyU,97419
11
+ pyglet/shapes.py,sha256=olO03zKIg-opxoXk4hgRKRWI0PouXg3KDcN1GGhJhFs,97419
12
12
  pyglet/sprite.py,sha256=hZKXYxvG82rhpagVqCney6KSEF5IAFaqqJC5O-uynHk,28701
13
13
  pyglet/util.py,sha256=b6Ji84EwfJ3jh54FHLTmwvvvbabxJwHFiU6NaXCqMQw,8646
14
14
  pyglet/app/__init__.py,sha256=Cc21DTHddyf-YaTvwiZ5y6iKmrnEgyyVAdjVBAbiw5Y,2879
15
15
  pyglet/app/base.py,sha256=xksFpBE4-0E65DiKKPn4ZnS6jPBC2y48JEmdqDkOMUo,11594
16
- pyglet/app/cocoa.py,sha256=B7T8RttBwdOKB01bRMok8gbFk-Yew0U-Ql9JQbhaR2A,10717
16
+ pyglet/app/cocoa.py,sha256=BDwwbjXyqqU0uzMfRI8YqgtkELcSCobU0Wb3h3TagPs,10814
17
17
  pyglet/app/win32.py,sha256=252RfeIBB9TtytMf1bd6Zc1FDF0W3bukCJAlqfP4ioM,4340
18
18
  pyglet/app/xlib.py,sha256=7gBureT60LHaROH9ah1jC62FwqsOZqNESPu1HpilLAs,2524
19
19
  pyglet/display/__init__.py,sha256=qz5Zy1S8XfapRys08uapOZK4N8Iian68yPCla505dcg,3313
@@ -21,9 +21,9 @@ pyglet/display/__init__.pyi,sha256=JRd3vFMahd1YC3r-uPgr99V9yAmiut1QZXKMFmstg5o,6
21
21
  pyglet/display/base.py,sha256=uxNmwkKG6u1aR0FKj6HPcPtixiWoQbsAqrYMlTXPuHk,9563
22
22
  pyglet/display/cocoa.py,sha256=DULyq1maTlaG36PH9vB23mTUlwlaeZIfkaY0jk-Q40E,5562
23
23
  pyglet/display/headless.py,sha256=TJRak_6wAOwvLJjb_fTzbqTLxfMdgeSlDfiS7mTbJac,2156
24
- pyglet/display/win32.py,sha256=HvrJSnERQwjLBysZKSZ8fPkbHr0avbAN-mB4U31KX2s,5129
24
+ pyglet/display/win32.py,sha256=e0PJ6nEItHS2_vCpKZUii3lHZOWm3P6TLUUwFg9USu8,5142
25
25
  pyglet/display/xlib.py,sha256=RIGQvxHTKVNNv0KRdU-jiL-7jdv8X4iZUZxtG9_Zs68,9378
26
- pyglet/display/xlib_vidmoderestore.py,sha256=JQpc7BXJUB7rHRptXoVIyATb36y3F9g3OfatnsX2nA8,5654
26
+ pyglet/display/xlib_vidmoderestore.py,sha256=fkcVbCvwQ65UDvAxaIZb3JV_bAWONVgw7l-6UJhEXTs,5663
27
27
  pyglet/experimental/README.md,sha256=CdgjOAzL-9A92ueJ8YCgW2y4wNG7bkEbrZSl9PJYBFk,221
28
28
  pyglet/experimental/geoshader_sprite.py,sha256=emDi61iMeGsQLKoXtvbKOSRDrJJX_TRkZQdMcUp0mNU,24652
29
29
  pyglet/experimental/hidraw.py,sha256=NDhvvgOqE4CuEL9T1EqtzMR9ljOSdRIepHkEnG_Tazo,4952
@@ -32,18 +32,23 @@ pyglet/experimental/multitexture_sprite.py,sha256=ahXz583gvEZ7QZ5ans05FMiCjCeqTO
32
32
  pyglet/experimental/net.py,sha256=wYRCuDb2YEKzkGKFhG25Fwe8PXU0aJp5IZ5JdaSyUjE,7680
33
33
  pyglet/experimental/particles.py,sha256=Rt0QxNvQ8uodpf2zwOHVZSBx2jlwjxwYGtLwuaI0m8A,14538
34
34
  pyglet/extlibs/__init__.py,sha256=rbqvpywhuc1ZNYmTQ_mHoL07CrYIlNbKhwyhH7KygUo,128
35
- pyglet/extlibs/earcut.py,sha256=BalNdz4NKpDewZl201qSxdxbHcuE7aJ4r_0GiABSmls,19273
35
+ pyglet/extlibs/earcut.py,sha256=uww7nwDtc0moYR-3wkeOpYNUJYCzov35h3vQQ0XnL-0,19281
36
36
  pyglet/extlibs/png.py,sha256=u8AAGIZPWdGxlrBaOQYVBwpjiay3CKJ1AMrKrwimDHE,81404
37
- pyglet/font/__init__.py,sha256=GWjcgsT1zYiRuxKE_smjT-cESEMdV9JIOBn1ZmLnt7A,8994
38
- pyglet/font/base.py,sha256=HQDCRCz-QAerjl47xf4BRnbWy6IDAecOswRZ0rJ60X8,15488
39
- pyglet/font/directwrite.py,sha256=MowE4id4CwknNtoD1y4Lhv0Dk0EycXvxIzComLRk8LU,97784
40
- pyglet/font/fontconfig.py,sha256=BckJXwlyzgEzpXQTnwiceHtgTaYx-sNY0ZCBiULngrM,12235
41
- pyglet/font/freetype.py,sha256=0ERPfY1sMu_g6I39xFWvpEx7O9BiXGVR0fd0u0EIG94,13320
42
- pyglet/font/freetype_lib.py,sha256=uMg9wCgpzRQd-FLWD6P82TNoBjA7oR7y20cxKHJ0axA,16629
43
- pyglet/font/quartz.py,sha256=S_t3oFd_Kb_KBOlvcPeCMJuRBLXQbh0jng82kxEJOQ4,13018
37
+ pyglet/font/__init__.py,sha256=MpFO_qdbb3kikIX2-ErrG0v6Kv6XnfbVhcAYx9L05nk,9005
38
+ pyglet/font/base.py,sha256=v3aJYwW3SYqaF-g66H9xxAZyal9RHnKxUf4vQOCmQFc,17950
39
+ pyglet/font/fontconfig.py,sha256=ZyqI-HJ2uKwo-wvOXz2Tgf9VDT8JplzRvlu4nww48DM,14422
40
+ pyglet/font/freetype.py,sha256=zQd20rQTCFC1cCD2H4bCZWTLH8DMDeoYjhgW4DcCG7k,20162
41
+ pyglet/font/freetype_lib.py,sha256=SiSsHv5J1zVtCNWYNqnXDT4iGPJsBzrxVXUASEhAuJY,21489
42
+ pyglet/font/quartz.py,sha256=3MYuPH_PWaGY4I2Zp_rFZl2g5GwFxyisMTMdGF1oDPs,25849
44
43
  pyglet/font/ttf.py,sha256=xrTxY02uGcc3s9xG60iu4x4HzDfxuTwAyT8KFfJ8GS0,24225
45
- pyglet/font/user.py,sha256=SM_A73fEl3Lyu5LmPdC5SZN2b338QU8xg64ViLn0pWE,12006
46
- pyglet/font/win32.py,sha256=4NxGxzdHvCeky_gLHzWxpD3uvvHpEiPRY6r550yZANo,16278
44
+ pyglet/font/user.py,sha256=F4e1tLVTdt8AnY0Sw5As7uk3Bf3DhSlzpMQNnOhGtE0,12429
45
+ pyglet/font/win32.py,sha256=lZpmzFgZJvit2PK15SwpFtP__M_qgrc-laEna7pQP48,16460
46
+ pyglet/font/dwrite/__init__.py,sha256=PoOFKRtteZ4LnlrC6tnCpJOhszn4tKY-9wxdaAcKK0I,53557
47
+ pyglet/font/dwrite/d2d1_lib.py,sha256=dqLJo33Xt5WiUWaXnrTPQKGQFclzcMV8ysRNtEHGrqY,19563
48
+ pyglet/font/dwrite/d2d1_types_lib.py,sha256=-vzx6qyHfdFQ6n8Sf38LxYRNWFDnz_zJR_AvnxFPEDU,1201
49
+ pyglet/font/dwrite/dwrite_lib.py,sha256=D9nd4UhXm0EXQVhfG3EvkdsntTvY0D2n54i2P7ck6io,51437
50
+ pyglet/font/harfbuzz/__init__.py,sha256=7n-PkTpCjwdJfXTyrroFNyBwt3axpMGXMVqX0ipUnHU,9742
51
+ pyglet/font/harfbuzz/harfbuzz_lib.py,sha256=en7JiJRJ2EkuiVekSoKXi9YZ4p1ptQsVs2RWYMO02UA,6761
47
52
  pyglet/gl/__init__.py,sha256=nbbjbSbiVS7fwF67e4AspOp7HsplljZ02njQJ0V_yHc,6039
48
53
  pyglet/gl/agl.py,sha256=7xsnp56xtHM0Wb08Y4oin8zI9A-VMpdkqD0s7ozA990,26720
49
54
  pyglet/gl/base.py,sha256=qapIIy2MjZDQJzZwwSbwU1I5Froyy1at9gTiJ2SEVDw,18056
@@ -61,10 +66,10 @@ pyglet/gl/lib.py,sha256=b18UahrY9F5K8kIK3ofXutxPrOEypvDmqi_AW9Js6ag,3804
61
66
  pyglet/gl/lib_agl.py,sha256=h32bfYlGaNfu1j0vcPrtHi-Oo4W0YULP4nkztKj9hj8,1203
62
67
  pyglet/gl/lib_glx.py,sha256=Jet6F--JuXDqcStfs89QwP4qmITSzdb5U7O-SgRo3T8,1894
63
68
  pyglet/gl/lib_wgl.py,sha256=OOj8HeAjLrRTBhFCoyU8bI8AT8CeFIUAjFEpoM8XFLA,3411
64
- pyglet/gl/wgl.py,sha256=-zfLIMQ5SADnhCmG-D6yPsdiHUtFTeEPNCJ2yhJHFC0,10066
69
+ pyglet/gl/wgl.py,sha256=TfoVJPli0KkvWc9tkv2qFQP1wmfFD2v2oLTYD5EZpNw,8556
65
70
  pyglet/gl/wgl_info.py,sha256=gFOL9Y10crsUgam-pJSCM3Hq3fHNpQHGdR6goj92thM,1082
66
- pyglet/gl/wglext_arb.py,sha256=LeaIfmaJWypU63_EhG9Kbl0qHKEhYnVRhsEuxdySTBg,70293
67
- pyglet/gl/wglext_nv.py,sha256=gy4dRRxO-aaTE-XQB-4Z3GMi2yWkjXNvMda6pMn4lAI,69927
71
+ pyglet/gl/wglext_arb.py,sha256=j87We_bcA5qibuGZTYOed9AIi4_Np9cpEL6lXZRpqgU,71614
72
+ pyglet/gl/wglext_nv.py,sha256=lfIS6b7y6pgvoOoc0ykdp8-UV7xwdViFihpdTVSo2z8,70974
68
73
  pyglet/gl/win32.py,sha256=8nfLL2JVXD8Tt1nHNmM-4nQ-4OQ029Etvt4c2xwz6AI,10464
69
74
  pyglet/gl/xlib.py,sha256=DTX3fJEaNChjF50XMCPFOnYR33ZUDh32m1oNa4jft6E,10155
70
75
  pyglet/graphics/__init__.py,sha256=O4O7fCQBI7qPReI8tUwLwArJHTWcoE1c_SotlHyUb2A,27940
@@ -77,24 +82,25 @@ pyglet/graphics/vertexdomain.py,sha256=Y4tAi26ABf5kLBGJ0QDvTVeWEL2vSN4HuIeS5svZj
77
82
  pyglet/gui/__init__.py,sha256=vW9yvUBoKz6nG-VpyIYwHMmq_y_2LWAZvFW9LYQALog,77
78
83
  pyglet/gui/frame.py,sha256=-_RHDalwIEiLIR1JkxzUAiypr2PqxgWW8psI2CAkFcE,8413
79
84
  pyglet/gui/ninepatch.py,sha256=f3iOQr6GOhoCUCIcwltsqrEILZz-BhKwnGr9rcsfohM,11376
80
- pyglet/gui/widgets.py,sha256=wn8GLKxasElaQUibl9TNLQAT6RUrDtncm75nLVTMYdo,20363
85
+ pyglet/gui/widgets.py,sha256=Ius_Nardt5Z3q747dTDPrkvpjg5wo3jWjC8ppcpNgxU,20697
81
86
  pyglet/image/__init__.py,sha256=lrFDtbFXjRw7SztxHaDck3fXJ_mBdBB2XgeJoj1_svw,83851
82
87
  pyglet/image/animation.py,sha256=ThMlyHFlqQkCRh7WdlCRy-uhMN62rFiME_qSxBUaEB4,5564
83
88
  pyglet/image/atlas.py,sha256=svY5NWVVAjIhtGEeAJS_4PcLtg8QctPIBrpa_4C69KM,9913
84
89
  pyglet/image/buffer.py,sha256=YiYxohlR4-hA3o9S2RUqkj7wYX_ExgG2l4YqtPqDTHw,10824
85
90
  pyglet/image/codecs/__init__.py,sha256=NXBFOb_v_txapXwZcp_x3vtf---ShInVtdobsfULGcE,6559
86
- pyglet/image/codecs/bmp.py,sha256=-2Cqo0oporGYQ8Y6kryn243oLiQaTgAZlQU0cVQfdF4,10642
91
+ pyglet/image/codecs/bmp.py,sha256=hYmxGiwgqcJrJpdFEHEt8NvLzRMbH-V8VFlXPlJoP88,10638
87
92
  pyglet/image/codecs/dds.py,sha256=SwqVrBp0-5Ku9cI-C-p3taJ3FcLWYH_RdLM06QSuBIc,5648
88
- pyglet/image/codecs/gdiplus.py,sha256=Rpa-6uUvZ_xmKrDH2I674yuNxub4_v6f8tmOK0Wlb_o,11012
93
+ pyglet/image/codecs/gdiplus.py,sha256=s1RGa3u2EMSMQROTh_KntRHOxS8aVVVVseAyYweBj-s,11407
89
94
  pyglet/image/codecs/gdkpixbuf2.py,sha256=xIGV5FA3804UceYSVyUlAm9xx2ZWk3vlw0uk4CNWdyw,8939
90
95
  pyglet/image/codecs/gif.py,sha256=h8JZhWo5uJFhavLVQ2CI8jfb3u4wuQca4RPawLa6F2g,3571
91
96
  pyglet/image/codecs/pil.py,sha256=wlw_7IF_QOceAPRsTdK8NI-552gJe5uwd2IeNlG5ahg,2592
92
97
  pyglet/image/codecs/png.py,sha256=TeUXkovf1s-G0BXwD-8qxpTP9xJCgD0hZNfldv0yBVA,2081
93
98
  pyglet/image/codecs/quartz.py,sha256=Nl41ool5MDnp6MDGQjWotvGNYIfobCq4UPnGMjyL0XU,4708
94
99
  pyglet/image/codecs/s3tc.py,sha256=XsBcl8tOli61BVEoukb-9Ydw5aPSyydlJXWDC__W84Y,12392
95
- pyglet/image/codecs/wic.py,sha256=QxtoX8ElnO0zlu-SiLz-R60903a2dAF21Al_44m4RRE,22368
100
+ pyglet/image/codecs/wic.py,sha256=tPZssIDdkoiJedvM99nHB0ON1KH_n2JF5Vx7pfRbEjs,11156
101
+ pyglet/image/codecs/wincodec_lib.py,sha256=G2FSx9j9gMXpFOGUMt0a06C_DBv4LEaoAg103PW2Vx8,14602
96
102
  pyglet/input/__init__.py,sha256=AGo55xX3yMr8TmeNXNFFwAY7WXrsA1rV6GgDRV-0faU,6417
97
- pyglet/input/base.py,sha256=Nvw_H8wiULDh6zUqkSHU25n9Bk472EYQAH7oWZOhNaw,38832
103
+ pyglet/input/base.py,sha256=AyhPZMjEr63GVbWFscJqH7eIVAOiTJw0aeMfBcDpdaM,38905
98
104
  pyglet/input/controller.py,sha256=kkLXJHyVePSlwagV9D7MN2QPjX9qjSk_avPI6G5Zud0,5548
99
105
  pyglet/input/controller_db.py,sha256=KFgHVcwDKO6nC6qw_JDT-fE7BsgsYh76aKupc6fOKJY,196312
100
106
  pyglet/input/linux/__init__.py,sha256=fd8rAts7soFEND4l5rUtLmEwK4rRpfFZ7Ibj9EOcrrA,391
@@ -103,18 +109,18 @@ pyglet/input/linux/evdev_constants.py,sha256=7nCbrg7Wh3hzlRnW3b0XjMNz_od5qCZ35ew
103
109
  pyglet/input/linux/x11_xinput.py,sha256=eezRkEM_Xl8MJcvHpGXUjliz4E-DBVEUNNooWr-LT_k,10939
104
110
  pyglet/input/linux/x11_xinput_tablet.py,sha256=wnLrTQLwtAOrOPac3BJPXqBP_nygwRJtnHmdzJoCFjE,2959
105
111
  pyglet/input/macos/__init__.py,sha256=5VQqkzxDR6gZfF21vxEG-GKts-BRRpETxJaK7OYiBoo,348
106
- pyglet/input/macos/darwin_hid.py,sha256=Z2fm8EIJKAM7Hmq3Fkp-XV00D5w9W2fsJNnFefm_PZA,24540
112
+ pyglet/input/macos/darwin_hid.py,sha256=VnoqvL26tZtU329yegtHUCnEM2zqmPbA2UKaOaSDWds,25549
107
113
  pyglet/input/win32/__init__.py,sha256=xYVWmf1_510qFJyPDXIhp6xnULP_B4qpLbFGSQrjX3g,4220
108
- pyglet/input/win32/directinput.py,sha256=zaR1sCc-WNmfRJ6QDGPm5pRP0Y-JTCx53BR4CQY9qek,16911
114
+ pyglet/input/win32/directinput.py,sha256=lU70it9a0xqLwEh21Dll0u6mnFmf-2MuEUIV87y8eMA,16974
109
115
  pyglet/input/win32/wintab.py,sha256=ST0pYMMTJ0feQHPQqmgkjMjhS1AaTLbiBA2KK4FmXJ8,14430
110
- pyglet/input/win32/xinput.py,sha256=qbtNi1wdTJ-uAHh-DrDbfUhpHYdAR7UIMrSVbcI5vJs,21397
116
+ pyglet/input/win32/xinput.py,sha256=HYpNDKl6v6ygnOE7SdzhpS2FUL5FQ48bqSYRE8QXmTg,21561
111
117
  pyglet/libs/__init__.py,sha256=GQaW5m1MjFBnoUBcfY1AfHY1C1MiXpbagsS8FVUT7Ck,584
112
118
  pyglet/libs/ioctl.py,sha256=OJanBmy-oRp07CA3zi5ieIM_1WEmJ5f_ZpCsqufU0Og,3688
113
119
  pyglet/libs/darwin/__init__.py,sha256=Kx8qOx_xjgLZj9pf9qDj9-tZiWbzKfSmnmIeMaAiVnU,23
114
- pyglet/libs/darwin/coreaudio.py,sha256=t5aQjttNHsBKgeTLkaCRaipYz3B5Kymrdins7swWL-A,9019
120
+ pyglet/libs/darwin/coreaudio.py,sha256=H0kpmJXPxSUHST56yxucV4iPhYd5SXduJjQ5dRQsNX0,8991
115
121
  pyglet/libs/darwin/quartzkey.py,sha256=FhwLyotAdlhJIvmGX1JNPkB0kxPhedRb-9NeRh_HTwg,6051
116
122
  pyglet/libs/darwin/cocoapy/__init__.py,sha256=LvkMAtOc0SGfyitALT9FdCTUvZ6dNzcFF7kDyrhu6GY,1798
117
- pyglet/libs/darwin/cocoapy/cocoalibs.py,sha256=fg3Kx9g_jc9uURuQCuafNIYuOkIbVIJ_MDmK921mtck,23408
123
+ pyglet/libs/darwin/cocoapy/cocoalibs.py,sha256=n7RuMzF1lqsOI-Atcb-Sify6nLAwb9JpkRMPaaoYLd8,26001
118
124
  pyglet/libs/darwin/cocoapy/cocoatypes.py,sha256=UNymqQdVNrq7T6jIupCgRgoxgm51hhQW-R42Y-tRP00,2629
119
125
  pyglet/libs/darwin/cocoapy/runtime.py,sha256=KaI64id6cESiJ40SxZHfP5YOVHw82CHMGCzNPzUSRiA,65492
120
126
  pyglet/libs/egl/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -124,13 +130,13 @@ pyglet/libs/egl/lib.py,sha256=IdQfLfRPbTckgNBEIUumdmEQ6iSWiy1nhTnkTTzaZ6M,893
124
130
  pyglet/libs/wayland/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
125
131
  pyglet/libs/wayland/gbm.py,sha256=iv6IKaB_U9t3s8njo0zy29rksbFPKEYlmGjF7wHjYr0,13388
126
132
  pyglet/libs/wayland/xkbcommon.py,sha256=GCQ2mONKCi8MPwNfeL8t5JdszEoYhvEqrPUGDFE30xQ,20657
127
- pyglet/libs/win32/__init__.py,sha256=aA12YF4u0kGxELxbYJyF8fHygJNtPokaBh-oYQHwJZ0,14225
128
- pyglet/libs/win32/com.py,sha256=3bcXI2A7ymuPiugTDhUHxVqCs0KqouEhTs1UJiz-D5w,15552
129
- pyglet/libs/win32/constants.py,sha256=C_7XE-OSczVJTD0VoJ_UT-hGuM7GzxiTvUYnk70D-sc,121260
133
+ pyglet/libs/win32/__init__.py,sha256=FXs97KHHet36nDG2eKJXpDDsHhbs42C7vR4AiDf_vnU,14334
134
+ pyglet/libs/win32/com.py,sha256=E4lzOzkmPRbV0F6Hj1MH_PQK46N_-USaOjPJbjgrXpM,17607
135
+ pyglet/libs/win32/constants.py,sha256=ITFRmoOYt_buQkk7MiwSIDlhZuLkPpsuQyH81c3dE3Y,121339
130
136
  pyglet/libs/win32/context_managers.py,sha256=pNCpws8Xc-HP19jC42gtWSdC9m1s6sP8H-0mFyiEz0A,1433
131
- pyglet/libs/win32/dinput.py,sha256=42s6682KmNm0FsgK0YqBi-puAbCPHXZzFAGIlwTztP8,10966
137
+ pyglet/libs/win32/dinput.py,sha256=V6ZttG3OpTL4gbEJqq6RHiqRFxORzjoxzDjrOGNiZYk,10849
132
138
  pyglet/libs/win32/libwintab.py,sha256=Qw2UmNG2-rZov483o16qjFtywwMGBJbDbIuKl_NFLe8,10901
133
- pyglet/libs/win32/types.py,sha256=xX92EqfRZXRjz4Boa2BIAu05f-1v7O2FVgwgxbvii7I,14868
139
+ pyglet/libs/win32/types.py,sha256=qMkX2f4JaHvT8UDCWRobS_mG103pPcTFOv1NuXmkd40,15703
134
140
  pyglet/libs/win32/winkey.py,sha256=0yKZTOyrGirM3oAIhJRUgiKwDgQ_XF0_k9KRXf3MJaQ,4667
135
141
  pyglet/libs/x11/__init__.py,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
136
142
  pyglet/libs/x11/cursorfont.py,sha256=31GFWHJWnNrmaiF6uvjUdLSM7gBL9DL0kjnfxjM8jAg,1451
@@ -148,12 +154,12 @@ pyglet/media/player_worker_thread.py,sha256=xOj9UYnKbEfkZDjj3oBzMLSkWjXP9ctgrVRK
148
154
  pyglet/media/synthesis.py,sha256=SeCvPKhv5FzRQG2gonoE1H2gGWutGssCsIn_ZMeKhCU,13158
149
155
  pyglet/media/codecs/__init__.py,sha256=K7zxWvfJog9DLhRJ25diBD3pxn6u7ZwKU0T2NKuq90Q,3428
150
156
  pyglet/media/codecs/base.py,sha256=66qizZ5_6qaSBJXI7s3JpZMKM2iQzpX8NzxpIT9hYIc,21324
151
- pyglet/media/codecs/coreaudio.py,sha256=bKYmZqXa6pBLFJVyB6zGxROsnq4wGEk3OJevWFPLTPM,6805
157
+ pyglet/media/codecs/coreaudio.py,sha256=pPhbUkzVNhKnhKaD2hiyuo8kkgTKA26L0WKGB742Rv8,6838
152
158
  pyglet/media/codecs/ffmpeg.py,sha256=XzLMfBceYRKYfY2OS7S-VVoLdwceX9J5JSzuMFAWxYU,44733
153
159
  pyglet/media/codecs/gstreamer.py,sha256=RdPn1qKJ1mX3WbWBDykIRact0eIoOx6I6ORnlb6vNik,9250
154
160
  pyglet/media/codecs/pyogg.py,sha256=dFHsM_twcNQCZIwIHz9ToUagbSxdlyWKPlTddnhKWvQ,17727
155
161
  pyglet/media/codecs/wave.py,sha256=LsZzQgkR2372N0xSctehtwYZNehJC1i92PedvcaY9E0,3566
156
- pyglet/media/codecs/wmf.py,sha256=pgaHkfmkCdMD8biGnriK1Y721EZimtWQXPTm5iaSRMI,33706
162
+ pyglet/media/codecs/wmf.py,sha256=_zNscIc3A3ZvLB4wDVlFBgL3fxDYgfoyeHplZ01ILYI,33757
157
163
  pyglet/media/codecs/ffmpeg_lib/__init__.py,sha256=MzdctEH9MnPm-ML5rJRvVmpe5EEKAD-9lBsqLNztx1g,201
158
164
  pyglet/media/codecs/ffmpeg_lib/compat.py,sha256=Ltol01bPPL0GEpwTI5A2TnZGwbRAAQR7UNDjHBVDuX0,3406
159
165
  pyglet/media/codecs/ffmpeg_lib/libavcodec.py,sha256=whqIumoRKqKczy522DGxs6qv6nrRIUtzHRF3kUvNa04,23543
@@ -163,7 +169,7 @@ pyglet/media/codecs/ffmpeg_lib/libswresample.py,sha256=PewYX9cs5XxgttBpQ95xyqs_T
163
169
  pyglet/media/codecs/ffmpeg_lib/libswscale.py,sha256=1LwIfnufNOBsCMVOzDz13vdUKv966rsrw8kDeblQSXE,1527
164
170
  pyglet/media/devices/__init__.py,sha256=X6cc8vMKg_HsVCmjqzamCgvNKqXiyLrjXpz-vnVxm-A,773
165
171
  pyglet/media/devices/base.py,sha256=n3RxJD0_yc50juY0nuZ2eGLH0xG0pyn5giMZ9_RSBO8,3218
166
- pyglet/media/devices/win32.py,sha256=S2QEuB1Y4cZpwMHHFr2vI314mvqzKH8P7UrDeBBaYJo,12409
172
+ pyglet/media/devices/win32.py,sha256=mdt4NO7oC9Q4cCuYJkdPsxsoEEEpIW7uQ0Rw4qHkwGk,12482
167
173
  pyglet/media/drivers/__init__.py,sha256=0kCu8B8-YLkGBp2_Jwu6A1QFjbm5KgmuL7aMEgQ8OGM,2463
168
174
  pyglet/media/drivers/base.py,sha256=z1r51IYtG3qPDWQpsv-tzHXi9I2u7B8-Y0m1HqRCdYs,18474
169
175
  pyglet/media/drivers/listener.py,sha256=R6OReQzUX8xcLURgtxejhuXJhyv7nl85q41yDfvd5eU,2438
@@ -171,7 +177,7 @@ pyglet/media/drivers/directsound/__init__.py,sha256=4pZuMWsqb6WFQXH8lV-5XFb03KPL
171
177
  pyglet/media/drivers/directsound/adaptation.py,sha256=DFn1B-PKwTnTFfzmNjL7QsoUk_1oHJKsasX3wsHNnP8,12133
172
178
  pyglet/media/drivers/directsound/exceptions.py,sha256=DNslGA8HwhO1ees5Rd4dpH-wtSTax2UtLPEUKyev2oo,325
173
179
  pyglet/media/drivers/directsound/interface.py,sha256=4IsP1gldLZx4dvzs6ZkB3nv2VaZxysnADOYpf_kbv28,12655
174
- pyglet/media/drivers/directsound/lib_dsound.py,sha256=qa0GjG-dO03Ht_-molAmZI-m1W3ZN-zP6uSZ-FaPSHE,12705
180
+ pyglet/media/drivers/directsound/lib_dsound.py,sha256=2jH2uV_Ps5fyjY_VRyVT6buIUEjS-6lu84H5sSoy_dc,12713
175
181
  pyglet/media/drivers/openal/__init__.py,sha256=yuks0X4x50nYQsAYAZftgxcI1iqNflxMetSskIipnf0,324
176
182
  pyglet/media/drivers/openal/adaptation.py,sha256=oa8KQd5YoTEipE9dxkJS6MqrpbLiNIpRy2I0RLyHxVE,9226
177
183
  pyglet/media/drivers/openal/interface.py,sha256=XbhcfRTsj4I7b0vMJrLGF_LpjK0-ttNe-FKCA_qP0Q0,16582
@@ -185,8 +191,8 @@ pyglet/media/drivers/silent/__init__.py,sha256=ll3SIdXcO5oBn7PolMNKJLPU3yQXQz6KO
185
191
  pyglet/media/drivers/silent/adaptation.py,sha256=HGf4h3RiFExmdMIqgHMHPIH8ffrkZeCREL1RvfOiHQo,4080
186
192
  pyglet/media/drivers/xaudio2/__init__.py,sha256=RipwpSVIsNEqgUYYFA0TbxHEBl41pre0XB4sFRQvBg8,128
187
193
  pyglet/media/drivers/xaudio2/adaptation.py,sha256=uV2U7Em2GGWJBtve7Pv9jUjpOYVglhIxjw53kKmMW38,12769
188
- pyglet/media/drivers/xaudio2/interface.py,sha256=7vtFiBozSjG7QPzq8kKMMo-ff9Kg9ygUJGlO-jj0KzU,25003
189
- pyglet/media/drivers/xaudio2/lib_xaudio2.py,sha256=LrBEJzOY4vpyHfstDfZ29oTUxODO5V9dfHApC9PXIFc,27709
194
+ pyglet/media/drivers/xaudio2/interface.py,sha256=oODofuHnTWqcfgGT94z7YrSIUYvEUAugRMkzBo9nvRk,25017
195
+ pyglet/media/drivers/xaudio2/lib_xaudio2.py,sha256=-2qHTRXD7kt07X95JinNhCPcpbGASSXoWh1uKj4ompk,27869
190
196
  pyglet/model/__init__.py,sha256=Sfq9xkgJo3EEtTHqG-6kfyPuXX6GZGzz76WzkH1tEhg,14584
191
197
  pyglet/model/codecs/__init__.py,sha256=7ezyORi1RBfH-KAmcrfHjNxe4LSTKJDpG4BXHJ-ghwU,1450
192
198
  pyglet/model/codecs/base.py,sha256=887X8f3ZeePihCI4GSbhjY4oqsaVP0qMtqCaMLSZd94,4380
@@ -194,17 +200,17 @@ pyglet/model/codecs/gltf.py,sha256=VcTvYSaL3uRmuroaHBgV8lKvu4_TuERfrAJleQtb1Ns,1
194
200
  pyglet/model/codecs/obj.py,sha256=3fdd-KOymJ21xzxNueDUGEmjuAJAXHyGIDdGIqCGnLE,7984
195
201
  pyglet/text/__init__.py,sha256=126ecTwSkbrVlkzPgP6MLPrROVF1aMSmZEdpKfXdayc,20463
196
202
  pyglet/text/caret.py,sha256=scIhfa5VXsHGmL3CMePSrb1DqV_enQkVBV-XSWt4H48,21425
197
- pyglet/text/document.py,sha256=2y7Q4nNOS_G8C5uYLY_WqK76EDQf7APXQ1xeOiaRqVI,28169
198
- pyglet/text/runlist.py,sha256=Z_CJjeP8cLUoD4U1Wjq1IbpcojjT4ILygS80I80R8ec,16961
203
+ pyglet/text/document.py,sha256=M5mpfWfg9OIdSGeE92DNjZi7I16i3Q8LH66SYTayV6o,26426
204
+ pyglet/text/runlist.py,sha256=mgHXjKOenggrw930LuaQ0694grAq9VCDyWo7Jm_tnTk,13601
199
205
  pyglet/text/formats/__init__.py,sha256=hZVwM1nciPptXpawu9GplNI_XtUpWH3-AmCZLf2m_kI,24
200
- pyglet/text/formats/attributed.py,sha256=58meAs0dNatSQkhEg1OotvpDe5mjDUK_zBWty1fAQD4,2867
206
+ pyglet/text/formats/attributed.py,sha256=VZ9jelMyFr1LJ2M-sgE5IeQJonHBPnaf749TEDC8uqM,2937
201
207
  pyglet/text/formats/html.py,sha256=9DE0-Q8clXzlbBxAEPLmwThaHrfBbFRHwNDeMGW86LQ,12058
202
- pyglet/text/formats/plaintext.py,sha256=IGHs9j912CO45ttNEvZsaVkHeoLaCwh3m3_5Wm09Z_k,512
203
- pyglet/text/formats/structured.py,sha256=RV7d7yT4YL6LvZ2lKU3Sc_T_a8I24uq2ZTggup6rwlo,11385
208
+ pyglet/text/formats/plaintext.py,sha256=xsh6fMs9FQZelPUiLu_pPp-K07r4jUJw0pYRskHeZQM,515
209
+ pyglet/text/formats/structured.py,sha256=Zkk8uxAr1pxLe7eAtQ-4tabKjp-Ygz9a1ECecOAAsFI,11400
204
210
  pyglet/text/layout/__init__.py,sha256=40UfnGLx-JczJqL46kLomLB1dPKXR3aqEo3aW9alJi8,6148
205
- pyglet/text/layout/base.py,sha256=up1xXV7rDRuYXEgXDLj3m4yKnSHqWi87QCm7BJKBcXQ,74770
206
- pyglet/text/layout/incremental.py,sha256=cwlOEWFnmYigQbQycRmeKd5WUWHt5Tj1sha9g0XtdKg,34932
207
- pyglet/text/layout/scrolling.py,sha256=mBtU48ujJ4GOqHjFptFztu4iwfd0PvZ4CLSV0s46HuA,9579
211
+ pyglet/text/layout/base.py,sha256=a7_bSSA6DV6F5cHaSjeNxh0qauq6PY1rvPvRhgBT1vw,75909
212
+ pyglet/text/layout/incremental.py,sha256=sdcQEbhFIOTEbDQQWgqsORjXvpu4Rt0e5rKoHICI-Po,36120
213
+ pyglet/text/layout/scrolling.py,sha256=UcsEyQTnwENze0FP_nKa4sLY8XwdWV1UIRy5Pp9PU_g,9593
208
214
  pyglet/window/__init__.py,sha256=SjZVxTPNeQ8JXtOhhilLcn-N5h9wmsokB7wfw9WfIGo,69449
209
215
  pyglet/window/event.py,sha256=Be4We1jfM_q5uMIqTXQjT9UFMMXE-QTo_KDV_M020ZI,4265
210
216
  pyglet/window/key.py,sha256=Q29wUkA3stzTGGD0lTNJ-pIRsi61wrlUPuAVhB9ZKZY,9560
@@ -216,9 +222,9 @@ pyglet/window/cocoa/pyglet_view.py,sha256=ZiWmWhjI4KWt1Gm2vlD1G2HrN0hBE-hWmFV8o7
216
222
  pyglet/window/cocoa/pyglet_window.py,sha256=ttcI6ox5ijDu-f1JJMAzdqK31kBv22iOQHbfBwu76nA,3627
217
223
  pyglet/window/cocoa/systemcursor.py,sha256=-rMhvPH3DWl4gsSTCUbkn-yUnbyKM7JdQLfb5RKb8xM,775
218
224
  pyglet/window/headless/__init__.py,sha256=BLmawFLSJqV_ZjwePGT8DxFSc2ZWuVMDbxATvu1qFX4,3251
219
- pyglet/window/win32/__init__.py,sha256=kYiWz9XJ8hEHec2gr6yLejiRFggQEU1M83PBQW8PBho,54808
225
+ pyglet/window/win32/__init__.py,sha256=rOklaFryGJj5IdU4wjVE8Y0Pa4MY4sFVsJGXFcfUNeA,54794
220
226
  pyglet/window/xlib/__init__.py,sha256=kTeJUNpByqIBDk2L_5dbfsAFB2UNmH7WP_79ZwqOVM8,70060
221
- pyglet-2.1.3.dist-info/LICENSE,sha256=V-fuy2c8jUDPMZJjPEgH-6jIFoUymjfht2PhVW1d7TQ,1546
222
- pyglet-2.1.3.dist-info/WHEEL,sha256=CpUCUxeHQbRN5UGRQHYRJorO5Af-Qy_fHMctcQ8DSGI,82
223
- pyglet-2.1.3.dist-info/METADATA,sha256=VBTBA6BJHMBJFKrgouEb-Tj9QwwzIjxmiQqYjh-mLR4,7650
224
- pyglet-2.1.3.dist-info/RECORD,,
227
+ pyglet-2.1.4.dist-info/LICENSE,sha256=V-fuy2c8jUDPMZJjPEgH-6jIFoUymjfht2PhVW1d7TQ,1546
228
+ pyglet-2.1.4.dist-info/WHEEL,sha256=CpUCUxeHQbRN5UGRQHYRJorO5Af-Qy_fHMctcQ8DSGI,82
229
+ pyglet-2.1.4.dist-info/METADATA,sha256=941b4Quzh0q4OCbHMk3xFp_KdIvbXLKXg73Hee7dWEw,7650
230
+ pyglet-2.1.4.dist-info/RECORD,,