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() {
|
for !rl.WindowShouldClose() {
|
||||||
|
|
||||||
ui.start(&ctx, origin = {0, 0}, size = {WINDOW_WIDTH, WINDOW_HEIGHT})
|
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)
|
ui.container_begin(dimensions = {ui.Size_Percentage(1.0), ui.Size_Percentage(0.1)}, config = inner_container_config)
|
||||||
for j in 0..<10 {
|
for j in 0..<10 {
|
||||||
config := button_config
|
config := button_config
|
||||||
|
|
@ -38,6 +38,14 @@ main :: proc() {
|
||||||
}
|
}
|
||||||
ui.container_end()
|
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()
|
elements := ui.end()
|
||||||
|
|
||||||
rl.BeginDrawing()
|
rl.BeginDrawing()
|
||||||
|
|
|
||||||
23
ui.odin
23
ui.odin
|
|
@ -55,11 +55,13 @@ ElementType :: enum {
|
||||||
|
|
||||||
Size_Pixels :: distinct f32
|
Size_Pixels :: distinct f32
|
||||||
Size_Percentage :: distinct f32
|
Size_Percentage :: distinct f32
|
||||||
|
Size_PercentageRemainder :: distinct f32
|
||||||
Size_Flex :: distinct bool
|
Size_Flex :: distinct bool
|
||||||
|
|
||||||
Size :: union {
|
Size :: union {
|
||||||
Size_Pixels,
|
Size_Pixels,
|
||||||
Size_Percentage,
|
Size_Percentage,
|
||||||
|
Size_PercentageRemainder,
|
||||||
Size_Flex,
|
Size_Flex,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -174,12 +176,23 @@ _resolve_elemment_outer_size_axis :: proc(size: Size, axis: Axis) -> f32 {
|
||||||
case Size_Pixels:
|
case Size_Pixels:
|
||||||
return cast(f32)value
|
return cast(f32)value
|
||||||
case Size_Percentage:
|
case Size_Percentage:
|
||||||
if container := _container_current(); container != nil {
|
inner := get_element_inner_area(_container_current()^)
|
||||||
inner := get_element_inner_area(container^)
|
container_size := inner.width if axis == .X else inner.height
|
||||||
container_size := inner.width if axis == .X else inner.height
|
return container_size * f32(value)
|
||||||
return container_size * cast(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 {
|
} 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:
|
case Size_Flex:
|
||||||
return 0.0
|
return 0.0
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue