mirror of
https://github.com/NotAShelf/hexxy.git
synced 2024-11-22 05:10:49 +00:00
streamline ANSI color code generation for faster execution
This was significantly faster, wow
This commit is contained in:
parent
fea3864961
commit
6f68697db7
1 changed files with 11 additions and 11 deletions
22
color.go
22
color.go
|
@ -13,35 +13,35 @@ var CLRR = []byte("\x1b[0m")
|
||||||
|
|
||||||
type Color struct {
|
type Color struct {
|
||||||
disable bool
|
disable bool
|
||||||
values [256]string
|
values [256][]byte
|
||||||
cvalues [256][]byte
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *Color) Compute() {
|
func (c *Color) Compute() {
|
||||||
const WHITEB = "\x1b[1;37m"
|
const WHITEB = "\x1b[1;37m"
|
||||||
for i := 0; i < 256; i++ {
|
for i := 0; i < 256; i++ {
|
||||||
var fg, bg string
|
var fg, bg []byte
|
||||||
|
|
||||||
lowVis := i == 0 || (i >= 16 && i <= 20) || (i >= 232 && i <= 242)
|
lowVis := i == 0 || (i >= 16 && i <= 20) || (i >= 232 && i <= 242)
|
||||||
|
|
||||||
if lowVis {
|
if lowVis {
|
||||||
fg = WHITEB + "\x1b[38;5;" + "255" + "m"
|
fg = append([]byte(WHITEB), []byte("\x1b[38;5;255m")...)
|
||||||
bg = "\x1b[48;5;" + strconv.Itoa(int(i)) + "m"
|
bg = []byte("\x1b[48;5;" + strconv.Itoa(i) + "m")
|
||||||
} else {
|
} else {
|
||||||
fg = "\x1b[38;5;" + strconv.Itoa(int(i)) + "m"
|
fg = []byte("\x1b[38;5;" + strconv.Itoa(i) + "m")
|
||||||
bg = ""
|
bg = nil
|
||||||
}
|
}
|
||||||
c.values[i] = bg + fg
|
c.values[i] = append(bg, fg...)
|
||||||
c.cvalues[i] = []byte(bg + fg)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *Color) Colorize(s string, clr byte) string {
|
func (c *Color) Colorize(s string, clr byte) string {
|
||||||
const NOCOLOR = "\x1b[0m"
|
const NOCOLOR = "\x1b[0m"
|
||||||
return c.values[clr] + s + NOCOLOR
|
colorCode := c.values[clr]
|
||||||
|
return string(append(append(colorCode, s...), []byte(NOCOLOR)...))
|
||||||
}
|
}
|
||||||
|
|
||||||
// function to colorize bytes - avoiding string conversions
|
// function to colorize bytes - avoiding string conversions
|
||||||
func (c *Color) Colorize2(clr byte) ([]byte, []byte) {
|
func (c *Color) Colorize2(clr byte) ([]byte, []byte) {
|
||||||
return c.cvalues[clr], CLRR
|
colorCode := c.values[clr]
|
||||||
|
return colorCode, CLRR
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue