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に記載されている内容を参考にしています。