#ifndef INFINITE_CANVAS_DEV_UI_H
#define INFINITE_CANVAS_DEV_UI_H

#include "infinite_canvas/canvas.h"
#include "infinite_canvas/scene_store.h"

typedef struct {
    int32 selected_type;
    boolean collapsed;
    boolean dropdown_open;
    boolean context_open;
    float context_scroll;
    float context_content_height;
    char context_buffer[CANVAS_CONTEXT_MAX_LENGTH];
    char snapshot_name[CANVAS_SCENE_STORE_NAME_CAPACITY];
    char snapshot_status[96];
    boolean snapshot_name_editing;
} Canvas_Dev_UI;

typedef enum {
    CANVAS_DEV_UI_ACTION_NONE = 0,
    CANVAS_DEV_UI_ACTION_SAVE_SNAPSHOT,
    CANVAS_DEV_UI_ACTION_LOAD_SNAPSHOT,
} Canvas_Dev_UI_Action;

void Canvas_Dev_UI_Init(
    Canvas_Dev_UI *p_ui,
    Font font,
    const Canvas_Theme *p_theme);
boolean Canvas_Dev_UI_Contains_Pointer(const Canvas_Dev_UI *p_ui);
boolean Canvas_Dev_UI_Is_Editing(const Canvas_Dev_UI *p_ui);
Canvas_Dev_UI_Action Canvas_Dev_UI_Draw(
    Canvas_Dev_UI *p_ui,
    Canvas_Camera *p_camera,
    Canvas_Scene *p_scene,
    Font font,
    Canvas_Theme *p_theme);
void Canvas_Dev_UI_Set_Snapshot_Status(
    Canvas_Dev_UI *p_ui,
    const char *p_status);

#endif
