aioxlib 0.8.0__tar.gz → 0.10.0__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.
Files changed (47) hide show
  1. {aioxlib-0.8.0 → aioxlib-0.10.0}/PKG-INFO +3 -3
  2. {aioxlib-0.8.0 → aioxlib-0.10.0}/README.md +2 -2
  3. {aioxlib-0.8.0 → aioxlib-0.10.0}/aioxlib/__init__.py +1 -1
  4. {aioxlib-0.8.0 → aioxlib-0.10.0}/aioxlib/api.py +21 -1
  5. aioxlib-0.10.0/aioxlib/constants.py +2768 -0
  6. {aioxlib-0.8.0 → aioxlib-0.10.0}/aioxlib/display.py +138 -25
  7. aioxlib-0.10.0/aioxlib/protocol.py +1739 -0
  8. aioxlib-0.10.0/aioxlib/stream.py +145 -0
  9. aioxlib-0.10.0/aioxlib/widgets.py +439 -0
  10. {aioxlib-0.8.0 → aioxlib-0.10.0}/aioxlib.egg-info/PKG-INFO +3 -3
  11. {aioxlib-0.8.0 → aioxlib-0.10.0}/aioxlib.egg-info/SOURCES.txt +2 -2
  12. {aioxlib-0.8.0 → aioxlib-0.10.0}/pyproject.toml +2 -0
  13. {aioxlib-0.8.0 → aioxlib-0.10.0}/tests/test_api.py +2 -2
  14. {aioxlib-0.8.0 → aioxlib-0.10.0}/tests/test_display.py +21 -21
  15. aioxlib-0.8.0/aioxlib/constants.py +0 -1192
  16. aioxlib-0.8.0/aioxlib/protocol.py +0 -1886
  17. aioxlib-0.8.0/aioxlib/widgets.py +0 -211
  18. aioxlib-0.8.0/tests/test_widgets.py +0 -208
  19. {aioxlib-0.8.0 → aioxlib-0.10.0}/LICENSE +0 -0
  20. {aioxlib-0.8.0 → aioxlib-0.10.0}/aioxlib/_extensions.py +0 -0
  21. {aioxlib-0.8.0 → aioxlib-0.10.0}/aioxlib/authority.py +0 -0
  22. {aioxlib-0.8.0 → aioxlib-0.10.0}/aioxlib/bigreq.py +0 -0
  23. {aioxlib-0.8.0 → aioxlib-0.10.0}/aioxlib/connection.py +0 -0
  24. {aioxlib-0.8.0 → aioxlib-0.10.0}/aioxlib/dbe.py +0 -0
  25. {aioxlib-0.8.0 → aioxlib-0.10.0}/aioxlib/dri3.py +0 -0
  26. {aioxlib-0.8.0 → aioxlib-0.10.0}/aioxlib/glx.py +0 -0
  27. {aioxlib-0.8.0 → aioxlib-0.10.0}/aioxlib/present.py +0 -0
  28. {aioxlib-0.8.0 → aioxlib-0.10.0}/aioxlib/randr.py +0 -0
  29. {aioxlib-0.8.0 → aioxlib-0.10.0}/aioxlib/render.py +0 -0
  30. {aioxlib-0.8.0 → aioxlib-0.10.0}/aioxlib/shm.py +0 -0
  31. {aioxlib-0.8.0 → aioxlib-0.10.0}/aioxlib.egg-info/dependency_links.txt +0 -0
  32. {aioxlib-0.8.0 → aioxlib-0.10.0}/aioxlib.egg-info/top_level.txt +0 -0
  33. {aioxlib-0.8.0 → aioxlib-0.10.0}/setup.cfg +0 -0
  34. {aioxlib-0.8.0 → aioxlib-0.10.0}/tests/test_authority.py +0 -0
  35. {aioxlib-0.8.0 → aioxlib-0.10.0}/tests/test_bigreq.py +0 -0
  36. {aioxlib-0.8.0 → aioxlib-0.10.0}/tests/test_connection.py +0 -0
  37. {aioxlib-0.8.0 → aioxlib-0.10.0}/tests/test_constants.py +0 -0
  38. {aioxlib-0.8.0 → aioxlib-0.10.0}/tests/test_dbe.py +0 -0
  39. {aioxlib-0.8.0 → aioxlib-0.10.0}/tests/test_dri3.py +0 -0
  40. {aioxlib-0.8.0 → aioxlib-0.10.0}/tests/test_examples.py +0 -0
  41. {aioxlib-0.8.0 → aioxlib-0.10.0}/tests/test_extensions.py +0 -0
  42. {aioxlib-0.8.0 → aioxlib-0.10.0}/tests/test_glx.py +0 -0
  43. {aioxlib-0.8.0 → aioxlib-0.10.0}/tests/test_present.py +0 -0
  44. {aioxlib-0.8.0 → aioxlib-0.10.0}/tests/test_protocol.py +0 -0
  45. {aioxlib-0.8.0 → aioxlib-0.10.0}/tests/test_randr.py +0 -0
  46. {aioxlib-0.8.0 → aioxlib-0.10.0}/tests/test_render.py +0 -0
  47. {aioxlib-0.8.0 → aioxlib-0.10.0}/tests/test_shm.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: aioxlib
