Compare commits
4 Commits
Author | SHA1 | Date | |
---|---|---|---|
e8109737af | |||
e553da2c61 | |||
3e2be025b3 | |||
157e4f302d |
15
buffer.go
15
buffer.go
@ -42,7 +42,9 @@ func (b *Buffer[T]) y(y int) int {
|
|||||||
|
|
||||||
// Set sets the value at position (x,y) to c
|
// Set sets the value at position (x,y) to c
|
||||||
func (b *Buffer[T]) Set(x, y int, v T) {
|
func (b *Buffer[T]) Set(x, y int, v T) {
|
||||||
b.data[b.y(y)][b.x(x)] = v
|
if b.width > 0 && b.height > 0 {
|
||||||
|
b.data[b.y(y)][b.x(x)] = v
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Get returns the value at position (x,y)
|
// Get returns the value at position (x,y)
|
||||||
@ -65,6 +67,13 @@ func (b *Buffer[T]) Height() int {
|
|||||||
return b.height
|
return b.height
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// ForEach calls f for every value in this buffer
|
||||||
|
func (b *Buffer[T]) ForEachLine(f func(line int, content []T)) {
|
||||||
|
for line, content := range b.data {
|
||||||
|
f(line, content)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// ForEach calls f for every value in this buffer
|
// ForEach calls f for every value in this buffer
|
||||||
func (b *Buffer[T]) ForEach(f func(x, y int, v T)) {
|
func (b *Buffer[T]) ForEach(f func(x, y int, v T)) {
|
||||||
for y, col := range b.data {
|
for y, col := range b.data {
|
||||||
@ -95,8 +104,8 @@ func (b *Buffer[T]) Sub(x, y, w, h int) *Buffer[T] {
|
|||||||
// sanitize inputs
|
// sanitize inputs
|
||||||
x = limit(x, 0, b.width-1)
|
x = limit(x, 0, b.width-1)
|
||||||
y = limit(y, 0, b.height-1)
|
y = limit(y, 0, b.height-1)
|
||||||
w = limit(w, 1, b.width-x)
|
w = limit(w, 0, b.width-x)
|
||||||
h = limit(h, 1, b.height-y)
|
h = limit(h, 0, b.height-y)
|
||||||
|
|
||||||
// make slice references
|
// make slice references
|
||||||
data := make([][]T, h)
|
data := make([][]T, h)
|
||||||
|
@ -17,3 +17,8 @@ func TestSub(t *testing.T) {
|
|||||||
fmt.Println(strings.Repeat("-", 10))
|
fmt.Println(strings.Repeat("-", 10))
|
||||||
fmt.Println(s)
|
fmt.Println(s)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestSet(t *testing.T) {
|
||||||
|
b := NewBuffer(0, 0, ' ')
|
||||||
|
b.Set(0, 0, 'a')
|
||||||
|
}
|
||||||
|
Reference in New Issue
Block a user