diff options
author | Jeffrey Wilcke <jeffrey@ethereum.org> | 2015-06-25 23:18:42 +0800 |
---|---|---|
committer | Jeffrey Wilcke <jeffrey@ethereum.org> | 2015-06-25 23:18:42 +0800 |
commit | b0a5be4495962c291a25cbea793e43bad0781510 (patch) | |
tree | e058201e7b29c3cb8efd710e20ec1e1f97f64368 /Godeps/_workspace/src/github.com/gizak/termui/p.go | |
parent | e64625aa8215985c85f97f914a98db081e07714f (diff) | |
parent | e9c0b5431cbd7430ddec9fd17983241018fd8a55 (diff) | |
download | dexon-b0a5be4495962c291a25cbea793e43bad0781510.tar dexon-b0a5be4495962c291a25cbea793e43bad0781510.tar.gz dexon-b0a5be4495962c291a25cbea793e43bad0781510.tar.bz2 dexon-b0a5be4495962c291a25cbea793e43bad0781510.tar.lz dexon-b0a5be4495962c291a25cbea793e43bad0781510.tar.xz dexon-b0a5be4495962c291a25cbea793e43bad0781510.tar.zst dexon-b0a5be4495962c291a25cbea793e43bad0781510.zip |
Merge pull request #1321 from karalabe/cut-it-open-3000
Metrics collecting and reporting support
Diffstat (limited to 'Godeps/_workspace/src/github.com/gizak/termui/p.go')
-rw-r--r-- | Godeps/_workspace/src/github.com/gizak/termui/p.go | 71 |
1 files changed, 71 insertions, 0 deletions
diff --git a/Godeps/_workspace/src/github.com/gizak/termui/p.go b/Godeps/_workspace/src/github.com/gizak/termui/p.go new file mode 100644 index 000000000..e327d7489 --- /dev/null +++ b/Godeps/_workspace/src/github.com/gizak/termui/p.go @@ -0,0 +1,71 @@ +// Copyright 2015 Zack Guo <gizak@icloud.com>. All rights reserved. +// Use of this source code is governed by a MIT license that can +// be found in the LICENSE file. + +package termui + +// Par displays a paragraph. +/* + par := termui.NewPar("Simple Text") + par.Height = 3 + par.Width = 17 + par.Border.Label = "Label" +*/ +type Par struct { + Block + Text string + TextFgColor Attribute + TextBgColor Attribute +} + +// NewPar returns a new *Par with given text as its content. +func NewPar(s string) *Par { + return &Par{ + Block: *NewBlock(), + Text: s, + TextFgColor: theme.ParTextFg, + TextBgColor: theme.ParTextBg} +} + +// Buffer implements Bufferer interface. +func (p *Par) Buffer() []Point { + ps := p.Block.Buffer() + + rs := str2runes(p.Text) + i, j, k := 0, 0, 0 + for i < p.innerHeight && k < len(rs) { + // the width of char is about to print + w := charWidth(rs[k]) + + if rs[k] == '\n' || j+w > p.innerWidth { + i++ + j = 0 // set x = 0 + if rs[k] == '\n' { + k++ + } + + if i >= p.innerHeight { + ps = append(ps, newPointWithAttrs('…', + p.innerX+p.innerWidth-1, + p.innerY+p.innerHeight-1, + p.TextFgColor, p.TextBgColor)) + break + } + + continue + } + pi := Point{} + pi.X = p.innerX + j + pi.Y = p.innerY + i + + pi.Ch = rs[k] + pi.Bg = p.TextBgColor + pi.Fg = p.TextFgColor + + ps = append(ps, pi) + + k++ + j += w + } + return p.Block.chopOverflow(ps) +} |