

tcellで上のキャプチャにように四角を描写してみます。
先に上のキャプチャのように実行されるコードを見てみます。
package main
import (
"github.com/gdamore/tcell/v2"
)
func main() {
screen, err := tcell.NewScreen()
if err != nil {
panic(err)
}
if err := screen.Init(); err != nil {
panic(err)
}
defer screen.Fini()
// ┌
screen.SetContent(0, 0, tcell.RuneULCorner, nil, tcell.StyleDefault)
// └
screen.SetContent(0, 2, tcell.RuneLLCorner, nil, tcell.StyleDefault)
// ─
for col := 1; col < 6; col++ {
screen.SetContent(col, 0, tcell.RuneHLine, nil, tcell.StyleDefault)
}
// │
screen.SetContent(0, 1, tcell.RuneVLine, nil, tcell.StyleDefault)
screen.SetContent(6, 1, tcell.RuneVLine, nil, tcell.StyleDefault)
// ─
for col := 1; col < 6; col++ {
screen.SetContent(col, 2, tcell.RuneHLine, nil, tcell.StyleDefault)
}
// ┐
screen.SetContent(6, 0, tcell.RuneURCorner, nil, tcell.StyleDefault)
// ┘
screen.SetContent(6, 2, tcell.RuneLRCorner, nil, tcell.StyleDefault)
screen.Show()
// Escでプログラムを終了できるようにする
for {
ev := screen.PollEvent() // イベントを取得する
switch ev := ev.(type) {
case *tcell.EventKey:
switch ev.Key() { // 何のキーが押されたか?を調べる
case tcell.KeyEscape: // ESCキーが押されたら終了する
return
}
default:
//
}
}
}
上記コードで太字で書かれているところが四角の描写に関するコードになります。
tcellで四角を描写するのも、文字の出力と同様、文字(Rune)を指定します。
文字の出力はtcellでTUIアプリを作成するで触れた時と同様、
func (b *baseScreen) SetContent(x, y int, mainc rune, combc []rune, st Style)
https://github.com/gdamore/tcell/blob/main/screen.go#L404
のメソッドを用いますが、mainc に指定する値は定数を用いています。
今回使用している定数は、tcell/runes.go at main · gdamore/tcellに記載されている内容を参考にしています。