Added support for animations.
This commit is contained in:
parent
552de0c748
commit
fa7796a4ae
@ -1,6 +1,7 @@
|
||||
package ui
|
||||
|
||||
type Context interface {
|
||||
Animate()
|
||||
HasQuit() bool
|
||||
Images() *Images
|
||||
Quit()
|
||||
@ -12,6 +13,7 @@ var _ Context = &context{}
|
||||
var _ EventTarget = &context{}
|
||||
|
||||
type context struct {
|
||||
animate bool
|
||||
quit bool
|
||||
r Renderer
|
||||
view Control
|
||||
@ -19,6 +21,8 @@ type context struct {
|
||||
style *Style
|
||||
}
|
||||
|
||||
func (c *context) Animate() { c.animate = true }
|
||||
|
||||
func (c *context) HasQuit() bool { return c.quit }
|
||||
|
||||
func (c *context) Images() *Images { return c.ims }
|
||||
|
13
ui/ui.go
13
ui/ui.go
@ -1,6 +1,8 @@
|
||||
package ui
|
||||
|
||||
import (
|
||||
"time"
|
||||
|
||||
"opslag.de/schobers/geom"
|
||||
)
|
||||
|
||||
@ -16,6 +18,16 @@ func RunWait(r Renderer, s *Style, view Control, wait bool) error {
|
||||
if ok {
|
||||
root.Init(ctx)
|
||||
}
|
||||
anim := time.NewTicker(30 * time.Millisecond)
|
||||
go func() {
|
||||
for range anim.C {
|
||||
if ctx.animate && !ctx.quit {
|
||||
r.Refresh()
|
||||
}
|
||||
ctx.animate = false
|
||||
}
|
||||
}()
|
||||
ctx.Renderer().Refresh()
|
||||
for !ctx.quit {
|
||||
var size = r.Size()
|
||||
var bounds = geom.RectF32(0, 0, size.X, size.Y)
|
||||
@ -26,5 +38,6 @@ func RunWait(r Renderer, s *Style, view Control, wait bool) error {
|
||||
}
|
||||
r.PushEvents(ctx, wait)
|
||||
}
|
||||
anim.Stop()
|
||||
return nil
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user