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