From 88a6a466bfa71e7d86144d08a1a15fdbe5e833b3 Mon Sep 17 00:00:00 2001 From: Timon Ringwald Date: Thu, 1 Oct 2020 15:08:17 +0200 Subject: [PATCH] WriteMultiLineString added --- write_string.go | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/write_string.go b/write_string.go index dd7412e..dbacf9e 100644 --- a/write_string.go +++ b/write_string.go @@ -1,5 +1,7 @@ package buf2d +import "strings" + // WriteString writes a whole string to the buffer at position (x,y) // no word wrap is applied at all. If the string does not fit, it will be truncated func (b *Buffer) WriteString(str string, x, y int) { @@ -13,6 +15,20 @@ func (b *Buffer) WriteString(str string, x, y int) { } } +// WriteMultiLineString writes a multi-line string to the buffer at position (x,y) +// no word wrap is applied at all. If a line does not fit horizontally, it will be truncated +// All lines which do not fit vertically will be truncated as well +func (b *Buffer) WriteMultiLineString(str string, x, y int) { + lines := strings.Split(str, "\n") + for dy, line := range lines { + if dy >= b.height { + return + } + + b.WriteString(line, x, y+dy) + } +} + // Fill fills the whole buffer with c func (b *Buffer) Fill(c rune) { for _, col := range b.data {