Add descriptor for creating node

This commit is contained in:
2023-12-21 18:23:45 +01:00
parent e708d5e2cb
commit 2e39fd2614
4 changed files with 31 additions and 11 deletions

View File

@@ -28,9 +28,9 @@ void *bzResize(void *ptr, size_t newSize) {
void *bzMemSet(void *ptr, int value, size_t numBytes) { void *bzMemSet(void *ptr, int value, size_t numBytes) {
return memset(ptr, value, numBytes); return memset(ptr, value, numBytes);
} }
void *bzMemMove(void *dst, void *src, size_t numBytes) { void *bzMemMove(void *dst, const void *src, size_t numBytes) {
return memmove(dst, src, numBytes); return memmove(dst, src, numBytes);
} }
void *bzMemCpy(void *dst, void *src, size_t numBytes) { void *bzMemCpy(void *dst, const void *src, size_t numBytes) {
return memcpy(dst, src, numBytes); return memcpy(dst, src, numBytes);
} }

View File

@@ -9,8 +9,8 @@ void *bzCalloc(size_t numBytes, size_t count);
void *bzResize(void *ptr, size_t newSize); void *bzResize(void *ptr, size_t newSize);
void *bzMemSet(void *ptr, int value, size_t numBytes); void *bzMemSet(void *ptr, int value, size_t numBytes);
void *bzMemMove(void *dst, void *src, size_t numBytes); void *bzMemMove(void *dst, const void *src, size_t numBytes);
void *bzMemCpy(void *dst, void *src, size_t numBytes); void *bzMemCpy(void *dst, const void *src, size_t numBytes);
#endif //BREEZE_MEMORY_H #endif //BREEZE_MEMORY_H

View File

@@ -385,7 +385,7 @@ BzUIKey bzUIGetUniqueKey(BzUI *ui) {
return ui->keyIdCount++; return ui->keyIdCount++;
} }
BzUINode *bzUINodeMake(BzUI *ui, BzUIKey key, BzUIFlags flags) { BzUINode *bzUINodeMake(BzUI *ui, BzUIKey key, const BzUINodeDesc *desc) {
BzUINode *node = NULL; BzUINode *node = NULL;
if (key != bzUIKeyNull()) if (key != bzUIKeyNull())
node = hmget(ui->nodeMap, key); node = hmget(ui->nodeMap, key);
@@ -412,7 +412,15 @@ BzUINode *bzUINodeMake(BzUI *ui, BzUIKey key, BzUIFlags flags) {
} }
node->parent = parent; node->parent = parent;
node->flags = flags;
node->layout = desc->layout;
node->style = desc->style;
node->flags = desc->flags;
node->string = desc->string;
bzMemCpy(node->semanticSize, desc->semanticSize, sizeof(node->semanticSize));
bzMemCpy(node->padding, desc->padding, sizeof(node->padding));
bzMemCpy(node->margin, desc->margin, sizeof(node->margin));
return node; return node;
} }
@@ -458,9 +466,11 @@ bool bzUIButton(BzUI *ui, const char *string, BzUIStyle *style) {
s = *style; s = *style;
} }
BzUINode *node = bzUINodeMake(ui, bzUIKeyFromString(string), BzUINode *node = bzUINodeMake(ui, bzUIKeyFromString(string),
BZ_UI_CLICKABLE | BZ_UI_DRAW_TEXT | &(BzUINodeDesc) {
BZ_UI_DRAW_BACKGROUND | .flags = BZ_UI_CLICKABLE | BZ_UI_DRAW_TEXT |
BZ_UI_DRAW_BORDER | BZ_UI_ALIGN_CENTER); BZ_UI_DRAW_BACKGROUND |
BZ_UI_DRAW_BORDER | BZ_UI_ALIGN_CENTER
});
node->string = string; node->string = string;
node->semanticSize[BZ_UI_AXIS_X] = (BzUISize) { node->semanticSize[BZ_UI_AXIS_X] = (BzUISize) {
.kind = BZ_UI_SIZE_FIT, .kind = BZ_UI_SIZE_FIT,

View File

@@ -96,9 +96,19 @@ enum {
BZ_UI_ALIGN_CENTER = BZ_UI_ALIGN_HORIZ_CENTER | BZ_UI_ALIGN_VERT_CENTER, BZ_UI_ALIGN_CENTER = BZ_UI_ALIGN_HORIZ_CENTER | BZ_UI_ALIGN_VERT_CENTER,
}; };
typedef struct BzUINode BzUINode; typedef struct BzUINode BzUINode;
typedef struct BzUINodeDesc {
BzUILayout layout;
BzUIStyle style;
BzUIFlags flags;
const char *string;
BzUISize semanticSize[BZ_UI_AXIS_COUNT];
f32 padding[BZ_UI_AXIS_COUNT * 2];
f32 margin[BZ_UI_AXIS_COUNT * 2];
} BzUINodeDesc;
typedef struct BzUIInteraction { typedef struct BzUIInteraction {
bool pressed : 1; bool pressed : 1;
bool down : 1; bool down : 1;
@@ -121,7 +131,7 @@ void bzUIEnd(BzUI *ui);
BzUIKey bzUIGetUniqueKey(BzUI *ui); BzUIKey bzUIGetUniqueKey(BzUI *ui);
BzUINode *bzUINodeMake(BzUI *ui, BzUIKey key, BzUIFlags flags); BzUINode *bzUINodeMake(BzUI *ui, BzUIKey key, const BzUINodeDesc *desc);
BzUINode *bzUIPushParent(BzUI *ui, BzUINode *node); BzUINode *bzUIPushParent(BzUI *ui, BzUINode *node);
BzUINode *bzUIPopParent(BzUI *ui); BzUINode *bzUIPopParent(BzUI *ui);