From be60c1d053e550af970df1ce8b26981577e921dc Mon Sep 17 00:00:00 2001 From: Liam Galvin Date: Sat, 1 Sep 2018 21:19:13 +0100 Subject: [PATCH] fix background renderinf --- buffer/buffer.go | 15 ++++++++------- buffer/buffer_test.go | 12 +++++------- buffer/cell.go | 4 ---- buffer/line.go | 6 +++++- gui/gui.go | 8 ++++---- gui/renderer.go | 1 - 6 files changed, 22 insertions(+), 24 deletions(-) diff --git a/buffer/buffer.go b/buffer/buffer.go index 447942a..cd0da94 100644 --- a/buffer/buffer.go +++ b/buffer/buffer.go @@ -227,7 +227,7 @@ func (buffer *Buffer) Write(runes ...rune) { } else { for int(buffer.CursorColumn()) >= len(line.cells) { - line.cells = append(line.cells, newCell()) + line.cells = append(line.cells, NewBackgroundCell(buffer.cursorAttr.BgColour)) } cell := &line.cells[buffer.CursorColumn()] @@ -383,14 +383,15 @@ func (buffer *Buffer) EraseLineFromCursor() { defer buffer.emitDisplayChange() line := buffer.getCurrentLine() - max := int(buffer.cursorX) - if max > len(line.cells) { - max = len(line.cells) - } + line.cells = line.cells[:buffer.cursorX] - for c := int(buffer.cursorX); c < len(line.cells); c++ { - line.cells[c].erase() + max := int(buffer.ViewWidth()) - len(line.cells) + + buffer.SaveCursor() + for i := 0; i < max; i++ { + buffer.Write(0) } + buffer.RestoreCursor() } func (buffer *Buffer) EraseDisplay() { diff --git a/buffer/buffer_test.go b/buffer/buffer_test.go index 8fb97e5..9b864e5 100644 --- a/buffer/buffer_test.go +++ b/buffer/buffer_test.go @@ -255,7 +255,7 @@ func TestCarriageReturnOnOverWrappedLine(t *testing.T) { b.Write([]rune("hello there!\rsecret sauce")...) lines := b.GetVisibleLines() require.Equal(t, 3, len(lines)) - assert.Equal(t, "hello ", lines[0].String()) + assert.Equal(t, "hello", lines[0].String()) assert.Equal(t, "secret", lines[1].String()) assert.True(t, b.lines[1].wrapped) assert.Equal(t, " sauce", lines[2].String()) @@ -289,8 +289,6 @@ func TestGetCellWithBadCursor(t *testing.T) { b := NewBuffer(80, 2, CellAttributes{}) b.Write([]rune("Hello\r\nthere\r\nsomething...")...) require.Nil(t, b.GetCell(8, 3)) - require.Nil(t, b.GetCell(8, -1)) - require.Nil(t, b.GetCell(-8, 1)) require.Nil(t, b.GetCell(90, 0)) } @@ -365,7 +363,7 @@ func TestEraseLineAfterCursor(t *testing.T) { b.MovePosition(-3, 0) b.EraseLineFromCursor() assert.Equal(t, "hello, this is a test", b.lines[0].String()) - assert.Equal(t, "dele\x00\x00\x00", b.lines[1].String()) + assert.Equal(t, "dele", b.lines[1].String()) } func TestEraseDisplay(t *testing.T) { b := NewBuffer(80, 5, CellAttributes{}) @@ -404,9 +402,9 @@ func TestBackspace(t *testing.T) { b.Write([]rune("hello")...) b.Backspace() b.Backspace() - b.Write([]rune("l")...) + b.Write([]rune("p")...) lines := b.GetVisibleLines() - assert.Equal(t, "hell\x00", lines[0].String()) + assert.Equal(t, "helpo", lines[0].String()) } func TestBackspaceWithWrap(t *testing.T) { @@ -424,7 +422,7 @@ func TestBackspaceWithWrap(t *testing.T) { b.Backspace() b.EraseLineFromCursor() lines := b.GetVisibleLines() - assert.Equal(t, "hello\x00\x00\x00\x00\x00", lines[0].String()) + assert.Equal(t, "hello", lines[0].String()) } func TestHorizontalResizeView(t *testing.T) { diff --git a/buffer/cell.go b/buffer/cell.go index b3a0867..b07cbea 100644 --- a/buffer/cell.go +++ b/buffer/cell.go @@ -16,10 +16,6 @@ type CellAttributes struct { Hidden bool } -func newCell() Cell { - return Cell{} -} - func (cell *Cell) Attr() CellAttributes { return cell.attr } diff --git a/buffer/line.go b/buffer/line.go index 763b1ad..e86e059 100644 --- a/buffer/line.go +++ b/buffer/line.go @@ -1,5 +1,9 @@ package buffer +import ( + "strings" +) + type Line struct { wrapped bool // whether line was wrapped onto from the previous one cells []Cell @@ -40,7 +44,7 @@ func (line *Line) String() string { for _, cell := range line.cells { runes = append(runes, cell.r) } - return string(runes) + return strings.TrimRight(string(runes), "\x00 ") } // @todo test these (ported from legacy) ------------------ diff --git a/gui/gui.go b/gui/gui.go index 408963c..06d0950 100644 --- a/gui/gui.go +++ b/gui/gui.go @@ -219,9 +219,9 @@ func (gui *GUI) Render() error { cells := lines[y].Cells() if x < len(cells) { cell = cells[x] - if cell.Rune() == 0 { - cell = defaultCell - } + //if cell.Rune() == 0 { + // cell = defaultCell + //} } } @@ -240,7 +240,7 @@ func (gui *GUI) Render() error { if x < len(cells) { cell = cells[x] if cell.Rune() == 0 { - cell = defaultCell + continue } } } diff --git a/gui/renderer.go b/gui/renderer.go index 26a2844..9f7c3b1 100644 --- a/gui/renderer.go +++ b/gui/renderer.go @@ -215,7 +215,6 @@ func (r *OpenGLRenderer) DrawCellBg(cell buffer.Cell, col uint, row uint) { rect.setColour(bg) rect.Draw() } - } func (r *OpenGLRenderer) DrawCellText(cell buffer.Cell, col uint, row uint) {