The Source Library wall's pixel engine, extracted for anyone's pictures: libs/image_tiles carries the NV12 slot pyramid, the 32x32 shard atlas geometry and the one-HEVC-intra-frame-per-file tape codec (tape.rs), a small SQLite index (db.rs), a priority decode pool (store.rs), and the TileGrid widget — instanced tiles batched per atlas page, anchor-locked wheel zoom with log-space glide, continuous per-shard LOD with crossfades, full-resolution promotion under byte budgets with LRU eviction, and uniform-only re-presents inside the pad of the last build. image-tiles-bake downloads a manifest of URLs (fetch pool free to be wide, encode pool hard-capped — concurrent VT session churn has panicked the encoder's IOMMU) and bakes a library; examples/image_tiles views one. No JPEGs on disk; decode and encode are the hardware's. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
26 lines
1 KiB
TOML
26 lines
1 KiB
TOML
[package]
|
|
name = "makepad-image-tiles"
|
|
version = "0.1.0"
|
|
edition = "2021"
|
|
description = "Pannable, zoomable wall of image tiles: a small baker CLI downloads pictures into hardware-HEVC tape atlases, and the TileGrid widget draws them as instanced NV12 textures with continuous LOD"
|
|
license = "MIT OR Apache-2.0"
|
|
|
|
[lib]
|
|
name = "makepad_image_tiles"
|
|
path = "src/lib.rs"
|
|
|
|
# The baker: reads a manifest of image URLs, downloads and decodes them in
|
|
# RAM, and bakes the tile library a TileGrid widget opens. No window.
|
|
[[bin]]
|
|
name = "image-tiles-bake"
|
|
path = "src/bin/bake.rs"
|
|
|
|
[dependencies]
|
|
makepad-widgets = { path = "../../widgets" }
|
|
# The library index: items and shard bookkeeping in our own SQLite engine.
|
|
makepad-sqlite = { path = "../sqlite_query" }
|
|
# Hardware HEVC intra frames (VideoToolbox) for the on-disk tapes: no JPEGs
|
|
# or PNGs are ever kept, one hardware decode fills a whole atlas level.
|
|
makepad-video = { path = "../../platform/video" }
|
|
# The baker's downloader: the dependency-free blocking HTTP client.
|
|
makepad-network = { path = "../../platform/network" }
|