comparison infinite_canvas/web_surface.h @ 280:49e9e591c9bb

Add persistent dictation, prewarmed WebRTC speech input, Copilot SDK routing, animated conversation lifecycle controls, parking, and architecture coverage.
author MrJuneJune <me@mrjunejune.com>
date Tue, 18 Aug 2026 19:14:53 -0700
parents 8d560f50ed4c
children
comparison
equal deleted inserted replaced
279:b3b547563ec7 280:49e9e591c9bb
2 #define INFINITE_CANVAS_WEB_SURFACE_H 2 #define INFINITE_CANVAS_WEB_SURFACE_H
3 3
4 #include "infinite_canvas/canvas.h" 4 #include "infinite_canvas/canvas.h"
5 5
6 #define CANVAS_MAX_WEB_VIEWS 12 6 #define CANVAS_MAX_WEB_VIEWS 12
7
8 typedef enum {
9 CANVAS_DICTATION_EVENT_NONE = 0,
10 CANVAS_DICTATION_EVENT_STATUS,
11 CANVAS_DICTATION_EVENT_PARTIAL,
12 CANVAS_DICTATION_EVENT_FINAL,
13 } Canvas_Dictation_Event;
7 14
8 typedef struct { 15 typedef struct {
9 uint32 entity_id; 16 uint32 entity_id;
10 Canvas_Entity_Type entity_type; 17 Canvas_Entity_Type entity_type;
11 void *p_native; 18 void *p_native;
14 int32 texture_width; 21 int32 texture_width;
15 int32 texture_height; 22 int32 texture_height;
16 size_t pixel_capacity; 23 size_t pixel_capacity;
17 char source_url[CANVAS_ENTITY_TEXT_CAPACITY]; 24 char source_url[CANVAS_ENTITY_TEXT_CAPACITY];
18 char url[CANVAS_ENTITY_TEXT_CAPACITY]; 25 char url[CANVAS_ENTITY_TEXT_CAPACITY];
26 char dictation_text[CANVAS_ENTITY_TEXT_CAPACITY];
27 uint32 dictation_sequence;
28 uint32 consumed_dictation_sequence;
29 int32 dictation_command;
30 Canvas_Dictation_Event dictation_event;
31 boolean is_dictation_transport;
19 boolean can_go_back; 32 boolean can_go_back;
20 boolean can_go_forward; 33 boolean can_go_forward;
21 boolean color_scheme_applied; 34 boolean color_scheme_applied;
22 boolean applied_dark_mode; 35 boolean applied_dark_mode;
23 boolean active; 36 boolean active;
29 typedef struct { 42 typedef struct {
30 Dowa_Arena *p_arena; 43 Dowa_Arena *p_arena;
31 void *p_native; 44 void *p_native;
32 Canvas_Web_View views[CANVAS_MAX_WEB_VIEWS]; 45 Canvas_Web_View views[CANVAS_MAX_WEB_VIEWS];
33 uint32 focused_entity_id; 46 uint32 focused_entity_id;
47 int32 pending_dictation_command;
34 boolean dark_mode; 48 boolean dark_mode;
35 boolean initialized; 49 boolean initialized;
36 } Canvas_Web_Surface; 50 } Canvas_Web_Surface;
37 51
38 #if defined(__cplusplus) 52 #if defined(__cplusplus)
77 Canvas_Web_Surface *p_surface, 91 Canvas_Web_Surface *p_surface,
78 uint32 entity_id); 92 uint32 entity_id);
79 void Canvas_Web_Surface_Go_Forward( 93 void Canvas_Web_Surface_Go_Forward(
80 Canvas_Web_Surface *p_surface, 94 Canvas_Web_Surface *p_surface,
81 uint32 entity_id); 95 uint32 entity_id);
96 void Canvas_Web_Surface_Set_Dictation_Active(
97 Canvas_Web_Surface *p_surface,
98 boolean active);
99 void Canvas_Web_Surface_Commit_Dictation(
100 Canvas_Web_Surface *p_surface);
101 Canvas_Dictation_Event Canvas_Web_Surface_Consume_Dictation(
102 Canvas_Web_Surface *p_surface,
103 char *p_text,
104 size_t text_capacity);
82 boolean Canvas_Web_Surface_Is_Focused(const Canvas_Web_Surface *p_surface); 105 boolean Canvas_Web_Surface_Is_Focused(const Canvas_Web_Surface *p_surface);
83 void Canvas_Web_Surface_Shutdown(Canvas_Web_Surface *p_surface); 106 void Canvas_Web_Surface_Shutdown(Canvas_Web_Surface *p_surface);
84 107
85 #if defined(__cplusplus) 108 #if defined(__cplusplus)
86 } 109 }