| package aec |
| |
| import ( |
| "fmt" |
| ) |
| |
| // RGB3Bit is a 3bit RGB color. |
| type RGB3Bit uint8 |
| |
| // RGB8Bit is a 8bit RGB color. |
| type RGB8Bit uint8 |
| |
| func newSGR(n uint) ANSI { |
| return newAnsi(fmt.Sprintf(esc+"%dm", n)) |
| } |
| |
| // NewRGB3Bit create a RGB3Bit from given RGB. |
| func NewRGB3Bit(r, g, b uint8) RGB3Bit { |
| return RGB3Bit((r >> 7) | ((g >> 6) & 0x2) | ((b >> 5) & 0x4)) |
| } |
| |
| // NewRGB8Bit create a RGB8Bit from given RGB. |
| func NewRGB8Bit(r, g, b uint8) RGB8Bit { |
| return RGB8Bit(16 + 36*(r/43) + 6*(g/43) + b/43) |
| } |
| |
| // Color3BitF set the foreground color of text. |
| func Color3BitF(c RGB3Bit) ANSI { |
| return newAnsi(fmt.Sprintf(esc+"%dm", c+30)) |
| } |
| |
| // Color3BitB set the background color of text. |
| func Color3BitB(c RGB3Bit) ANSI { |
| return newAnsi(fmt.Sprintf(esc+"%dm", c+40)) |
| } |
| |
| // Color8BitF set the foreground color of text. |
| func Color8BitF(c RGB8Bit) ANSI { |
| return newAnsi(fmt.Sprintf(esc+"38;5;%dm", c)) |
| } |
| |
| // Color8BitB set the background color of text. |
| func Color8BitB(c RGB8Bit) ANSI { |
| return newAnsi(fmt.Sprintf(esc+"48;5;%dm", c)) |
| } |
| |
| // FullColorF set the foreground color of text. |
| func FullColorF(r, g, b uint8) ANSI { |
| return newAnsi(fmt.Sprintf(esc+"38;2;%d;%d;%dm", r, g, b)) |
| } |
| |
| // FullColorB set the foreground color of text. |
| func FullColorB(r, g, b uint8) ANSI { |
| return newAnsi(fmt.Sprintf(esc+"48;2;%d;%d;%dm", r, g, b)) |
| } |
| |
| // Style |
| var ( |
| // Bold set the text style to bold or increased intensity. |
| Bold ANSI |
| |
| // Faint set the text style to faint. |
| Faint ANSI |
| |
| // Italic set the text style to italic. |
| Italic ANSI |
| |
| // Underline set the text style to underline. |
| Underline ANSI |
| |
| // BlinkSlow set the text style to slow blink. |
| BlinkSlow ANSI |
| |
| // BlinkRapid set the text style to rapid blink. |
| BlinkRapid ANSI |
| |
| // Inverse swap the foreground color and background color. |
| Inverse ANSI |
| |
| // Conceal set the text style to conceal. |
| Conceal ANSI |
| |
| // CrossOut set the text style to crossed out. |
| CrossOut ANSI |
| |
| // Frame set the text style to framed. |
| Frame ANSI |
| |
| // Encircle set the text style to encircled. |
| Encircle ANSI |
| |
| // Overline set the text style to overlined. |
| Overline ANSI |
| ) |
| |
| // Foreground color of text. |
| var ( |
| // DefaultF is the default color of foreground. |
| DefaultF ANSI |
| |
| // Normal color |
| BlackF ANSI |
| RedF ANSI |
| GreenF ANSI |
| YellowF ANSI |
| BlueF ANSI |
| MagentaF ANSI |
| CyanF ANSI |
| WhiteF ANSI |
| |
| // Light color |
| LightBlackF ANSI |
| LightRedF ANSI |
| LightGreenF ANSI |
| LightYellowF ANSI |
| LightBlueF ANSI |
| LightMagentaF ANSI |
| LightCyanF ANSI |
| LightWhiteF ANSI |
| ) |
| |
| // Background color of text. |
| var ( |
| // DefaultB is the default color of background. |
| DefaultB ANSI |
| |
| // Normal color |
| BlackB ANSI |
| RedB ANSI |
| GreenB ANSI |
| YellowB ANSI |
| BlueB ANSI |
| MagentaB ANSI |
| CyanB ANSI |
| WhiteB ANSI |
| |
| // Light color |
| LightBlackB ANSI |
| LightRedB ANSI |
| LightGreenB ANSI |
| LightYellowB ANSI |
| LightBlueB ANSI |
| LightMagentaB ANSI |
| LightCyanB ANSI |
| LightWhiteB ANSI |
| ) |
| |
| func init() { |
| Bold = newSGR(1) |
| Faint = newSGR(2) |
| Italic = newSGR(3) |
| Underline = newSGR(4) |
| BlinkSlow = newSGR(5) |
| BlinkRapid = newSGR(6) |
| Inverse = newSGR(7) |
| Conceal = newSGR(8) |
| CrossOut = newSGR(9) |
| |
| BlackF = newSGR(30) |
| RedF = newSGR(31) |
| GreenF = newSGR(32) |
| YellowF = newSGR(33) |
| BlueF = newSGR(34) |
| MagentaF = newSGR(35) |
| CyanF = newSGR(36) |
| WhiteF = newSGR(37) |
| |
| DefaultF = newSGR(39) |
| |
| BlackB = newSGR(40) |
| RedB = newSGR(41) |
| GreenB = newSGR(42) |
| YellowB = newSGR(43) |
| BlueB = newSGR(44) |
| MagentaB = newSGR(45) |
| CyanB = newSGR(46) |
| WhiteB = newSGR(47) |
| |
| DefaultB = newSGR(49) |
| |
| Frame = newSGR(51) |
| Encircle = newSGR(52) |
| Overline = newSGR(53) |
| |
| LightBlackF = newSGR(90) |
| LightRedF = newSGR(91) |
| LightGreenF = newSGR(92) |
| LightYellowF = newSGR(93) |
| LightBlueF = newSGR(94) |
| LightMagentaF = newSGR(95) |
| LightCyanF = newSGR(96) |
| LightWhiteF = newSGR(97) |
| |
| LightBlackB = newSGR(100) |
| LightRedB = newSGR(101) |
| LightGreenB = newSGR(102) |
| LightYellowB = newSGR(103) |
| LightBlueB = newSGR(104) |
| LightMagentaB = newSGR(105) |
| LightCyanB = newSGR(106) |
| LightWhiteB = newSGR(107) |
| } |