]> git.0d.be Git - barnard.git/blob - uiterm/label.go
648d07e6a8ce00a033417bad9aea90b9f234ec9d
[barnard.git] / uiterm / label.go
1 package uiterm
2
3 import (
4         "strings"
5
6         "github.com/nsf/termbox-go"
7 )
8
9 type Label struct {
10         Text string
11         Fg   Attribute
12         Bg   Attribute
13
14         ui             *Ui
15         x0, y0, x1, y1 int
16 }
17
18 func (l *Label) uiInitialize(ui *Ui) {
19         l.ui = ui
20 }
21
22 func (l *Label) uiSetActive(active bool) {
23 }
24
25 func (l *Label) uiSetBounds(x0, y0, x1, y1 int) {
26         l.x0 = x0
27         l.y0 = y0
28         l.x1 = x1
29         l.y1 = y1
30         l.uiDraw()
31 }
32
33 func (l *Label) uiDraw() {
34         l.ui.beginDraw()
35         defer l.ui.endDraw()
36
37         reader := strings.NewReader(l.Text)
38         for y := l.y0; y < l.y1; y++ {
39                 for x := l.x0; x < l.x1; x++ {
40                         var chr rune
41                         if ch, _, err := reader.ReadRune(); err != nil {
42                                 chr = ' '
43                         } else {
44                                 chr = ch
45                         }
46                         termbox.SetCell(x, y, chr, termbox.Attribute(l.Fg), termbox.Attribute(l.Bg))
47                 }
48         }
49 }
50
51 func (l *Label) uiKeyEvent(mod Modifier, key Key) {
52 }
53
54 func (l *Label) uiCharacterEvent(chr rune) {
55 }