Add margin calculation in UI

This commit is contained in:
2023-12-21 16:11:47 +01:00
parent 886d6ba79b
commit 27257f55ca

View File

@@ -187,16 +187,20 @@ static void calculatePositionsFlexBox(BzUINode *node) {
BZ_ASSERT(node->layout.type == BZ_UI_LAYOUT_FLEX_BOX);
BzUIFlags flags = node->layout.flags;
f32 totalMainAxisSize = 0.0f;
f32 totalMainAxisSize = 0.0f;
f32 mainAxisSpacing = 0.0f;
const i32 MAIN_AXIS = (flags & BZ_UI_FLEX_DIR_COLUMN) ? BZ_UI_AXIS_Y : BZ_UI_AXIS_X;
const i32 CROSS_AXIS = (flags & BZ_UI_FLEX_DIR_COLUMN) ? BZ_UI_AXIS_X : BZ_UI_AXIS_Y;
for (BzUINode *child = node->first; child; child = child->next) {
totalMainAxisSize += child->computedSize[MAIN_AXIS];
totalMainAxisSize += child->computedSize[MAIN_AXIS];
mainAxisSpacing += child->margin[MAIN_AXIS] +
child->margin[MAIN_AXIS + 2] +
child->style.borderThickness * 2;
}
f32 mainAxisTotalSpacing = node->computedSize[MAIN_AXIS] - totalMainAxisSize;
f32 mainAxisTotalSpacing = node->computedSize[MAIN_AXIS] - totalMainAxisSize - mainAxisSpacing;
mainAxisTotalSpacing = BZ_MAX(0, mainAxisTotalSpacing);
// Default: JUSTIFY_START
@@ -219,7 +223,9 @@ static void calculatePositionsFlexBox(BzUINode *node) {
axisOffset[CROSS_AXIS] += node->computedSize[CROSS_AXIS] - child->computedSize[CROSS_AXIS];
}
axisOffset[MAIN_AXIS] += child->margin[MAIN_AXIS];
calculatePositions(child, axisOffset[BZ_UI_AXIS_X], axisOffset[BZ_UI_AXIS_Y]);
axisOffset[MAIN_AXIS] += child->margin[MAIN_AXIS + 2];
axisOffset[MAIN_AXIS] += child->computedSize[MAIN_AXIS];
}