diff options
author | Sergey Grebenshchikov <sgreben@gmail.com> | 2018-03-28 17:27:59 +0200 |
---|---|---|
committer | Sergey Grebenshchikov <sgreben@gmail.com> | 2018-03-28 17:46:08 +0200 |
commit | c76ad10b1dc63beeee3cf4fa8f4f4f4b02222289 (patch) | |
tree | e5735d201e3ab6267a75dec79ed5d53b0bcdf635 /pkg/draw/quarter.go | |
parent | 7e3d9839123783e5c367522953e494789ce3618d (diff) |
Add braille & quarter-block canvas. Add scatter plot type. Re-write linechart + barchart.
Diffstat (limited to 'pkg/draw/quarter.go')
-rw-r--r-- | pkg/draw/quarter.go | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/pkg/draw/quarter.go b/pkg/draw/quarter.go new file mode 100644 index 0000000..b7748f4 --- /dev/null +++ b/pkg/draw/quarter.go @@ -0,0 +1,37 @@ +package draw + +var _ Pixels = &Quarter{} + +const ( + quarterScaleX = 2 + quarterScaleY = 2 +) + +type Quarter struct{ *Buffer } + +func (b *Quarter) Size() Box { + return Box{ + Width: b.Width * quarterScaleX, + Height: b.Height * quarterScaleY, + } +} + +func (b *Quarter) Set(y, x int) { + ry, cy := y/2, 1-y%2 + rx, cx := x/2, x%2 + i := index(b.Get(ry, rx)) + b.Buffer.Set(ry, rx, runes[i|(1<<uint(cx+2*cy))]) +} + +func (b *Quarter) Clear() { b.Fill(runes[0]) } + +var runes = []rune(" ▘▝▀▖▌▞▛▗▚▐▜▄▙▟█") + +func index(r rune) int { + for i := range runes { + if runes[i] == r { + return i + } + } + return 0 +} |