// Copyright 2017 Zack Guo . All rights reserved. // Use of this source code is governed by a MIT license that can // be found in the LICENSE file. package widgets import ( "image" . "github.com/gizak/termui" ) type Paragraph struct { Block Text string TextStyle Style WrapText bool } func NewParagraph() *Paragraph { return &Paragraph{ Block: *NewBlock(), TextStyle: Theme.Paragraph.Text, WrapText: true, } } func (self *Paragraph) Draw(buf *Buffer) { self.Block.Draw(buf) cells := ParseStyles(self.Text, self.TextStyle) if self.WrapText { cells = WrapCells(cells, uint(self.Inner.Dx())) } rows := SplitCells(cells, '\n') for y, row := range rows { if y+self.Inner.Min.Y >= self.Inner.Max.Y { break } row = TrimCells(row, self.Inner.Dx()) for _, cx := range BuildCellWithXArray(row) { x, cell := cx.X, cx.Cell buf.SetCell(cell, image.Pt(x, y).Add(self.Inner.Min)) } } }