64 lines
1.5 KiB
Go
64 lines
1.5 KiB
Go
|
package system
|
||
|
|
||
|
import "image"
|
||
|
|
||
|
type boxQuerier []anyBox
|
||
|
|
||
|
func (querier boxQuerier) Len () int {
|
||
|
return len(querier)
|
||
|
}
|
||
|
|
||
|
func (querier boxQuerier) MinimumSize (index int) image.Point {
|
||
|
if box, ok := querier.box(index); ok {
|
||
|
return box.minimumSize()
|
||
|
}
|
||
|
return image.Point { }
|
||
|
}
|
||
|
|
||
|
func (querier boxQuerier) RecommendedWidth (index int, height int) int {
|
||
|
if box, ok := querier.box(index); ok {
|
||
|
if box, ok := box.(anyContentBox); ok {
|
||
|
return box.recommendedWidth(height)
|
||
|
}
|
||
|
}
|
||
|
return 0
|
||
|
}
|
||
|
|
||
|
func (querier boxQuerier) RecommendedHeight (index int, width int) int {
|
||
|
if box, ok := querier.box(index); ok {
|
||
|
if box, ok := box.(anyContentBox); ok {
|
||
|
return box.recommendedHeight(width)
|
||
|
}
|
||
|
}
|
||
|
return 0
|
||
|
}
|
||
|
|
||
|
func (querier boxQuerier) box (index int) (anyBox, bool) {
|
||
|
if index < 0 || index >= len(querier) { return nil, false }
|
||
|
return querier[index], true
|
||
|
}
|
||
|
|
||
|
type boxArranger []anyBox
|
||
|
|
||
|
func (arranger boxArranger) Len () int {
|
||
|
return boxQuerier(arranger).Len()
|
||
|
}
|
||
|
|
||
|
func (arranger boxArranger) MinimumSize (index int) image.Point {
|
||
|
return boxQuerier(arranger).MinimumSize(index)
|
||
|
}
|
||
|
|
||
|
func (arranger boxArranger) RecommendedWidth (index int, height int) int {
|
||
|
return boxQuerier(arranger).RecommendedWidth(index, height)
|
||
|
}
|
||
|
|
||
|
func (arranger boxArranger) RecommendedHeight (index int, width int) int {
|
||
|
return boxQuerier(arranger).RecommendedHeight(index, width)
|
||
|
}
|
||
|
|
||
|
func (arranger boxArranger) SetBounds (index int, bounds image.Rectangle) {
|
||
|
if box, ok := boxQuerier(arranger).box(index); ok {
|
||
|
box.setBounds(bounds)
|
||
|
}
|
||
|
}
|