package ui import ( "opslag.de/schobers/geom" ) // Run runs the application loop. func Run(r Renderer, s *Style, view Control) error { return RunWait(r, s, view, false) } // RunWait runs the application loop and conditionally waits on events before rendering. func RunWait(r Renderer, s *Style, view Control, wait bool) error { ctx := &context{r: r, style: s, view: view, ims: NewImages()} root, ok := view.(RootControl) if ok { root.Init(ctx) } for !ctx.quit { var size = r.Size() var bounds = geom.RectF32(0, 0, size.X, size.Y) view.Arrange(ctx, bounds, geom.ZeroPtF32) view.Render(ctx) if ctx.quit { return nil } r.PushEvents(ctx, wait) } return nil }