1    def init_glfw =
2        Glfw.init |> ignore
3        Glfw.window_hint Glfw.context_version_major 3
4             window_hint Glfw.context_version_minor 2
5             window_hint Glfw.opengl_forward_compat Glfw.true
6             window_hint Glfw.opengl_profile Glfw.opengl_core_profile
7             window_hint Glfw.stencil_bits 0
8             window_hint Glfw.depth_bits 0
9             swap_interval 1
10   
11   type Drawer =
12       let window : OsWindow
13       let skia = skia/Skia window.width window.height
14       let mut canvas = skia.get_canvas
15       let font_manager = FontManager.new
16       let paint = Paint.new
17       paint.set_color skia/white
18   
19       let sizes_token = window.sizes.subscribe { w, h ->
20           skia.resize w h
21           canvas = skia.get_canvas }
22   
23       def update (dt : f32) (controls : List<Control>) =
24           canvas.draw_paint paint
25   
26           for control in controls do
27               draw canvas control
28   
29           skia.flush
30           Glfw.swap_buffers window.window
31   
32       fun destruct =
33           sizes_token.discard
34   
35   type Dependencies =
36       val get_font : GetFont
37   
38   type Drawer
39       val dependencies = Dependencies
40           get_font = { family size -> font_manager.get_font size }
41