1    type TextDisplay @mut =
2        inherit Control
3    
4        var text = Slice<TextLine>.empty
5        var visible_up : u32 = 0
6        var visible_down : u32 = 0
7        var selection : Option<(TextPos, TextPos)> = None
8        var font : Option<Font> = None
9        val update = Stream<()>.new
10   
11       var margin = font/Margin.new
12       var line_height = 0
13       var obs advance = 0
14       var has_text = false
15   
16       def bounds (pos : TextPos) = Bounds
17           left = margin.left + pos.char * advance
18           right = margin.left + (pos.char + 1) * advance
19           up = margin.up + pos.line * line_height
20           down = margin.up + (pos.line + 1) * line_height
21   
22       def Control.measure w h =
23           measure_width = 0
24           measure_height = 0
25   
26       def Control.arrange = ()
27