1package termbox
2
3// private API, common OS agnostic part
4
5type cellbuf struct {
6 width int
7 height int
8 cells []Cell
9}
10
11func (this *cellbuf) init(width, height int) {
12 this.width = width
13 this.height = height
14 this.cells = make([]Cell, width*height)
15}
16
17func (this *cellbuf) resize(width, height int) {
18 if this.width == width && this.height == height {
19 return
20 }
21
22 oldw := this.width
23 oldh := this.height
24 oldcells := this.cells
25
26 this.init(width, height)
27 this.clear()
28
29 minw, minh := oldw, oldh
30
31 if width < minw {
32 minw = width
33 }
34 if height < minh {
35 minh = height
36 }
37
38 for i := 0; i < minh; i++ {
39 srco, dsto := i*oldw, i*width
40 src := oldcells[srco : srco+minw]
41 dst := this.cells[dsto : dsto+minw]
42 copy(dst, src)
43 }
44}
45
46func (this *cellbuf) clear() {
47 for i := range this.cells {
48 c := &this.cells[i]
49 c.Ch = ' '
50 c.Fg = foreground
51 c.Bg = background
52 }
53}
54
55const cursor_hidden = -1
56
57func is_cursor_hidden(x, y int) bool {
58 return x == cursor_hidden || y == cursor_hidden
59}