step 4: add async tiles and persistent cache

This commit is contained in:
2026-05-22 18:41:42 +02:00
parent 743a82f796
commit 563ddd962b
11 changed files with 880 additions and 46 deletions

View File

@@ -2,7 +2,7 @@
`dpg-map` is a Dear PyGui map widget package under rebuild.
The Step 3 widget shell is in place:
The Step 4 tile manager is in place:
```python
import dpg_map as dpgm
@@ -28,15 +28,16 @@ Implemented so far:
- thread-safe logical map state and map registry
- command queue with coalescing for overlay and view updates
- logical marker, polyline, trajectory, and layer models
- persistent disk cache path, metadata, scanning, and prune planning
- persistent disk cache paths, metadata, scanning, pruning, and clearing
- Dear PyGui `child_window` + measured-size `drawlist` widget shell
- GUI-thread frame pump that drains commands and redraws a placeholder background
- GUI-thread frame pump that drains commands, manages textures, and draws raster tiles
- sizing helpers that preserve the last non-zero size across hidden layouts
- interaction hit-rectangle calculation for the measured map area
- asynchronous tile workers that read disk cache, fetch HTTP, and decode images
- memory cache with visible-tile protection and GUI-thread texture deletion
Real tile loading and overlay drawing are not implemented yet. Step 4 will add
the asynchronous tile manager, persistent tile loading, and GUI-thread texture
creation.
Overlay drawing is not implemented yet. Step 5 will add pan/zoom interaction and
view command projection.
Examples:
@@ -46,4 +47,5 @@ uv run python examples/sizing_window.py
uv run python examples/sizing_child.py
uv run python examples/sizing_table.py
uv run python examples/hidden_tab.py
uv run python examples/cache_stress.py
```