Added NoopRenderer.

This commit is contained in:
Matteo Kloiber
2015-04-05 21:36:41 +02:00
parent c649a7675c
commit b22b4c8b71
2 changed files with 58 additions and 1 deletions

View File

@@ -7,7 +7,7 @@ import (
// TextRender adds common methods for rendering a text on screeen.
type TextRender interface {
NormalizedText(text string) string
NormalizedText() string
Render(lastColor, background Attribute) RenderedSequence
RenderSequence(start, end int, lastColor, background Attribute) RenderedSequence
}
@@ -192,3 +192,31 @@ func (s *RenderedSequence) PointAt(n, x, y int) (Point, int) {
char := []rune(s.NormalizedText)[n]
return Point{char, s.BackgroundColor, color, x, y}, charWidth(char)
}
// A NoopRenderer does not render the text at all.
type NoopRenderer struct {
Text string
}
// NormalizedText returns the text given in
func (r NoopRenderer) NormalizedText() string {
return r.Text
}
// RenderSequence returns a RenderedSequence that does not have any color
// sequences.
func (r NoopRenderer) RenderSequence(start, end int, lastColor, background Attribute) RenderedSequence {
runes := []rune(r.Text)
if end < 0 {
end = len(runes)
}
runes = runes[start:end]
var s []ColorSubsequence
return RenderedSequence{string(runes), lastColor, background, s, nil}
}
// Render just like RenderSequence
func (r NoopRenderer) Render(lastColor, background Attribute) RenderedSequence {
return r.RenderSequence(0, -1, lastColor, background)
}