tui/draw_buffer.go

37 lines
708 B
Go
Raw Permalink Normal View History

2021-01-10 21:52:29 +01:00
package tui
import (
"github.com/gdamore/tcell"
)
2022-04-01 20:10:51 +02:00
func drawBuffer(scr tcell.Screen, buf *ViewBuffer) {
2022-04-02 13:01:41 +02:00
// buf.ForEach(func(x, y int, rn Rune) {
// scr.SetContent(x, y, rn.Rn, nil, rn.Style)
// })
// TODO use runewidth.RuneWidth(rn)?
2022-04-02 13:01:41 +02:00
buf.ForEachLine(func(y int, content []Rune) {
for x := 0; x < buf.Width(); x++ {
rn := content[x]
if rn.Rn >= '─' && rn.Rn <= '╿' {
scr.SetContent(x, y, rn.Rn, []rune{content[x+1].Rn}, rn.Style)
x++
} else {
scr.SetContent(x, y, rn.Rn, nil, rn.Style)
}
}
2021-01-10 21:52:29 +01:00
})
2022-04-02 13:01:41 +02:00
2021-01-10 21:52:29 +01:00
scr.Show()
}
2022-04-02 13:01:41 +02:00
func truncateBuffer(buf *ViewBuffer, w, h int) *ViewBuffer {
if w < 0 {
w = buf.Width()
}
if h < 0 {
h = buf.Height()
}
return buf.Sub(0, 0, w, h)
}