1
Fork 0
mirror of https://github.com/RGBCube/color.v synced 2025-08-01 10:27:45 +00:00

Merge color files

This commit is contained in:
RGBCube 2022-11-20 20:24:00 +03:00
parent 4d734f91c0
commit 96f77d055c
4 changed files with 129 additions and 123 deletions

View file

@ -1,76 +0,0 @@
module color
import term
enum BasicColor {
black
red
green
yellow
blue
magenta
cyan
white
bright_black
bright_red
bright_green
bright_yellow
bright_blue
bright_magenta
bright_cyan
bright_white
}
fn (c BasicColor) render(msg string) string {
return if no_color {
msg
} else {
func := match c {
.black { term.black }
.red { term.red }
.green { term.green }
.yellow { term.yellow }
.blue { term.blue }
.magenta { term.magenta }
.cyan { term.cyan }
.white { term.white }
.bright_black { term.bright_black }
.bright_red { term.bright_red }
.bright_green { term.bright_green }
.bright_yellow { term.bright_yellow }
.bright_blue { term.bright_blue }
.bright_magenta { term.bright_magenta }
.bright_cyan { term.bright_cyan }
.bright_white { term.bright_white }
}
func(msg)
}
}
fn (c BasicColor) render_bg(msg string) string {
return if no_color {
msg
} else {
func := match c {
.black { term.bg_black }
.red { term.bg_red }
.green { term.bg_green }
.yellow { term.bg_yellow }
.blue { term.bg_blue }
.magenta { term.bg_magenta }
.cyan { term.bg_cyan }
.white { term.bg_white }
.bright_black { term.bright_bg_black }
.bright_red { term.bright_bg_red }
.bright_green { term.bright_bg_green }
.bright_yellow { term.bright_bg_yellow }
.bright_blue { term.bright_bg_blue }
.bright_magenta { term.bright_bg_magenta }
.bright_cyan { term.bright_bg_cyan }
.bright_white { term.bright_bg_white }
}
func(msg)
}
}

View file

@ -1,16 +1,8 @@
module color module color
pub interface Style { import term
render(string) string
}
pub fn (s Style) cprint(msg string) { // Interface
print(s.render(msg))
}
pub fn (s Style) cprintln(msg string) {
println(s.render(msg))
}
pub interface Color { pub interface Color {
Style Style
@ -24,3 +16,114 @@ pub fn (c Color) cprint_bg(msg string) {
pub fn (c Color) cprintln_bg(msg string) { pub fn (c Color) cprintln_bg(msg string) {
println(c.render_bg(msg)) println(c.render_bg(msg))
} }
// TrueColor Initialization
pub fn rgb(r u8, g u8, b u8) Color {
return TrueColor{
r: r
g: g
b: b
}
}
pub fn hex(hex int) Color {
return rgb(u8(hex >> 16), u8(hex >> 8 & 0xFF), u8(hex & 0xFF))
}
// Implementations
struct TrueColor {
r u8
g u8
b u8
}
fn (c TrueColor) render(msg string) string {
return if no_color {
msg
} else {
term.rgb(c.r, c.g, c.b, msg)
}
}
fn (c TrueColor) render_bg(msg string) string {
return if no_color {
msg
} else {
term.bg_rgb(c.r, c.g, c.b, msg)
}
}
enum BasicColor {
black
red
green
yellow
blue
magenta
cyan
white
bright_black
bright_red
bright_green
bright_yellow
bright_blue
bright_magenta
bright_cyan
bright_white
}
fn (c BasicColor) render(msg string) string {
return if no_color {
msg
} else {
func := match c {
.black { term.black }
.red { term.red }
.green { term.green }
.yellow { term.yellow }
.blue { term.blue }
.magenta { term.magenta }
.cyan { term.cyan }
.white { term.white }
.bright_black { term.bright_black }
.bright_red { term.bright_red }
.bright_green { term.bright_green }
.bright_yellow { term.bright_yellow }
.bright_blue { term.bright_blue }
.bright_magenta { term.bright_magenta }
.bright_cyan { term.bright_cyan }
.bright_white { term.bright_white }
}
func(msg)
}
}
fn (c BasicColor) render_bg(msg string) string {
return if no_color {
msg
} else {
func := match c {
.black { term.bg_black }
.red { term.bg_red }
.green { term.bg_green }
.yellow { term.bg_yellow }
.blue { term.bg_blue }
.magenta { term.bg_magenta }
.cyan { term.bg_cyan }
.white { term.bg_white }
.bright_black { term.bright_bg_black }
.bright_red { term.bright_bg_red }
.bright_green { term.bright_bg_green }
.bright_yellow { term.bright_bg_yellow }
.bright_blue { term.bright_bg_blue }
.bright_magenta { term.bright_bg_magenta }
.bright_cyan { term.bright_bg_cyan }
.bright_white { term.bright_bg_white }
}
func(msg)
}
}

View file

@ -2,6 +2,22 @@ module color
import term import term
// Interface
pub interface Style {
render(string) string
}
pub fn (s Style) cprint(msg string) {
print(s.render(msg))
}
pub fn (s Style) cprintln(msg string) {
println(s.render(msg))
}
// Implementation
enum BasicStyle { enum BasicStyle {
reset reset
bold bold

View file

@ -1,37 +0,0 @@
module color
import term
pub fn rgb(r u8, g u8, b u8) Color {
return TrueColor{
r: r
g: g
b: b
}
}
pub fn hex(hex int) Color {
return rgb(u8(hex >> 16), u8(hex >> 8 & 0xFF), u8(hex & 0xFF))
}
struct TrueColor {
r u8
g u8
b u8
}
fn (c TrueColor) render(msg string) string {
return if no_color {
msg
} else {
term.rgb(c.r, c.g, c.b, msg)
}
}
fn (c TrueColor) render_bg(msg string) string {
return if no_color {
msg
} else {
term.bg_rgb(c.r, c.g, c.b, msg)
}
}