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  }