Mercurial
view 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 |
line wrap: on
line source
#ifndef INFINITE_CANVAS_WEB_SURFACE_H #define INFINITE_CANVAS_WEB_SURFACE_H #include "infinite_canvas/canvas.h" #define CANVAS_MAX_WEB_VIEWS 12 typedef enum { CANVAS_DICTATION_EVENT_NONE = 0, CANVAS_DICTATION_EVENT_STATUS, CANVAS_DICTATION_EVENT_PARTIAL, CANVAS_DICTATION_EVENT_FINAL, } Canvas_Dictation_Event; typedef struct { uint32 entity_id; Canvas_Entity_Type entity_type; void *p_native; uint8 *p_pixels; Texture2D texture; int32 texture_width; int32 texture_height; size_t pixel_capacity; char source_url[CANVAS_ENTITY_TEXT_CAPACITY]; char url[CANVAS_ENTITY_TEXT_CAPACITY]; char dictation_text[CANVAS_ENTITY_TEXT_CAPACITY]; uint32 dictation_sequence; uint32 consumed_dictation_sequence; int32 dictation_command; Canvas_Dictation_Event dictation_event; boolean is_dictation_transport; boolean can_go_back; boolean can_go_forward; boolean color_scheme_applied; boolean applied_dark_mode; boolean active; boolean browser_created; boolean texture_ready; boolean pixels_dirty; } Canvas_Web_View; typedef struct { Dowa_Arena *p_arena; void *p_native; Canvas_Web_View views[CANVAS_MAX_WEB_VIEWS]; uint32 focused_entity_id; int32 pending_dictation_command; boolean dark_mode; boolean initialized; } Canvas_Web_Surface; #if defined(__cplusplus) extern "C" { #endif int32 Canvas_Web_Surface_Execute_Subprocess(int argc, char **p_argv); boolean Canvas_Web_Surface_Init( Canvas_Web_Surface *p_surface, Dowa_Arena *p_arena, boolean dark_mode); void Canvas_Web_Surface_Set_Dark_Mode( Canvas_Web_Surface *p_surface, boolean dark_mode); boolean Canvas_Web_Surface_Update_Input( Canvas_Web_Surface *p_surface, const Canvas_Camera *p_camera, const Canvas_Scene *p_scene); void Canvas_Web_Surface_Sync( Canvas_Web_Surface *p_surface, const Canvas_Camera *p_camera, const Canvas_Scene *p_scene); void Canvas_Web_Surface_Draw( const Canvas_Web_Surface *p_surface, const Canvas_Camera *p_camera, const Canvas_Scene *p_scene); void Canvas_Web_Surface_Draw_Entity( const Canvas_Web_Surface *p_surface, const Canvas_Camera *p_camera, const Canvas_Scene *p_scene, size_t entity_index); const char *Canvas_Web_Surface_URL( const Canvas_Web_Surface *p_surface, uint32 entity_id); boolean Canvas_Web_Surface_Can_Go_Back( const Canvas_Web_Surface *p_surface, uint32 entity_id); boolean Canvas_Web_Surface_Can_Go_Forward( const Canvas_Web_Surface *p_surface, uint32 entity_id); void Canvas_Web_Surface_Go_Back( Canvas_Web_Surface *p_surface, uint32 entity_id); void Canvas_Web_Surface_Go_Forward( Canvas_Web_Surface *p_surface, uint32 entity_id); void Canvas_Web_Surface_Set_Dictation_Active( Canvas_Web_Surface *p_surface, boolean active); void Canvas_Web_Surface_Commit_Dictation( Canvas_Web_Surface *p_surface); Canvas_Dictation_Event Canvas_Web_Surface_Consume_Dictation( Canvas_Web_Surface *p_surface, char *p_text, size_t text_capacity); boolean Canvas_Web_Surface_Is_Focused(const Canvas_Web_Surface *p_surface); void Canvas_Web_Surface_Shutdown(Canvas_Web_Surface *p_surface); #if defined(__cplusplus) } #endif #endif