github.com/grahambrereton-form3/tilt@v0.10.18/internal/rty/components.go (about) 1 package rty 2 3 import ( 4 "math" 5 6 "github.com/gdamore/tcell" 7 ) 8 9 // Components are able to render themselves onto a screen 10 11 type RTY interface { 12 Render(c Component) error 13 14 // Register must be called before Render 15 RegisterElementScroll(name string, children []string) (l *ElementScrollLayout, selectedChild string) 16 17 // *Scroller must be called after Render (each call to Render invalidates previous Crollers) 18 ElementScroller(name string) ElementScroller 19 TextScroller(name string) TextScroller 20 } 21 22 type ElementScroller interface { 23 Up() 24 Down() 25 Top() 26 Bottom() 27 GetSelectedIndex() int 28 } 29 30 type TextScroller interface { 31 Up() 32 Down() 33 Top() 34 Bottom() 35 36 ToggleFollow() 37 SetFollow(following bool) 38 } 39 40 // Component renders onto a canvas 41 type Component interface { 42 Size(availWidth, availHeight int) (int, int, error) 43 Render(w Writer, width, height int) error 44 } 45 46 type Writer interface { 47 SetContent(x int, y int, mainc rune, combc []rune) 48 49 Divide(x, y, width, height int) (Writer, error) 50 Foreground(c tcell.Color) Writer 51 Background(c tcell.Color) Writer 52 Invert() Writer 53 Fill() (Writer, error) 54 55 RenderChild(c Component) int 56 57 RenderChildInTemp(c Component) Canvas 58 Embed(src Canvas, srcY, srcHeight int) error 59 60 RenderStateful(c StatefulComponent, name string) 61 } 62 63 const GROW = math.MaxInt32