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