29typedef enum : uint32_t {
38typedef enum : uint32_t {
114priv_viewer_pread(
void* ctx, uint64_t offset, uint8_t* buffer,
size_t length,
size_t* out_read);
Unified demand-paged reader for comic-book archives – CBZ (ZIP) and CBR (RAR).
JOF band-tile atlas: the display-native normalized image format (#231, shared with the longstrip scro...
Continuous vertical-scroll (longstrip / manhwa) reading mode over an JOF band-tile atlas (#289).
Annotation-attribute framework macros for ra8-firmware.
#define RA8_PRIV
Module-private helper: shared across TUs but only inside one library.
Unified decompression-limits policy: one bound set for every decoder.
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).
Caller-owned host JOF/comic reader and RGB565 render surface.
struct ra8_viewer_reader ra8_viewer_reader_t
Opaque state bound inside caller-owned workspace.
ra8_err_t priv_viewer_pread(void *ctx, uint64_t offset, uint8_t *buffer, size_t length, size_t *out_read)
JOF positional-reader seam over viewer_file_ctx_t.
size_t priv_viewer_comic_read(void *ctx, uint64_t offset, void *buffer, size_t length)
Adapt exact descriptor reads to the comic size-returning seam.
void priv_viewer_size_jof_tiles(ra8_viewer_reader_t *reader, uint32_t count)
Populate native tile dimensions after the strip opens.
ra8_err_t priv_viewer_render_comic(ra8_viewer_reader_t *reader, uint32_t page)
Render one comic page into the fixed framebuffer.
ra8_err_t priv_viewer_tile_jof(ra8_viewer_reader_t *reader, uint32_t index, uint16_t *pixels, size_t pixel_bytes, uint32_t *width, uint32_t *height)
Render one JOF viewport into caller-owned RGB565 output.
ra8_viewer_budget_t
Stable constants used by requirements and bind.
@ k_viewer_white_byte
Byte fill for white RGB565.
@ k_viewer_background
White graphics clear colour.
@ k_viewer_layout_version
Workspace layout ABI guard.
@ k_viewer_jof_buckets
Power-of-two cache bucket count.
@ k_viewer_jof_cells
One decoded band resident.
ra8_err_t priv_viewer_size_comic_tiles(ra8_viewer_reader_t *reader)
Probe every comic page into the bound dimension arrays.
ra8_err_t priv_viewer_open_jof(ra8_viewer_reader_t *reader)
Open and wire the JOF engine over a bound reader.
ra8_err_t priv_viewer_tile_comic(ra8_viewer_reader_t *reader, uint32_t index, uint16_t *pixels, size_t pixel_bytes, uint32_t *width, uint32_t *height)
Render one comic page into caller-owned RGB565 storage.
ra8_viewer_comic_budget_t
Fixed bounded slices for the bare comic engine.
@ k_viewer_comic_page_cap
Maximum indexed pages.
@ k_viewer_comic_arena_bytes
stb decode arena capacity.
@ k_viewer_comic_page_bytes
Encoded-page resident cap.
@ k_viewer_comic_name_bytes
Member-name arena bytes.
ra8_err_t priv_viewer_open_comic(ra8_viewer_reader_t *reader)
Open a bare CBZ/CBR/CBT engine over a bound reader.
ra8_err_t priv_viewer_render_jof(ra8_viewer_reader_t *reader, uint32_t page)
Render one JOF viewport into the fixed framebuffer.
One entry in the resident, sorted page index.
One open comic archive: backing, kind, page index, and backend state.
Context binding a JOF atlas to a ra8_tile_cache decode-on-miss.
Opened longstrip-strip scroll state (caller-owned; treat as private).
One decompression policy: the five resource bounds decoders enforce.
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.
Bound reader state; every buffer is borrowed from one workspace.
uint32_t * tile_hpx
Native height per viewport tile.
uint32_t * tile_wpx
Native width per viewport tile.
uint16_t * rt565
Current composite target.
viewer_jof_t jof
JOF engine and caller-bound cache.
viewer_comic_t comic
Comic engine and caller slices.
uint32_t rt_w
Current target width.
uint16_t * fb
Fixed headless framebuffer.
bool is_open
Successful engine-open flag.
bool is_bound
Successful workspace bind flag.
uint32_t engine
ra8_viewer_reader_engine_t value.
viewer_file_ctx_t file
Raw source descriptor.
ra8_decomp_limits_t limits
Shared untrusted-input policy.
uint32_t tile_cap
Bound dimension entries.
uint32_t tile_n
Populated dimension entries.
uint32_t rt_h
Current target height.
Bare comic engine and every caller-bound backing slice.
uint8_t * page
Resident encoded-image bytes.
comic_t archive
Open CBZ/CBR/CBT facade.
char * names
Resident member-name arena.
size_t page_cap
Encoded-image capacity in bytes.
uint8_t * arena
stb caller-owned decode arena.
comic_page_t * pages
Resident sorted page index.
size_t arena_cap
Decode-arena capacity in bytes.
Raw host descriptor behind the reusable positional-read callback.
int fd
Owned descriptor while open.
bool is_open
Descriptor ownership flag.
uint64_t size
Document length in bytes.
Caller-bound JOF engine and one-band cache backing.
size_t scratch_cap
Bound compressed staging bytes.
longstrip_t strip
Scroll/composite engine.
uint8_t * scratch
Compressed-band staging.
uint32_t viewport_h
Page height on the strip.
longstrip_decode_ctx_t dctx
JOF decoder callback state.
ra8_tile_dims_t * dims
Single cache dimensions entry.
ra8_tile_cache_t cache
One-band keyed cache.
uint8_t * cells
One decoded-band buffer.
ra8_tile_key_t * keys
Single cache key.
int32_t * buckets
Hash bucket heads.
ra8_keycache_cell_t * meta
Single cache metadata entry.
size_t cell_cap
Bound decoded-band bytes.
int32_t x_off
Horizontal target centring.