piss/elements/terminal.go

36 lines
754 B
Go

package elements
import "image"
import "git.tebibyte.media/sashakoshka/tomo"
import "git.tebibyte.media/sashakoshka/piss/ansi"
type Terminal struct {
*Grid
decoder ansi.Decoder
}
func NewTerminal () (element *Terminal) {
element = &Terminal { Grid: NewGrid() }
element.Grid.OnResize(element.handleResize)
return
}
func (element *Terminal) Write (buffer []byte) (wrote int, err error) {
wrote, err = element.decoder.Write(buffer)
element.Push()
return
}
func (element *Terminal) handleResize () {
element.Set(image.Pt(0, 0), Cell {
Rune: 'X',
Background: tomo.ColorRed,
Foreground: tomo.ColorBrightWhite,
})
element.Set(image.Pt(15, 10), Cell {
Rune: 'Y',
Background: tomo.ColorBrightYellow,
Foreground: tomo.ColorBlack,
})
}