Compare commits

..

No commits in common. "da346f2f1269ae607de83321cf3bc3288f21050c" and "9ce7f8b8f3eda59800ab6624e49e0788db468428" have entirely different histories.

View File

@ -41,12 +41,12 @@ func (row Row) MinimumSize (hints tomo.LayoutHints, boxes []tomo.Box) image.Poin
func (column Column) Arrange (hints tomo.LayoutHints, boxes []tomo.Box) { func (column Column) Arrange (hints tomo.LayoutHints, boxes []tomo.Box) {
expands := func (index int) bool { expands := func (index int) bool {
if index >= len(column) { return false } if index < len(boxes) { return false }
return column[index] return column[index]
} }
// determine expanding box size // determine expanding box size
expandingSize := 0.0 expandingSize := 0
if !hints.OverflowY { if !hints.OverflowY {
gaps := len(boxes) - 1 gaps := len(boxes) - 1
freeSpace := float64(hints.Bounds.Dy() - hints.Gap.Y * gaps) freeSpace := float64(hints.Bounds.Dy() - hints.Gap.Y * gaps)
@ -83,7 +83,7 @@ func (column Column) Arrange (hints tomo.LayoutHints, boxes []tomo.Box) {
} }
} else { } else {
if expands(index) { if expands(index) {
height = int(expandingSize) height = expandingSize
} }
} }
@ -111,12 +111,12 @@ func (column Column) Arrange (hints tomo.LayoutHints, boxes []tomo.Box) {
func (row Row) Arrange (hints tomo.LayoutHints, boxes []tomo.Box) { func (row Row) Arrange (hints tomo.LayoutHints, boxes []tomo.Box) {
expands := func (index int) bool { expands := func (index int) bool {
if index >= len(row) { return false } if index < len(boxes) { return false }
return row[index] return row[index]
} }
// determine expanding box size // determine expanding box size
expandingSize := 0.0 expandingSize := 0
if !hints.OverflowY { if !hints.OverflowY {
gaps := len(boxes) - 1 gaps := len(boxes) - 1
freeSpace := float64(hints.Bounds.Dx() - hints.Gap.X * gaps) freeSpace := float64(hints.Bounds.Dx() - hints.Gap.X * gaps)
@ -127,7 +127,6 @@ func (row Row) Arrange (hints tomo.LayoutHints, boxes []tomo.Box) {
freeSpace -= float64(box.MinimumSize().Y) freeSpace -= float64(box.MinimumSize().Y)
} }
} }
expandingSize = freeSpace / float64(nExpanding)
} }
// determine height // determine height
@ -154,7 +153,7 @@ func (row Row) Arrange (hints tomo.LayoutHints, boxes []tomo.Box) {
} }
} else { } else {
if expands(index) { if expands(index) {
width = int(expandingSize) width = expandingSize
} }
} }
@ -181,57 +180,21 @@ func (row Row) Arrange (hints tomo.LayoutHints, boxes []tomo.Box) {
} }
func (column Column) RecommendedHeight (hints tomo.LayoutHints, boxes []tomo.Box, width int) int { func (column Column) RecommendedHeight (hints tomo.LayoutHints, boxes []tomo.Box, width int) int {
height := 0 // TODO
for _, box := range boxes { return 0
if box, ok := box.(tomo.ContentBox); ok {
height += box.RecommendedHeight(width)
} else {
height += box.MinimumSize().Y
}
}
height += hints.Gap.Y * (len(boxes) - 1)
return height
} }
func (row Row) RecommendedHeight (hints tomo.LayoutHints, boxes []tomo.Box, width int) int { func (row Row) RecommendedHeight (hints tomo.LayoutHints, boxes []tomo.Box, width int) int {
height := 0 // TODO
for _, box := range boxes { return 0
minimum := box.MinimumSize()
boxHeight := 0
if box, ok := box.(tomo.ContentBox); ok {
boxHeight = box.RecommendedHeight(minimum.X)
} else {
boxHeight = minimum.Y
}
if boxHeight > height { height = boxHeight }
}
return height
} }
func (column Column) RecommendedWidth (hints tomo.LayoutHints, boxes []tomo.Box, height int) int { func (column Column) RecommendedWidth (hints tomo.LayoutHints, boxes []tomo.Box, height int) int {
width := 0 // TODO
for _, box := range boxes { return 0
minimum := box.MinimumSize()
boxWidth := 0
if box, ok := box.(tomo.ContentBox); ok {
boxWidth = box.RecommendedHeight(minimum.Y)
} else {
boxWidth = minimum.X
}
if boxWidth > width { width = boxWidth }
}
return width
} }
func (row Row) RecommendedWidth (hints tomo.LayoutHints, boxes []tomo.Box, height int) int { func (row Row) RecommendedWidth (hints tomo.LayoutHints, boxes []tomo.Box, height int) int {
width := 0 // TODO
for _, box := range boxes { return 0
if box, ok := box.(tomo.ContentBox); ok {
width += box.RecommendedWidth(height)
} else {
width += box.MinimumSize().X
}
}
width += hints.Gap.X * (len(boxes) - 1)
return width
} }