ui/layout: add List example

Signed-off-by: Elias Naur <mail@eliasnaur.com>
This commit is contained in:
Elias Naur
2019-08-10 18:54:18 +02:00
parent b3e8f5953e
commit e3ae277841
+34
View File
@@ -6,11 +6,15 @@ import (
"time"
"gioui.org/ui"
"gioui.org/ui/input"
"gioui.org/ui/layout"
)
type queue struct{}
type config struct{}
var q queue
var cfg = new(config)
func ExampleInset() {
@@ -110,6 +114,32 @@ func ExampleStack() {
// Expand: {{50 50} {50 50}}
}
func ExampleList() {
ops := new(ui.Ops)
cs := layout.RigidConstraints(image.Point{X: 100, Y: 100})
// The list is 1e6 elements, but only 5 fit the constraints.
const listLen = 1e6
var list layout.List
list.Init(cfg, q, ops, cs, listLen)
count := 0
for ; list.More(); list.Next() {
dims := layoutWidget(20, 20, list.Constraints())
list.End(dims)
count++
}
fmt.Println(count)
dims := list.Layout()
_ = dims
// Output:
// 5
}
func layoutWidget(width, height int, cs layout.Constraints) layout.Dimens {
return layout.Dimens{
Size: image.Point{
@@ -126,3 +156,7 @@ func (config) Now() time.Time {
func (config) Px(v ui.Value) int {
return int(v.V + .5)
}
func (queue) Next(k input.Key) (input.Event, bool) {
return nil, false
}