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 (overlay_controls : List<Control>) = 25 canvas.draw_paint paint 26 27 for control in controls do 28 draw canvas control 29 30 for control in overlay_controls do 31 draw canvas control 32 33 skia.flush 34 Glfw.swap_buffers window.window 35 36 fun destruct = 37 sizes_token.discard 38 39 type Dependencies = 40 val get_font : GetFont 41 42 type Drawer 43 val dependencies = Dependencies 44 get_font = { family size -> font_manager.get_font size } 45