36 lines
754 B
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,
|
|
})
|
|
}
|