73typedef enum : uint32_t {
94typedef enum : uint16_t {
118typedef enum : uint8_t {
138typedef enum : uint8_t {
166typedef enum : uint32_t {
195typedef enum : uint32_t {
609[[nodiscard]] uint32_t
ez_fnv1a(
const void* buf, uint32_t len);
ra8_ui_rect_t ez_content_rect(int32_t fb_w, int32_t fb_h)
The content rectangle: the panel less the status bar.
ez_zone_t ez_zone_hit(const ez_scene_t *s, int32_t x, int32_t y)
Classify a tap by the zone it lands in.
ez_scale_t
The magnification ladders the page view and the loupe walk.
@ k_ez_page_scale_max
Page-view ladder ceiling.
@ k_ez_lens_scale_max
Loupe ladder ceiling.
@ k_ez_lens_scale_min
Loupe ladder floor.
bool ez_scene_tick(ez_scene_t *s, uint32_t now_ms)
Advance both views' settle timers; report whether a repaint is due.
ra8_err_t ez_scene_prefetch(ez_scene_t *s, zoom_pan_t dir, uint16_t *out_warmed)
Warm the tiles one pan step ahead of the page viewport.
uint8_t ez_page_sample(uint32_t x, uint32_t y)
Sample the procedural full-resolution page at one pixel.
ra8_err_t ez_tile_decode(void *ctx, const ra8_tile_key_t *key, uint8_t *cell, uint32_t cell_bytes, uint16_t *out_w, uint16_t *out_h)
ra8_tile_decode_fn that materialises one page tile from the sampler.
ez_page_t
The procedural source page and its tiling.
@ k_ez_page_w
Source page width, pixels.
@ k_ez_image_id
Tile-cache key image id for the page.
@ k_ez_tile_edge
Tile edge, pixels (gray8 => 64 KiB/tile).
@ k_ez_page_h
Source page height, pixels.
ra8_err_t ez_scene_selftest(ez_scene_t *s, ez_selftest_t *out)
Drive the scene through the scripted boot self-check.
ra8_err_t ez_scene_present(ez_scene_t *s, ez_present_t *out)
Take the pending flush plan for whichever view changed.
uint32_t ez_fnv1a(const void *buf, uint32_t len)
FNV-1a-32 over a byte range (the framebuffer hash).
ra8_err_t ez_scene_render(ez_scene_t *s)
Repaint the content area, the loupe (when open) and the status bar.
ez_scratch_t
The zoom engine's entire memory footprint, in bytes.
@ k_ez_row_bytes
One source row at the widest viewport.
@ k_ez_strip_bytes
gray8 destination strip (16 rows).
@ k_ez_packed_bytes
The strip packed to 4 bpp.
ez_layout_t
Panel layout: status bar, content viewport and the loupe box.
@ k_ez_lens_edge
Loupe box edge, pixels.
@ k_ez_status_h
Status bar height, pixels.
@ k_ez_ind_gap
Gap between indicator blocks, pixels.
@ k_ez_lens_border
Loupe chrome thickness, pixels.
@ k_ez_ind_block
Zoom-indicator block edge, pixels.
@ k_ez_edge_band
Pan tap-band depth at each edge.
ez_zone_t
Tap zones of the demo's discrete touch scheme.
@ k_ez_zone_none
Nothing under the tap.
@ k_ez_zone_lens
Inside the loupe: cycle its magnification.
@ k_ez_zone_pan_up
Top band: page travels up.
@ k_ez_zone_pan_left
Left band: page travels left.
@ k_ez_zone_toggle
Status bar: open / close the loupe.
@ k_ez_zone_zoom
Centre: cycle the page magnification.
@ k_ez_zone_pan_right
Right band: page travels right.
@ k_ez_zone_pan_down
Bottom band: page travels down.
ez_cache_t
Tile-cache budget, DERIVED from the viewport and tile geometry (#338).
@ k_ez_buckets
Cache hash buckets (>= cells).
@ k_ez_view_cols
1:1 tile columns a frame straddles, plus one.
@ k_ez_cell_budget_bytes
SDRAM the cache may claim.
@ k_ez_prefetch_max
Lead-edge tiles per pan.
@ k_ez_view_rows
1:1 tile rows a frame straddles, plus one.
@ k_ez_cell_bytes
One gray8 tile, bytes.
ra8_err_t ez_scene_init(ez_scene_t *s, const ez_scene_cfg_t *cfg)
Wire the tile cache, the tiled source and both viewports.
bool ez_scene_tap(ez_scene_t *s, int32_t x, int32_t y, uint32_t now_ms)
Apply a tap to the scene.
Error Code Definitions for ra8-firmware.
ra8_err_codes_t ra8_err_t
Canonical error-return type used by every ra8-firmware API.
Fixed-RAM-budget image-tile cache with LRU eviction (Layer 3b, #147).
Bounded UI interaction core: hit-testing, screen stack, paging.
What the scene asks the panel to flush, and how well.
ra8_ui_rect_t rect
Panel rectangle to flush.
bool quality
True: full 16-level GC16.
bool present
False: nothing changed; do not flush.
Everything ez_scene_init needs: storage and framebuffer geometry.
ra8_tile_key_t * keys
k_ez_cells key entries.
int32_t fb_h
Framebuffer height, pixels.
uint8_t * packed
k_ez_packed_bytes packed strip.
int32_t * buckets
k_ez_buckets hash-bucket heads.
int32_t fb_w
Framebuffer width, pixels.
uint8_t * cell_mem
k_ez_cells * k_ez_cell_bytes bytes.
uint32_t fb_bytes
Framebuffer size, bytes.
uint8_t * row
k_ez_row_bytes composite row.
ra8_tile_dims_t * dims
k_ez_cells dimension entries.
ra8_keycache_cell_t * meta
k_ez_cells link-metadata entries.
void * fb
Framebuffer base (hashed by the golden).
uint8_t * strip
k_ez_strip_bytes composite strip.
The whole demo: one tiled page, one zoom viewport, one loupe.
ra8_ui_rect_t content
The content rectangle (page.dst).
zoom_view_t lens
Loupe over the same page, magnified more.
ra8_tile_cache_t cache
Page cache (decode-on-miss = the sampler).
zoom_tile_src_t tiles
Tiled-source binding over that cache.
bool lens_on
The loupe is open.
zoom_source_t src
The page as a zoom source.
int32_t fb_h
Framebuffer height, pixels.
zoom_view_t page
Full-content zoom viewport.
const void * fb
Framebuffer base, for the golden hash.
int32_t fb_w
Framebuffer width, pixels.
uint32_t fb_bytes
Framebuffer size, bytes.
Deterministic boot self-check results (the app's golden numbers).
uint32_t misses
Tile-cache misses (decodes).
uint32_t crc_1x
Hash after the opening 1:1 render.
uint32_t crc_pan
Hash after one right-pan step at 1:1.
uint32_t evictions
Tile-cache evictions.
uint32_t crc_2x
Hash after zooming to 2x at a fixed point.
uint32_t crc_lens
Hash after opening the 4x loupe.
uint16_t warmed
Tiles warmed by the pan read-ahead.
uint32_t hits
Tile-cache hits over the whole sequence.
Per-cell link metadata (one caller-owned array entry per cell).
Tile-cache state (caller-owned; treat as private).
Per-cell user descriptor: the decoded tile dimensions.
Identifies one decoded image tile.
Axis-aligned rectangle in framebuffer pixel coordinates.
A magnifiable full-resolution image behind the gray8 sub-rect seam.
A tiled gray8 image, its grid, and the cache that pages it.
Live viewport: where it is looking, how magnified, and what it owes the panel.
Tap-to-zoom image viewer: viewport state machine + tiled magnifying render (#478).
zoom_pan_t
Discrete pan direction for tap-band navigation.
Bind a tiled gray8 atlas behind an ra8_tile_cache as a zoom source (#478).