package ui type Context interface { Animate() HasQuit() bool Quit() Renderer() Renderer Style() *Style Textures() *Textures } var _ Context = &context{} var _ EventTarget = &context{} type context struct { animate bool quit chan struct{} r Renderer view Control textures *Textures style *Style } func (c *context) Animate() { c.animate = true } func (c *context) HasQuit() bool { select { case <-c.quit: return true default: return false } } func (c *context) Renderer() Renderer { return c.r } func (c *context) Style() *Style { return c.style } func (c *context) Quit() { if !c.HasQuit() { close(c.quit) } } func (c *context) Textures() *Textures { return c.textures } // Handle implement EventTarget func (c *context) Handle(e Event) { switch e.(type) { case *DisplayCloseEvent: c.Quit() return } c.view.Handle(c, e) }