mirror of
https://github.com/rclone/rclone.git
synced 2024-12-05 07:20:35 +08:00
60 lines
994 B
Go
60 lines
994 B
Go
package termbox
|
|
|
|
// private API, common OS agnostic part
|
|
|
|
type cellbuf struct {
|
|
width int
|
|
height int
|
|
cells []Cell
|
|
}
|
|
|
|
func (this *cellbuf) init(width, height int) {
|
|
this.width = width
|
|
this.height = height
|
|
this.cells = make([]Cell, width*height)
|
|
}
|
|
|
|
func (this *cellbuf) resize(width, height int) {
|
|
if this.width == width && this.height == height {
|
|
return
|
|
}
|
|
|
|
oldw := this.width
|
|
oldh := this.height
|
|
oldcells := this.cells
|
|
|
|
this.init(width, height)
|
|
this.clear()
|
|
|
|
minw, minh := oldw, oldh
|
|
|
|
if width < minw {
|
|
minw = width
|
|
}
|
|
if height < minh {
|
|
minh = height
|
|
}
|
|
|
|
for i := 0; i < minh; i++ {
|
|
srco, dsto := i*oldw, i*width
|
|
src := oldcells[srco : srco+minw]
|
|
dst := this.cells[dsto : dsto+minw]
|
|
copy(dst, src)
|
|
}
|
|
}
|
|
|
|
func (this *cellbuf) clear() {
|
|
for i := range this.cells {
|
|
c := &this.cells[i]
|
|
c.Ch = ' '
|
|
c.Fg = foreground
|
|
c.Bg = background
|
|
}
|
|
}
|
|
|
|
const cursor_hidden = -1
|
|
|
|
func is_cursor_hidden(x, y int) bool {
|
|
return x == cursor_hidden || y == cursor_hidden
|
|
}
|