diff --git a/terminal/termbox/cell_options.go b/terminal/termbox/cell_options.go index 3c12fc8..9f2a638 100644 --- a/terminal/termbox/cell_options.go +++ b/terminal/termbox/cell_options.go @@ -17,6 +17,8 @@ package termbox // cell_options.go converts termdash cell options to the termbox format. import ( + "errors" + "github.com/mum4k/termdash/cell" tbx "github.com/nsf/termbox-go" ) @@ -27,17 +29,24 @@ func cellColor(c cell.Color) tbx.Attribute { } // cellOptsToFg converts the cell options to the termbox foreground attribute. -func cellOptsToFg(opts *cell.Options) tbx.Attribute { +func cellOptsToFg(opts *cell.Options) (tbx.Attribute, error) { a := cellColor(opts.FgColor) + var err error if opts.Bold { a |= tbx.AttrBold } // FIXME: Termbox doesn't have an italics attribute + if opts.Italic { + err = errors.New("Termbox: Unsupported attribute: Italic") + } if opts.Underline { a |= tbx.AttrUnderline } // FIXME: Termbox doesn't have a strikethrough attribute - return a + if opts.Strikethrough { + err = errors.New("Termbox: Unsupported attribute: Strikethrough") + } + return a, err } // cellOptsToBg converts the cell options to the termbox background attribute. diff --git a/terminal/termbox/termbox.go b/terminal/termbox/termbox.go index 4329e46..2d88c87 100644 --- a/terminal/termbox/termbox.go +++ b/terminal/termbox/termbox.go @@ -105,7 +105,11 @@ func (t *Terminal) Size() image.Point { // Clear implements terminalapi.Terminal.Clear. func (t *Terminal) Clear(opts ...cell.Option) error { o := cell.NewOptions(opts...) - return tbx.Clear(cellOptsToFg(o), cellOptsToBg(o)) + fg, err := cellOptsToFg(o) + if err != nil { + return err + } + return tbx.Clear(fg, cellOptsToBg(o)) } // Flush implements terminalapi.Terminal.Flush. @@ -126,7 +130,11 @@ func (t *Terminal) HideCursor() { // SetCell implements terminalapi.Terminal.SetCell. func (t *Terminal) SetCell(p image.Point, r rune, opts ...cell.Option) error { o := cell.NewOptions(opts...) - tbx.SetCell(p.X, p.Y, r, cellOptsToFg(o), cellOptsToBg(o)) + fg, err := cellOptsToFg(o) + if err != nil { + return err + } + tbx.SetCell(p.X, p.Y, r, fg, cellOptsToBg(o)) return nil }