ADD: Align Items
This commit is contained in:
parent
ced743e915
commit
beca6e4d3b
@ -50,6 +50,7 @@ struct LayoutStyle {
|
|||||||
|
|
||||||
FlexDirection flexDirection = FlexDirection::Column;
|
FlexDirection flexDirection = FlexDirection::Column;
|
||||||
JustifyContent justifyContent = JustifyContent::Start;
|
JustifyContent justifyContent = JustifyContent::Start;
|
||||||
|
AlignItems alignItems = AlignItems::Start;
|
||||||
|
|
||||||
float flexGrow = 0.0f;
|
float flexGrow = 0.0f;
|
||||||
};
|
};
|
||||||
|
|||||||
@ -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() {
|
LayoutStyle & UiPositioner::getLayout() {
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user