view infinite_canvas/theme.h @ 278:8d560f50ed4c

Improve infinite canvas interactions and browser chrome Render Lucide icons directly with Raylib, add searchable icon browsing, robust text editing, entity lifecycle animations, z-order-safe input, semantic themes, and animated editable browser controls. Document rendering, pinning, context, and component extension for future agents. Co-authored-by: Copilot <[email protected]> Copilot-Session: f68442b1-fa8f-46a0-9689-81710613bbd4
author MrJuneJune <me@mrjunejune.com>
date Mon, 17 Aug 2026 22:16:14 -0700
parents b55c22cff335
children
line wrap: on
line source

#ifndef INFINITE_CANVAS_THEME_H
#define INFINITE_CANVAS_THEME_H

#include "dowa/dowa.h"
#include "third_party/raylib/include/raylib.h"

typedef enum {
    CANVAS_THEME_AUTO = 0,
    CANVAS_THEME_LIGHT,
    CANVAS_THEME_DARK,
} Canvas_Theme_Mode;

typedef struct {
    Canvas_Theme_Mode requested_mode;
    Canvas_Theme_Mode resolved_mode;
    Color background;
    Color surface;
    Color surface_muted;
    Color border;
    Color text;
    Color text_muted;
    Color accent;
    Color accent_soft;
    Color on_accent;
    Color selection;
    Color entity_outline;
    Color button;
    Color button_hover;
    Color button_active;
    Color button_active_hover;
    Color switch_track_off;
    Color switch_track_off_hover;
    Color switch_track_on;
    Color switch_track_on_hover;
    Color switch_thumb;
    Color pin;
    Color danger;
    Color shadow;
    Color toast_surface;
    Color toast_border;
} Canvas_Theme;

Canvas_Theme_Mode Canvas_Theme_Mode_From_String(const char *p_value);
boolean Canvas_System_Prefers_Dark(void);
void Canvas_Theme_Resolve(Canvas_Theme *p_theme, Canvas_Theme_Mode mode);
void Canvas_Theme_Toggle(Canvas_Theme *p_theme);
void Canvas_Theme_Draw_Shadow(
    const Canvas_Theme *p_theme,
    Rectangle bounds,
    float roundness,
    int32 segments,
    float zoom,
    float opacity);

#endif