PercentageRemainder
This commit is contained in:
parent
6c8479f922
commit
aeb343973e
3 changed files with 30 additions and 6 deletions
23
ui.odin
23
ui.odin
|
|
@ -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
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue