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
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 }

View File

@ -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
}