ra8-firmware 0.1.0
Bare-metal firmware for the Renesas RA8 family (RA8D2 / RA8P1)
Loading...
Searching...
No Matches
ra8_viewer_reader_internal.h
Go to the documentation of this file.
1
10#pragma once
11
12#include <stddef.h>
13#include <stdint.h>
14
15#include "comic.h"
16#include "jof.h"
17#include "longstrip.h"
18#include "ra8_attributes.h"
19#include "ra8_decomp_limits.h"
20#include "ra8_err.h"
21#include "ra8_tile_cache.h"
22#include "ra8_viewer_reader.h"
23
24#ifdef __cplusplus
25extern "C" {
26#endif
27
36
38typedef enum : uint32_t {
41 k_viewer_comic_page_bytes = 4U * 1024U * 1024U,
42 k_viewer_comic_arena_bytes = 8U * 1024U * 1024U,
44
46typedef struct {
47 uint64_t size;
48 int fd;
49 bool is_open;
51
81
83typedef struct {
86 char* names;
87 uint8_t* page;
88 uint8_t* arena;
89 size_t page_cap;
90 size_t arena_cap;
92
111
113RA8_PRIV [[nodiscard]] ra8_err_t
114priv_viewer_pread(void* ctx, uint64_t offset, uint8_t* buffer, size_t length, size_t* out_read);
115
118
136RA8_PRIV size_t priv_viewer_comic_read(void* ctx, uint64_t offset, void* buffer, size_t length);
137
140
142RA8_PRIV [[nodiscard]] ra8_err_t priv_viewer_render_jof(ra8_viewer_reader_t* reader, uint32_t page);
143
146 uint32_t page);
147
150 uint32_t index,
151 uint16_t* pixels,
152 size_t pixel_bytes,
153 uint32_t* width,
154 uint32_t* height);
155
158 uint32_t index,
159 uint16_t* pixels,
160 size_t pixel_bytes,
161 uint32_t* width,
162 uint32_t* height);
163
166
179RA8_PRIV void priv_viewer_size_jof_tiles(ra8_viewer_reader_t* reader, uint32_t count);
180
181#ifdef __cplusplus
182}
183#endif
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.
Definition ra8_err.h:546
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.
Definition comic.h:140
One open comic archive: backing, kind, page index, and backend state.
Definition comic.h:179
Context binding a JOF atlas to a ra8_tile_cache decode-on-miss.
Definition longstrip.h:137
Opened longstrip-strip scroll state (caller-owned; treat as private).
Definition longstrip.h:185
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.