Added support for animations.

This commit is contained in:
Sander Schobers 2019-04-10 21:20:39 +02:00
parent 552de0c748
commit fa7796a4ae
2 changed files with 22 additions and 5 deletions

View File

@ -1,6 +1,7 @@
package ui package ui
type Context interface { type Context interface {
Animate()
HasQuit() bool HasQuit() bool
Images() *Images Images() *Images
Quit() Quit()
@ -12,13 +13,16 @@ var _ Context = &context{}
var _ EventTarget = &context{} var _ EventTarget = &context{}
type context struct { type context struct {
quit bool animate bool
r Renderer quit bool
view Control r Renderer
ims *Images view Control
style *Style ims *Images
style *Style
} }
func (c *context) Animate() { c.animate = true }
func (c *context) HasQuit() bool { return c.quit } func (c *context) HasQuit() bool { return c.quit }
func (c *context) Images() *Images { return c.ims } func (c *context) Images() *Images { return c.ims }

View File

@ -1,6 +1,8 @@
package ui package ui
import ( import (
"time"
"opslag.de/schobers/geom" "opslag.de/schobers/geom"
) )
@ -16,6 +18,16 @@ func RunWait(r Renderer, s *Style, view Control, wait bool) error {
if ok { if ok {
root.Init(ctx) 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 { for !ctx.quit {
var size = r.Size() var size = r.Size()
var bounds = geom.RectF32(0, 0, size.X, size.Y) 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) r.PushEvents(ctx, wait)
} }
anim.Stop()
return nil return nil
} }