Linted termbox_util.go

This commit is contained in:
Brian Buller 2015-10-21 11:41:42 -05:00
parent 2dd65ed8b8
commit 3b810d6387
1 changed files with 26 additions and 18 deletions

View File

@ -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))
}
}