ra8-firmware 0.1.0
Bare-metal firmware for the Renesas RA8 family (RA8D2 / RA8P1)
Loading...
Searching...
No Matches
zoom.h
Go to the documentation of this file.
1
82
83#pragma once
84
85#include <stdint.h>
86
87#include "ra8_err.h"
88#include "ra8_ui.h"
89
123
138typedef enum : uint32_t {
139 k_zoom_dim_max = 65535U,
140} zoom_dim_t;
141
156typedef enum : uint16_t {
159
174typedef enum : uint8_t {
178
207
229
267typedef ra8_err_t (*zoom_read_fn)(void* ctx,
268 uint32_t x,
269 uint32_t y,
270 uint32_t w,
271 uint32_t h,
272 uint8_t* out,
273 uint32_t out_stride);
274
296typedef struct {
298 void* ctx;
299 uint32_t width;
300 uint32_t height;
302
335typedef struct {
336 uint8_t* row;
337 uint32_t row_cap;
338 uint8_t* strip;
339 uint32_t strip_cap;
340 uint8_t* packed;
341 uint32_t packed_cap;
343
376
415
489
518[[nodiscard]] ra8_err_t
519zoom_source_init(zoom_source_t* out, zoom_read_fn read, void* ctx, uint32_t width, uint32_t height);
520
558[[nodiscard]] ra8_err_t zoom_view_open(zoom_view_t* v, const zoom_view_cfg_t* cfg);
559
591[[nodiscard]] ra8_err_t zoom_view_rebind(zoom_view_t* v, const zoom_source_t* src, uint32_t now_ms);
592
633[[nodiscard]] ra8_err_t zoom_view_invalidate(zoom_view_t* v, uint32_t now_ms);
634
653[[nodiscard]] ra8_err_t zoom_view_close(zoom_view_t* v);
654
673[[nodiscard]] bool zoom_view_active(const zoom_view_t* v);
674
718 uint8_t scale,
719 int32_t focus_x,
720 int32_t focus_y,
721 uint32_t now_ms);
722
749[[nodiscard]] uint8_t zoom_scale_cycle(uint8_t scale, uint8_t min, uint8_t max);
750
780[[nodiscard]] ra8_err_t zoom_view_pan(zoom_view_t* v, int32_t dx, int32_t dy, uint32_t now_ms);
781
809[[nodiscard]] ra8_err_t zoom_view_pan_dir(zoom_view_t* v, zoom_pan_t dir, uint32_t now_ms);
810
837[[nodiscard]] ra8_err_t zoom_view_window(const zoom_view_t* v, ra8_ui_rect_t* out);
838
866bool zoom_view_tick(zoom_view_t* v, uint32_t now_ms);
867
894
935[[nodiscard]] ra8_err_t zoom_view_render(zoom_view_t* v);
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
Bounded UI interaction core: hit-testing, screen stack, paging.
Axis-aligned rectangle in framebuffer pixel coordinates.
Definition ra8_ui.h:72
What the reader must flush, and with which waveform.
Definition zoom.h:371
zoom_refresh_t refresh
Waveform class for that flush.
Definition zoom.h:373
ra8_ui_rect_t rect
Panel rectangle to flush.
Definition zoom.h:372
bool present
False: nothing changed, do not flush at all.
Definition zoom.h:374
Caller-owned composite buffers – the module's entire memory footprint.
Definition zoom.h:335
uint8_t * packed
The strip packed to 4 bpp (2 px/byte).
Definition zoom.h:340
uint32_t row_cap
Capacity of row, bytes.
Definition zoom.h:337
uint8_t * row
One source row, >= dst.w bytes.
Definition zoom.h:336
uint32_t packed_cap
Capacity of packed, bytes.
Definition zoom.h:341
uint32_t strip_cap
Capacity of strip, bytes.
Definition zoom.h:339
uint8_t * strip
gray8 destination strip, dst.w * strip_rows.
Definition zoom.h:338
A magnifiable full-resolution image behind the gray8 sub-rect seam.
Definition zoom.h:296
uint32_t height
Full-resolution source height, pixels.
Definition zoom.h:300
uint32_t width
Full-resolution source width, pixels.
Definition zoom.h:299
zoom_read_fn read
gray8 sub-rectangle reader (never NULL once bound).
Definition zoom.h:297
void * ctx
Opaque context handed back to read.
Definition zoom.h:298
Everything zoom_view_open needs; nothing it does not.
Definition zoom.h:404
ra8_ui_rect_t dst
Viewport in framebuffer pixels.
Definition zoom.h:407
zoom_source_t src
Bound source (see zoom_source_init).
Definition zoom.h:405
int32_t focus_x
Opening centre, source pixels (x).
Definition zoom.h:412
uint8_t scale
Opening magnification (0 => scale_min).
Definition zoom.h:408
uint8_t scale_max
Ladder ceiling (0 => k_zoom_scale_max).
Definition zoom.h:409
int32_t focus_y
Opening centre, source pixels (y).
Definition zoom.h:413
uint16_t settle_ms
Settle window (0 => the module default).
Definition zoom.h:411
zoom_policy_t policy
Waveform scheduling policy.
Definition zoom.h:410
zoom_scratch_t scratch
Caller-owned composite buffers.
Definition zoom.h:406
Live viewport: where it is looking, how magnified, and what it owes the panel.
Definition zoom.h:472
uint32_t last_input_ms
Timestamp of the last viewport change.
Definition zoom.h:478
uint8_t scale_max
Ladder ceiling for this view.
Definition zoom.h:482
zoom_refresh_t pending_kind
Waveform the owed flush should use.
Definition zoom.h:484
zoom_policy_t policy
Waveform scheduling policy.
Definition zoom.h:483
bool settle_armed
A quality repaint is still due after settling.
Definition zoom.h:486
uint8_t scale
Current integer magnification.
Definition zoom.h:481
zoom_source_t src
Bound source.
Definition zoom.h:473
zoom_scratch_t scratch
Caller-owned composite buffers.
Definition zoom.h:474
ra8_ui_rect_t dst
Viewport in framebuffer pixels.
Definition zoom.h:475
uint16_t strip_rows
Destination rows per composite strip.
Definition zoom.h:480
int32_t anchor_y
Plane row shown at dst.y.
Definition zoom.h:477
bool active
The view is open.
Definition zoom.h:487
bool pending
A flush is owed.
Definition zoom.h:485
int32_t anchor_x
Plane column shown at dst.x.
Definition zoom.h:476
uint16_t settle_ms
Input silence before the quality repaint.
Definition zoom.h:479
#define min(x, y)
Untyped minimum shim used by the SOUP's buffer clamping.
Definition xz_config.h:157
zoom_policy_t
How a viewport change is scheduled against the panel's waveforms.
Definition zoom.h:203
@ k_zoom_policy_quality
Always quality; no bi-level frame is shown.
Definition zoom.h:205
@ k_zoom_policy_responsive
Fast during a burst, quality once settled.
Definition zoom.h:204
ra8_err_t zoom_source_init(zoom_source_t *out, zoom_read_fn read, void *ctx, uint32_t width, uint32_t height)
Bind a gray8 sub-rectangle reader and its extent as a magnifiable source.
Definition zoom.c:375
ra8_err_t zoom_view_invalidate(zoom_view_t *v, uint32_t now_ms)
Declare the viewport's pixels stale for a reason the engine cannot see.
Definition zoom.c:514
bool zoom_view_active(const zoom_view_t *v)
Whether a view is open.
Definition zoom.c:534
zoom_limits_t
Magnification ladder bounds, strip geometry and the letterbox fill.
Definition zoom.h:117
@ k_zoom_strip_rows_max
Destination rows composited per strip.
Definition zoom.h:120
@ k_zoom_scale_max
Engine ceiling on integer magnification.
Definition zoom.h:119
@ k_zoom_bg_gray
Letterbox fill level (on-palette white).
Definition zoom.h:121
@ k_zoom_scale_min
1:1 – one source pixel per panel pixel.
Definition zoom.h:118
ra8_err_t zoom_view_rebind(zoom_view_t *v, const zoom_source_t *src, uint32_t now_ms)
Point an open view at a different source, keeping zoom and position.
Definition zoom.c:495
zoom_dim_t
Bound on a source dimension the engine will magnify.
Definition zoom.h:138
@ k_zoom_dim_max
Largest accepted source width or height, pixels.
Definition zoom.h:139
ra8_err_t zoom_view_close(zoom_view_t *v)
Close a view; it stops owing the panel anything.
Definition zoom.c:525
ra8_err_t zoom_view_pan_dir(zoom_view_t *v, zoom_pan_t dir, uint32_t now_ms)
Pan by a discrete step in one direction (the tap-band interaction).
Definition zoom.c:614
ra8_err_t zoom_view_pan(zoom_view_t *v, int32_t dx, int32_t dy, uint32_t now_ms)
Pan the viewport by a destination-pixel delta.
Definition zoom.c:595
bool zoom_view_tick(zoom_view_t *v, uint32_t now_ms)
Advance the settle timer; promote a bi-level view to full quality.
Definition zoom.c:664
ra8_err_t zoom_view_window(const zoom_view_t *v, ra8_ui_rect_t *out)
The source rectangle currently visible, in source pixels.
Definition zoom.c:645
zoom_timing_t
Default gesture-settle delay, in milliseconds.
Definition zoom.h:156
@ k_zoom_settle_ms_default
Default input-silence settle window, ms.
Definition zoom.h:157
ra8_err_t(* zoom_read_fn)(void *ctx, uint32_t x, uint32_t y, uint32_t w, uint32_t h, uint8_t *out, uint32_t out_stride)
Read a sub-rectangle of the magnified source as gray8 (the DIP seam).
Definition zoom.h:267
ra8_err_t zoom_view_present(zoom_view_t *v, zoom_present_t *out)
Take the pending flush plan, clearing it.
Definition zoom.c:684
uint8_t zoom_scale_cycle(uint8_t scale, uint8_t min, uint8_t max)
Next magnification on the doubling ladder, wrapping back to the minimum.
Definition zoom.c:539
ra8_err_t zoom_view_render(zoom_view_t *v)
Composite the visible window into the bound ra8_gfx framebuffer.
ra8_err_t zoom_view_open(zoom_view_t *v, const zoom_view_cfg_t *cfg)
Open a viewport onto a source, centred on a source-pixel focus.
Definition zoom.c:482
zoom_refresh_t
Waveform class the next flush of the viewport should use.
Definition zoom.h:174
@ k_zoom_refresh_quality
Settled: panel GC16 (all 16 levels, slow).
Definition zoom.h:176
@ k_zoom_refresh_fast
Interactive burst: panel A2 (bi-level, fast).
Definition zoom.h:175
zoom_pan_t
Discrete pan direction for tap-band navigation.
Definition zoom.h:222
@ k_zoom_pan_right
Viewport travels toward +x.
Definition zoom.h:225
@ k_zoom_pan_left
Viewport travels toward -x.
Definition zoom.h:224
@ k_zoom_pan_none
No movement.
Definition zoom.h:223
@ k_zoom_pan_down
Viewport travels toward +y.
Definition zoom.h:227
@ k_zoom_pan_up
Viewport travels toward -y.
Definition zoom.h:226
ra8_err_t zoom_view_set_scale(zoom_view_t *v, uint8_t scale, int32_t focus_x, int32_t focus_y, uint32_t now_ms)
Set the magnification, keeping a panel point fixed under the finger.
Definition zoom.c:556