mirror of
https://github.com/mrusme/superhighway84.git
synced 2024-11-05 06:01:04 +00:00
64 lines
1.5 KiB
Go
64 lines
1.5 KiB
Go
package tui
|
|
|
|
import (
|
|
"bytes"
|
|
"fmt"
|
|
"image/color"
|
|
|
|
"github.com/eliukblau/pixterm/pkg/ansimage"
|
|
"github.com/gdamore/tcell/v2"
|
|
"github.com/rivo/tview"
|
|
)
|
|
|
|
|
|
type Splashscreen struct {
|
|
T *TUI
|
|
Canvas *tview.TextView
|
|
ImageBytes []byte
|
|
}
|
|
|
|
func(t *TUI) NewSplashscreen(logo *[]byte) (*Splashscreen) {
|
|
splashscreen := new(Splashscreen)
|
|
splashscreen.T = t
|
|
|
|
canvas := tview.NewTextView().
|
|
SetDynamicColors(true).
|
|
SetRegions(true).
|
|
SetWrap(true)
|
|
canvas.SetBorder(false)
|
|
canvas.Clear()
|
|
|
|
splashscreen.ImageBytes = *logo
|
|
|
|
splashscreen.Canvas = canvas
|
|
return splashscreen
|
|
}
|
|
|
|
func (splashscreen *Splashscreen) GetCanvas() (tview.Primitive) {
|
|
return splashscreen.Canvas
|
|
}
|
|
|
|
func (splashscreen *Splashscreen) GetDefaultFocus() (tview.Primitive) {
|
|
return splashscreen.Canvas
|
|
}
|
|
|
|
func(splashscreen *Splashscreen) Refresh() {
|
|
_, _, w, h := splashscreen.Canvas.Box.GetRect()
|
|
|
|
// TODO:
|
|
// (h * 2) is a workaround for what looks like a bug in
|
|
// https://github.com/eliukblau/pixterm/blob/master/pkg/ansimage/ansimage.go
|
|
// Depending on the dithering setting the h/w changes significantly.
|
|
logoImage, err := ansimage.NewScaledFromReader(bytes.NewReader(splashscreen.ImageBytes), (h * 2), w, color.Black, ansimage.ScaleModeFill, ansimage.NoDithering)
|
|
if err != nil {
|
|
return
|
|
}
|
|
// splashscreen.Canvas.Clear()
|
|
fmt.Fprint(splashscreen.Canvas, tview.TranslateANSI(logoImage.RenderExt(false, false)))
|
|
}
|
|
|
|
func (splashscreen *Splashscreen) HandleInput(event *tcell.EventKey) (*tcell.EventKey) {
|
|
return nil
|
|
}
|
|
|