3
- Version: 0.8.0
3
+ Version: 0.10.0
4
4
  Summary: Human friendly interface to XLib subsystems using asyncio python
5
5
  Author-email: Jose Tiago Macara Coutinho <coutinhotiago@gmail.com>
6
6
  License-Expression: GPL-3.0-or-later
@@ -38,9 +38,9 @@ Open displays, create windows, draw with GCs and the RENDER extension, and strea
38
38
  events — without blocking the event loop and without linking to libX11 or xcb.
39
39
 
40
40
  <p align="center">
41
- <img src="docs/images/game_of_life.gif" style="height: 300px;" alt="Conway's Game of Life on X11 via aioxlib"/>
41
+ <img src="docs/images/game_of_life.gif" style="height: 300px;" height="300" alt="Conway's Game of Life on X11 via aioxlib"/>
42
42
  &nbsp;
43
- <img src="docs/images/3d_cube.gif" style="height: 300px;" alt="Rotating 3D wireframe via aioxlib"/>
43
+ <img src="docs/images/3d_cube.gif" style="height: 300px;" height="300" alt="Rotating 3D wireframe via aioxlib"/>
44
44
  </p>
45
45
 
46
46
  <p align="center"><em>Examples shipped with the library: Game of Life · 3D wireframe</em></p>
@@ -12,9 +12,9 @@ Open displays, create windows, draw with GCs and the RENDER extension, and strea
12
12
  events — without blocking the event loop and without linking to libX11 or xcb.
13
13
 
14
14
  <p align="center">
15
- <img src="docs/images/game_of_life.gif" style="height: 300px;" alt="Conway's Game of Life on X11 via aioxlib"/>
15
+ <img src="docs/images/game_of_life.gif" style="height: 300px;" height="300" alt="Conway's Game of Life on X11 via aioxlib"/>
16
16
  &nbsp;
17
- <img src="docs/images/3d_cube.gif" style="height: 300px;" alt="Rotating 3D wireframe via aioxlib"/>
17
+ <img src="docs/images/3d_cube.gif" style="height: 300px;" height="300" alt="Rotating 3D wireframe via aioxlib"/>
18
18
  </p>
19
19
 
20
20
  <p align="center"><em>Examples shipped with the library: Game of Life · 3D wireframe</em></p>
@@ -16,7 +16,7 @@ Types and protocol helpers live in submodules::
16
16
  from aioxlib.protocol import pack_create_window
17
17
  """
18
18
 
19
- __version__ = "0.8.0"
19
+ __version__ = "0.10.0"
20
20
 
21
21
  from . import api, constants
22
22
  from .api import * # noqa: F403
@@ -9,6 +9,7 @@ from __future__ import annotations
9
9
  from .constants import (
10
10
  Allocate,
11
11
  AnyPropertyType,
12
+ CoordinateMode,
12
13
  PropMode,
13
14
  )
14
15
  from .display import Display
@@ -307,6 +308,17 @@ async def open_font(name=None, display: Display | None = None, **kwargs):
307
308
  return await d.open_font(name=name, **kwargs)
308
309
 
309
310
 
311
+ async def query_text_extents(font, string, display: Display | None = None):
312
+ """QueryTextExtents — bounding box of *string* in *font* (or GC).
313
+
314
+ Returns a dict with draw_direction, font_ascent, font_descent,
315
+ overall_ascent, overall_descent, overall_width, overall_left,
316
+ overall_right.
317
+ """
318
+ d = await _resolve_display(display)
319
+ return await d.query_text_extents(font, string)
320
+
321
+
310
322
  async def tree(wnd, display: Display | None = None):
311
323
  """Query the window tree for *wnd*."""
312
324
  d = await _resolve_display(display)
@@ -331,12 +343,18 @@ async def poly_segments(drawable, gc, segments, display: Display | None = None):
331
343
  return await d.poly_segments(drawable, gc, segments)
332
344
 
333
345
 
334
- async def poly_points(drawable, gc, points, mode, display: Display | None = None):
346
+ async def poly_points(drawable, gc, points, mode=CoordinateMode.Origin, display: Display | None = None):
335
347
  """PolyPoint on *drawable*."""
336
348
  d = await _resolve_display(display)
337
349
  return await d.poly_points(drawable, gc, points, mode)
338
350
 
339
351
 
352
+ async def poly_lines(drawable, gc, points, mode=CoordinateMode.Origin, display: Display | None = None):
353
+ """PolyLine on *drawable*."""
354
+ d = await _resolve_display(display)
355
+ return await d.poly_lines(drawable, gc, points, mode)
356
+
357
+
340
358
  async def clear_area(wnd, x, y, w, h, exposure=False, display: Display | None = None):
341
359
  """ClearArea on *wnd*."""
342
360
  d = await _resolve_display(display)
@@ -421,11 +439,13 @@ __all__ = [
421
439
  "delete_property",
422
440
  "open_font_name",
423
441
  "open_font",
442
+ "query_text_extents",
424
443
  "tree",
425
444
  "poly_fill_rectangles",
426
445
  "poly_fill_arcs",
427
446
  "poly_segments",
428
447
  "poly_points",
448
+ "poly_lines",
429
449
  "clear_area",
430
450
  "set_input_focus",
431
451
  "get_geometry",