Mercurial
view infinite_canvas/web_surface.h @ 279:b3b547563ec7
Add Google connector service and agent wiki
Implement the C/Seobeo Google Drive and Gmail connector with encrypted OAuth storage, Zenbu authentication, browser testing, AI tool discovery, chunked HTTP decoding, and Bazel coverage. Consolidate repository guidance into progressive wiki documentation and enforce arena-first allocation for new first-party C code.
Co-authored-by: Copilot <[email protected]>
Copilot-Session: 84c338fd-0939-4bb3-b7f3-1062eb213e5d
| author | MrJuneJune <me@mrjunejune.com> |
|---|---|
| date | Mon, 17 Aug 2026 22:22:36 -0700 |
| parents | 8d560f50ed4c |
| children | 49e9e591c9bb |
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 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]; 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; 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); 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