do not edit — generated by btf.
git.druid.rocksindexmilitantprogrammerastral_canvassrc/api/canvas.c

src/api/canvas.c


#include "api/canvas.h"
#include "api/apiInternal.h"
#include "lib/error.h"
#include "lib/lib.h"
 
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
 
static Widget failedWidget(void)
{
    return (Widget){ .id = 0, .widgetType = A_WIDGET_PAGE };
}
 
static Widget queueWidget(WidgetType type, Position2D position, Size size,
                          int fontSize, char *text, void *callback)
{
    CreateWidgetPayload *payload;
    Widget widget;
 
    payload = calloc(1, sizeof(*payload));
    if (!payload) return failedWidget();
    widget.id = libAllocId();
    widget.widgetType = type;
    if (widget.id == 0) {
        free(payload);
        return failedWidget();
    }
    payload->id = widget.id;
    payload->parentId = 0;
    payload->widgetType = type;
    payload->position = position;
    payload->size = size;
    payload->fontSize = fontSize;
    payload->callback = callback;
    if (text)
        snprintf(payload->text, sizeof(payload->text), "%s", text);
 
    if (libPushToWorker(jobCreateWidget, payload, 1) != 0) {
        libFreeId(widget.id);
        return failedWidget();
    }
    return widget;
}
 
Widget A_Init(int width, int height, const char *title, const CanvasOptions *opt)
{
    if (libStart(width, height, title, opt) != 0)
        return failedWidget();
    return (Widget){ .id = 0, .widgetType = A_WIDGET_PAGE };
}
 
const char *A_LastError(void)
{
    const char *err = canvasErrorGet();
    return err ? err : "";
}
 
int A_CloseWindow(void)
{
    libStop();
    return 0;
}
 
int A_Wait(void)
{
    libWait();
    return 0;
}
 
int A_IsOpen(void)
{
    return libIsOpen();
}
 
Widget A_SetStyle(Style theme)
{
    SetStylePayload *payload = calloc(1, sizeof(*payload));
 
    if (!payload)
        return failedWidget();
    payload->id = 0;
    payload->style = theme;
    if (libPushToWorker(jobSetStyle, payload, 1) != 0)
        return failedWidget();
    return (Widget){ .id = 0, .widgetType = A_WIDGET_PAGE };
}
 
void A_ApplyShader(Widget *widget, char *shader)
{
    ApplyShaderPayload *payload;
 
    if (!widget)
        return;
    payload = calloc(1, sizeof(*payload));
    if (!payload)
        return;
    payload->id = widget->id;
    if (shader)
        snprintf(payload->shader, sizeof(payload->shader), "%s", shader);
    libPushToWorker(jobApplyShader, payload, 1);
}
 
Widget A_CreatePage(Position2D position, Size size)
{
    return queueWidget(A_WIDGET_PAGE, position, size, 0, NULL, NULL);
}
 
Widget A_CreateBox(Position2D position, Size size)
{
    return queueWidget(A_WIDGET_BOX, position, size, 0, NULL, NULL);
}
 
Widget A_CreateButton(Position2D position, Size size, char *text, void *callback)
{
    return queueWidget(A_WIDGET_BUTTON, position, size, 0, text, callback);
}
 
Widget A_CreateLabel(Position2D position, int fontSize, char *value)
{
    Size size = {0, 0};
    return queueWidget(A_WIDGET_LABEL, position, size, fontSize, value, NULL);
}
 
Widget A_CreateText(Position2D position, int fontSize, char *value)
{
    Size size = {0, 0};
    return queueWidget(A_WIDGET_TEXT, position, size, fontSize, value, NULL);
}
 
Widget A_CreateTextField(Position2D position, Size size, char *value)
{
    return queueWidget(A_WIDGET_TEXTFIELD, position, size, 0, value, NULL);
}
 
Widget A_CreateImage(Position2D position, Size size, char *path)
{
    return queueWidget(A_WIDGET_IMAGE, position, size, 0, path, NULL);
}
 
Widget A_CreateCheckbox(Position2D position, Size size)
{
    return queueWidget(A_WIDGET_CHECKBOX, position, size, 0, NULL, NULL);
}
 
Widget A_CreateSlider(Position2D position, Size size)
{
    return queueWidget(A_WIDGET_SLIDER, position, size, 0, NULL, NULL);
}
 
int A_SetParent(Widget child, Widget parent)
{
    (void)child;
    (void)parent;
    return 0;
}
 
int A_SetChildren(Widget parent, Widget *children, int count)
{
    (void)parent;
    (void)children;
    (void)count;
    return 0;
}
 
void A_DestroyWidget(Widget widget)
{
    IdPayload *payload;
 
    if (widget.id == 0)
        return;
    payload = calloc(1, sizeof(*payload));
    if (!payload)
        return;
    payload->id = widget.id;
    libPushToWorker(jobDestroyWidget, payload, 1);
}
 
void A_RegisterInput(A_Keymap input, void *callbackOrValue, void *argsOrFlag)
{
    (void)input;
    (void)callbackOrValue;
    (void)argsOrFlag;
}
powered by btf.