ADD: Align Items

This commit is contained in:
sebastian 2026-02-12 13:18:52 +01:00
parent ced743e915
commit beca6e4d3b
2 changed files with 47 additions and 0 deletions

View File

@ -50,6 +50,7 @@ struct LayoutStyle {
FlexDirection flexDirection = FlexDirection::Column;
JustifyContent justifyContent = JustifyContent::Start;
AlignItems alignItems = AlignItems::Start;
float flexGrow = 0.0f;
};

View File

@ -61,6 +61,52 @@ void UiPositioner::compute(const Dimensions &parent) {
}
}
// AlignItems
for (auto& child : uiComponent.children) {
if (style.flexDirection == FlexDirection::Column) {
float marginLeft = child->uiPositioner.resolve(child->uiPositioner.style.margin.left,screenSpace.width,screenWidth);
float remainingCrossSpace = screenSpace.width - child->uiPositioner.screenSpace.width ;
switch (style.alignItems) {
case AlignItems::Start:
child->uiPositioner.screenSpace.x = screenSpace.x + marginLeft;
break;
case AlignItems::Center:
child->uiPositioner.screenSpace.x =
screenSpace.x + remainingCrossSpace / 2.0f + marginLeft;
break;
case AlignItems::End:
child->uiPositioner.screenSpace.x = screenSpace.x + remainingCrossSpace + marginLeft;
break;
default:
break;
}
} else {
float remainingCrossSpace = screenSpace.height - child->uiPositioner.screenSpace.height;
float marginTop = child->uiPositioner.resolve(child->uiPositioner.style.margin.top,screenSpace.height,screenHeight);
switch (style.alignItems) {
case AlignItems::Start:
child->uiPositioner.screenSpace.y = screenSpace.y + marginTop;
break;
case AlignItems::Center:
child->uiPositioner.screenSpace.y =
screenSpace.y + remainingCrossSpace / 2.0f + marginTop;
break;
case AlignItems::End:
child->uiPositioner.screenSpace.y =
screenSpace.y + remainingCrossSpace + marginTop;
break;
default:
break;
}
}
}
}
LayoutStyle & UiPositioner::getLayout() {