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