PercentageRemainder
This commit is contained in:
parent
6c8479f922
commit
aeb343973e
3 changed files with 30 additions and 6 deletions
3
.gitmodules
vendored
Normal file
3
.gitmodules
vendored
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
[submodule "example/back"]
|
||||
path = example/back
|
||||
url = https://github.com/laytan/back.git
|
||||
|
|
@ -28,7 +28,7 @@ main :: proc() {
|
|||
for !rl.WindowShouldClose() {
|
||||
|
||||
ui.start(&ctx, origin = {0, 0}, size = {WINDOW_WIDTH, WINDOW_HEIGHT})
|
||||
for i in 0..<10 {
|
||||
for i in 0..<9 {
|
||||
ui.container_begin(dimensions = {ui.Size_Percentage(1.0), ui.Size_Percentage(0.1)}, config = inner_container_config)
|
||||
for j in 0..<10 {
|
||||
config := button_config
|
||||
|
|
@ -38,6 +38,14 @@ main :: proc() {
|
|||
}
|
||||
ui.container_end()
|
||||
}
|
||||
ui.container_begin(dimensions = {ui.Size_Percentage(1.0), ui.Size_PercentageRemainder(1.0)}, config = inner_container_config)
|
||||
for j in 0..<10 {
|
||||
config := button_config
|
||||
config.label = fmt.ctprintf("%d", 90 + j)
|
||||
ui.button(dimensions = {ui.Size_Percentage(0.1), ui.Size_Percentage(1.0)}, config = config)
|
||||
ui.same_line()
|
||||
}
|
||||
ui.container_end()
|
||||
elements := ui.end()
|
||||
|
||||
rl.BeginDrawing()
|
||||
|
|
|
|||
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