ra8-firmware 0.1.0
Bare-metal firmware for the Renesas RA8 family (RA8D2 / RA8P1)
Loading...
Searching...
No Matches
ra8_viewer_reader.h
Go to the documentation of this file.
1
19#pragma once
20
21#include <stddef.h>
22#include <stdint.h>
23
24#include "ra8_err.h"
25
26#ifdef __cplusplus
27extern "C" {
28#endif
29
31typedef enum : uint16_t {
35
38
44
66
72
86[[nodiscard]] ra8_err_t ra8_viewer_reader_requirements(const char* path,
88
104 void* workspace,
105 size_t workspace_bytes,
106 const ra8_viewer_reader_requirements_t* requirements,
108
121[[nodiscard]] ra8_err_t ra8_viewer_open(ra8_viewer_reader_t* reader, const char* path);
122
124[[nodiscard]] uint32_t ra8_viewer_page_count(const ra8_viewer_reader_t* reader);
125
132[[nodiscard]] ra8_err_t ra8_viewer_render_page(ra8_viewer_reader_t* reader, uint32_t page);
133
135[[nodiscard]] uint32_t ra8_viewer_tile_count(const ra8_viewer_reader_t* reader);
136
138[[nodiscard]] ra8_err_t ra8_viewer_tile_size(const ra8_viewer_reader_t* reader,
139 uint32_t index,
140 uint32_t* width,
141 uint32_t* height);
142
152 uint32_t index,
153 size_t* out_bytes,
154 size_t* out_alignment);
155
170 uint32_t index,
171 void* workspace,
172 size_t workspace_bytes,
173 uint32_t* width,
174 uint32_t* height,
175 uint16_t** out_pixels,
177
179[[nodiscard]] ra8_err_t ra8_viewer_dump_ppm(const ra8_viewer_reader_t* reader, const char* path);
180
182[[nodiscard]] ra8_err_t
183ra8_viewer_write_ppm565(const uint16_t* px, uint32_t w, uint32_t h, const char* path);
184
186[[nodiscard]] uint16_t ra8_viewer_pack565(uint8_t rr, uint8_t gg, uint8_t bb);
187
189[[nodiscard]] uint16_t ra8_viewer_pack565_le_pair(uint8_t low, uint8_t high);
190
203
204#ifdef __cplusplus
205}
206#endif
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
uint32_t ra8_viewer_tile_count(const ra8_viewer_reader_t *reader)
Number of scroll tiles in reader, or zero for NULL/closed.
ra8_viewer_geom_t
Fixed framebuffer geometry used by headless page rendering.
@ k_ra8_viewer_fb_height
Framebuffer height in pixels.
@ k_ra8_viewer_fb_width
Framebuffer width in pixels.
ra8_err_t ra8_viewer_write_ppm565(const uint16_t *px, uint32_t w, uint32_t h, const char *path)
Write arbitrary caller-owned RGB565 pixels as binary PPM.
uint32_t ra8_viewer_page_count(const ra8_viewer_reader_t *reader)
Number of viewport pages in reader, or zero for NULL/closed.
ra8_viewer_reader_engine_t
Reader engine selected by the requirements query.
@ k_ra8_viewer_engine_comic
Bare CBZ/CBR/CBT comic engine.
@ k_ra8_viewer_engine_jof
Streamed JOF long-strip engine.
void ra8_viewer_close(ra8_viewer_reader_t *reader)
Close the descriptor and reset reader state without freeing workspace.
ra8_err_t ra8_viewer_open(ra8_viewer_reader_t *reader, const char *path)
Open the document class used to size and bind reader.
uint16_t ra8_viewer_pack565(uint8_t rr, uint8_t gg, uint8_t bb)
Pack 8-bit RGB channels into one RGB565 word.
ra8_err_t ra8_viewer_tile_requirements(const ra8_viewer_reader_t *reader, uint32_t index, size_t *out_bytes, size_t *out_alignment)
Report exact caller storage needed to render tile index.
ra8_err_t ra8_viewer_render_tile565(ra8_viewer_reader_t *reader, uint32_t index, void *workspace, size_t workspace_bytes, uint32_t *width, uint32_t *height, uint16_t **out_pixels, ra8_viewer_workspace_report_t *report)
Render tile index into caller-owned RGB565 storage.
ra8_err_t ra8_viewer_render_page(ra8_viewer_reader_t *reader, uint32_t page)
Render one page into the reader's fixed RGB565 framebuffer.
ra8_err_t ra8_viewer_dump_ppm(const ra8_viewer_reader_t *reader, const char *path)
Write the current fixed framebuffer as binary PPM.
ra8_err_t ra8_viewer_reader_bind(ra8_viewer_reader_t **out, void *workspace, size_t workspace_bytes, const ra8_viewer_reader_requirements_t *requirements, ra8_viewer_workspace_report_t *report)
Bind one reader state to caller-owned bytes.
ra8_err_t ra8_viewer_reader_requirements(const char *path, ra8_viewer_reader_requirements_t *out)
Inspect path and calculate its exact reader workspace.
struct ra8_viewer_reader ra8_viewer_reader_t
Opaque state bound inside caller-owned workspace.
uint16_t ra8_viewer_pack565_le_pair(uint8_t low, uint8_t high)
Reassemble one little-endian RGB565 word.
ra8_err_t ra8_viewer_tile_size(const ra8_viewer_reader_t *reader, uint32_t index, uint32_t *width, uint32_t *height)
Read native dimensions for tile index.
Exact immutable layout returned for one document.
size_t comic_pages_bytes
Comic page-index storage, or zero.
size_t required_bytes
Complete workspace extent.
size_t comic_page_bytes
Resident encoded-page storage, or zero.
uint32_t layout_version
ABI guard consumed by bind.
size_t comic_arena_bytes
stb decode arena storage, or zero.
size_t scratch_bytes
One bounded compressed-band staging area.
size_t comic_names_bytes
Comic member-name arena, or zero.
size_t cell_bytes
One resident decoded JOF band.
uint32_t engine
ra8_viewer_reader_engine_t selection.
size_t framebuffer_bytes
Resident fixed RGB565 framebuffer.
uint32_t tile_count
Number of viewport tiles in the strip.
size_t dimensions_bytes
Two resident per-tile dimension arrays.
size_t required_alignment
Required base-address alignment.
Bound reader state; every buffer is borrowed from one workspace.
Required-versus-supplied evidence from a bind attempt.
size_t supplied_bytes
Bytes supplied by the caller.
size_t required_bytes
Exact bytes required by the requested layout.