diff --git a/termbox_util.go b/termbox_util.go index 8536ab0..fd69c31 100755 --- a/termbox_util.go +++ b/termbox_util.go @@ -1,4 +1,4 @@ -package termbox_util +package termboxUtil import ( "fmt" @@ -7,24 +7,31 @@ import ( "github.com/nsf/termbox-go" ) +// TextAlignment is an int value for how we're aligning text type TextAlignment int const ( - ALIGN_LEFT = iota - ALIGN_CENTER - ALIGN_RIGHT + // AlignLeft Aligns text to the left + AlignLeft = iota + // AlignCenter Aligns text to the center + AlignCenter + // AlignRight Aligns text to the right + AlignRight ) /* Basic Output Helpers */ + +// DrawStringAtPoint Draw a string of text at x, y with foreground color fg, background color bg func DrawStringAtPoint(str string, x int, y int, fg termbox.Attribute, bg termbox.Attribute) (int, int) { - x_pos := x + xPos := x for _, runeValue := range str { - termbox.SetCell(x_pos, y, runeValue, fg, bg) - x_pos++ + termbox.SetCell(xPos, y, runeValue, fg, bg) + xPos++ } - return x_pos, y + return xPos, y } +// FillWithChar Fills from x1,y1 through x2,y2 with the rune r, foreground color fg, background bg func FillWithChar(r rune, x1, y1, x2, y2 int, fg termbox.Attribute, bg termbox.Attribute) { for xx := x1; xx <= x2; xx++ { for yx := y1; yx <= y2; yx++ { @@ -33,6 +40,7 @@ func FillWithChar(r rune, x1, y1, x2, y2 int, fg termbox.Attribute, bg termbox.A } } +// DrawBorder Draw a border around the area inside x1,y1 -> x2, y2 func DrawBorder(x1, y1, x2, y2 int, fg termbox.Attribute, bg termbox.Attribute) { termbox.SetCell(x1, y1, '┌', fg, bg) FillWithChar('─', x1+1, y1, x2-1, y1, fg, bg) @@ -46,22 +54,22 @@ func DrawBorder(x1, y1, x2, y2 int, fg termbox.Attribute, bg termbox.Attribute) termbox.SetCell(x2, y2, '┘', fg, bg) } +// AlignText Aligns the text txt within width characters using the specified alignment func AlignText(txt string, width int, align TextAlignment) string { - num_spaces := width - len(txt) + numSpaces := width - len(txt) switch align { - case ALIGN_CENTER: - if num_spaces/2 > 0 { + case AlignCenter: + if numSpaces/2 > 0 { return fmt.Sprintf("%s%s%s", - strings.Repeat(" ", num_spaces/2), - txt, strings.Repeat(" ", num_spaces/2), + strings.Repeat(" ", numSpaces/2), + txt, strings.Repeat(" ", numSpaces/2), ) - } else { - return txt } - case ALIGN_RIGHT: - return fmt.Sprintf("%s%s", strings.Repeat(" ", num_spaces), txt) + return txt + case AlignRight: + return fmt.Sprintf("%s%s", strings.Repeat(" ", numSpaces), txt) default: - return fmt.Sprintf("%s%s", txt, strings.Repeat(" ", num_spaces)) + return fmt.Sprintf("%s%s", txt, strings.Repeat(" ", numSpaces)) } }