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
 | 
						|
}
 |