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

src/api/apiInternal.c


#include "api/canvas.h"
#include "apiInternal.h"
#include "node.h"
 
 
#include <stdlib.h>
#include <string.h>
 
void jobCreateWidget(void *data)
{
    CreateWidgetPayload *payload = data;
    Node *node;
    Node *parent;
 
    if (!payload)
        return;
    node = nodeCreate((Widget){
        .id = payload->id,
        .widgetType = payload->widgetType,
    });
    if (!node)
        return;
    node->position = payload->position;
    node->size = payload->size;
    node->fontSize = payload->fontSize;
    node->callback = payload->callback;
    if (payload->text[0]) {
        size_t n = strlen(payload->text) + 1;
        node->text = malloc(n);
        if (node->text)
            memcpy(node->text, payload->text, n);
    }
    parent = nodeFind(payload->parentId);
    if (!parent)
        parent = nodeRoot();
    nodeAttach(parent, node);
}
 
void jobCreateForm(void *data)
{
    FormPayload *payload = data;
    Node *form;
    int i;
 
    if (!payload)
        return;
    form = nodeCreate((Widget){
        .id = payload->id,
        .widgetType = A_WIDGET_BOX,
    });
    if (!form)
        return;
    form->userData = payload->data;
    nodeAttach(nodeRoot(), form);
    for (i = 0; i < payload->childCount; i++) {
        Node *child = nodeFind(payload->childIds[i]);
        if (child && child != form)
            nodeAttach(form, child);
    }
}
 
void jobDestroyWidget(void *data)
{
    IdPayload *payload = data;
    Node *node;
 
    if (!payload)
        return;
    node = nodeFind(payload->id);
    if (node && node != nodeRoot())
        nodeDestroy(node);
}
 
void jobSetStyle(void *data)
{
    SetStylePayload *payload = data;
    Node *node;
 
    if (!payload)
        return;
    node = nodeFind(payload->id);
    if (!node)
        node = nodeRoot();
    nodeApplyStyle(node, &payload->style);
}
 
void jobApplyShader(void *data)
{
    ApplyShaderPayload *payload = data;
    Node *node;
 
    if (!payload)
        return;
    node = nodeFind(payload->id);
    if (!node)
        node = nodeRoot();
    nodeApplyShader(node, payload->shader[0] ? payload->shader : NULL);
}
 
void jobSetOption(void *data)
{
    (void)data;
}
powered by btf.