gitee.com/sy_183/go-common@v1.0.5-0.20231205030221-958cfe129b47/sgr/options.go (about) 1 package sgr 2 3 type Option interface { 4 apply(sgr *SGR) 5 } 6 7 type optionFunc func(sgr *SGR) 8 9 func (f optionFunc) apply(sgr *SGR) { 10 f(sgr) 11 } 12 13 func FgColor256Option(color256 Color256) Option { 14 return optionFunc(func(sgr *SGR) { 15 sgr.Flag = sgr.Flag.Add(FgColor256) 16 sgr.FgColor256 = color256 17 }) 18 } 19 20 func FgColorRGBOption(rgb ColorRGB) Option { 21 return optionFunc(func(sgr *SGR) { 22 sgr.Flag = sgr.Flag.Add(FgColorRGB) 23 sgr.FgColorRGB = rgb 24 }) 25 } 26 27 func FgRGBOption(r, g, b uint8) Option { 28 return FgColorRGBOption(RGB(r, g, b)) 29 } 30 31 func FgRGB24Option(rgb uint32) Option { 32 return FgColorRGBOption(RGB24(rgb)) 33 } 34 35 func BgColor256Option(color256 Color256) Option { 36 return optionFunc(func(sgr *SGR) { 37 sgr.Flag = sgr.Flag.Add(BgColor256) 38 sgr.BgColor256 = color256 39 }) 40 } 41 42 func BgColorRGBOption(rgb ColorRGB) Option { 43 return optionFunc(func(sgr *SGR) { 44 sgr.Flag = sgr.Flag.Add(BgColorRGB) 45 sgr.BgColorRGB = rgb 46 }) 47 } 48 49 func BgRGBOption(r, g, b uint8) Option { 50 return BgColorRGBOption(RGB(r, g, b)) 51 } 52 53 func BgRGB24Option(rgb uint32) Option { 54 return BgColorRGBOption(RGB24(rgb)) 55 } 56 57 func UlColor256Option(color256 Color256) Option { 58 return optionFunc(func(sgr *SGR) { 59 sgr.Flag = sgr.Flag.Add(UnderlineColor256) 60 sgr.UlColor256 = color256 61 }) 62 } 63 64 func UlColorRGBOption(rgb ColorRGB) Option { 65 return optionFunc(func(sgr *SGR) { 66 sgr.Flag = sgr.Flag.Add(UnderlineColorRGB) 67 sgr.UlColorRGB = rgb 68 }) 69 } 70 71 func UlRGBOption(r, g, b uint8) Option { 72 return UlColorRGBOption(RGB(r, g, b)) 73 } 74 75 func UlRGB24Option(rgb uint32) Option { 76 return UlColorRGBOption(RGB24(rgb)) 77 }