PercentageRemainder

This commit is contained in:
Synthasmagoria 2026-07-29 21:59:59 +02:00
commit aeb343973e
3 changed files with 30 additions and 6 deletions

23
ui.odin
View file

@ -55,11 +55,13 @@ ElementType :: enum {
Size_Pixels :: distinct f32
Size_Percentage :: distinct f32
Size_PercentageRemainder :: distinct f32
Size_Flex :: distinct bool
Size :: union {
Size_Pixels,
Size_Percentage,
Size_PercentageRemainder,
Size_Flex,
}
@ -174,12 +176,23 @@ _resolve_elemment_outer_size_axis :: proc(size: Size, axis: Axis) -> f32 {
case Size_Pixels:
return cast(f32)value
case Size_Percentage:
if container := _container_current(); container != nil {
inner := get_element_inner_area(container^)
container_size := inner.width if axis == .X else inner.height
return container_size * cast(f32)value
inner := get_element_inner_area(_container_current()^)
container_size := inner.width if axis == .X else inner.height
return container_size * f32(value)
case Size_PercentageRemainder:
if element := _element_container_previous(); element != nil {
container_inner := get_element_inner_area(_container_current()^)
last_element_outer := get_element_outer_area(element^)
remaining_container_size: f32
switch axis {
case .X: remaining_container_size = container_inner.width - rect_get_tr(last_element_outer).x
case .Y: remaining_container_size = container_inner.height - rect_get_bl(last_element_outer).y
}
return remaining_container_size * f32(value)
} else {
panic("Cannot use dimension Size_Percentage without an outer container")
inner := get_element_inner_area(_container_current()^)
container_size := inner.width if axis == .X else inner.height
return container_size * f32(value)
}
case Size_Flex:
return 0.0