// Write wraps each byte with an RGB color. Weeee! func (r *Rainbow) Write(p []byte) (int, error) { buf := bytes.NewBuffer(nil) for i := range p { r.h += (0.5 / 360) if r.h > 1.0 { r.h = 0 } r, g, b := rgbterm.HSLtoRGB(r.h, r.s, r.l) _, _ = buf.Write(rgbterm.Byte(p[i], r, g, b)) } _, err := buf.WriteTo(r.wrap) return len(p), err }
func ExampleBytes() { data := []byte("â–ˆ") h, s, l := rgbterm.RGBtoHSL(252, 255, 43) for i := 0; i < 80; i++ { h += (5.0 / 360.0) if h > 1.0 { h = 0.0 } r, g, b := rgbterm.HSLtoRGB(h, s, l) fmt.Printf("%s", rgbterm.Bytes(data, r, g, b)) } fmt.Println() // Output: // [38;5;190mâ–ˆ[0;00m[38;5;190mâ–ˆ[0;00m[38;5;154mâ–ˆ[0;00m[38;5;154mâ–ˆ[0;00m[38;5;154mâ–ˆ[0;00m[38;5;118mâ–ˆ[0;00m[38;5;118mâ–ˆ[0;00m[38;5;118mâ–ˆ[0;00m[38;5;82mâ–ˆ[0;00m[38;5;82mâ–ˆ[0;00m[38;5;82mâ–ˆ[0;00m[38;5;46mâ–ˆ[0;00m[38;5;47mâ–ˆ[0;00m[38;5;47mâ–ˆ[0;00m[38;5;47mâ–ˆ[0;00m[38;5;48mâ–ˆ[0;00m[38;5;48mâ–ˆ[0;00m[38;5;48mâ–ˆ[0;00m[38;5;49mâ–ˆ[0;00m[38;5;49mâ–ˆ[0;00m[38;5;50mâ–ˆ[0;00m[38;5;50mâ–ˆ[0;00m[38;5;50mâ–ˆ[0;00m[38;5;45mâ–ˆ[0;00m[38;5;45mâ–ˆ[0;00m[38;5;45mâ–ˆ[0;00m[38;5;39mâ–ˆ[0;00m[38;5;39mâ–ˆ[0;00m[38;5;39mâ–ˆ[0;00m[38;5;33mâ–ˆ[0;00m[38;5;33mâ–ˆ[0;00m[38;5;33mâ–ˆ[0;00m[38;5;27mâ–ˆ[0;00m[38;5;27mâ–ˆ[0;00m[38;5;27mâ–ˆ[0;00m[38;5;21mâ–ˆ[0;00m[38;5;57mâ–ˆ[0;00m[38;5;57mâ–ˆ[0;00m[38;5;57mâ–ˆ[0;00m[38;5;93mâ–ˆ[0;00m[38;5;93mâ–ˆ[0;00m[38;5;93mâ–ˆ[0;00m[38;5;129mâ–ˆ[0;00m[38;5;129mâ–ˆ[0;00m[38;5;165mâ–ˆ[0;00m[38;5;165mâ–ˆ[0;00m[38;5;165mâ–ˆ[0;00m[38;5;200mâ–ˆ[0;00m[38;5;200mâ–ˆ[0;00m[38;5;200mâ–ˆ[0;00m[38;5;199mâ–ˆ[0;00m[38;5;199mâ–ˆ[0;00m[38;5;199mâ–ˆ[0;00m[38;5;198mâ–ˆ[0;00m[38;5;198mâ–ˆ[0;00m[38;5;198mâ–ˆ[0;00m[38;5;197mâ–ˆ[0;00m[38;5;197mâ–ˆ[0;00m[38;5;197mâ–ˆ[0;00m[38;5;196mâ–ˆ[0;00m[38;5;202mâ–ˆ[0;00m[38;5;202mâ–ˆ[0;00m[38;5;202mâ–ˆ[0;00m[38;5;208mâ–ˆ[0;00m[38;5;208mâ–ˆ[0;00m[38;5;208mâ–ˆ[0;00m[38;5;214mâ–ˆ[0;00m[38;5;214mâ–ˆ[0;00m[38;5;214mâ–ˆ[0;00m[38;5;220mâ–ˆ[0;00m[38;5;220mâ–ˆ[0;00m[38;5;226mâ–ˆ[0;00m[38;5;190mâ–ˆ[0;00m[38;5;190mâ–ˆ[0;00m[38;5;154mâ–ˆ[0;00m[38;5;154mâ–ˆ[0;00m[38;5;154mâ–ˆ[0;00m[38;5;118mâ–ˆ[0;00m[38;5;118mâ–ˆ[0;00m[38;5;118mâ–ˆ[0;00m }
func ExampleBytes() { data := []byte("â–ˆ") h, s, l := rgbterm.RGBtoHSL(252, 255, 43) for i := 0; i < 80; i++ { h += (5.0 / 360.0) if h > 1.0 { h = 0.0 } r, g, b := rgbterm.HSLtoRGB(h, s, l) fmt.Printf("%s", rgbterm.Bytes(data, r, g, b, 0, 0, 0)) //b, g, r)) } fmt.Println() // Output: // [38;5;190;48;5;16mâ–ˆ[0;00m[38;5;190;48;5;16mâ–ˆ[0;00m[38;5;154;48;5;16mâ–ˆ[0;00m[38;5;154;48;5;16mâ–ˆ[0;00m[38;5;154;48;5;16mâ–ˆ[0;00m[38;5;118;48;5;16mâ–ˆ[0;00m[38;5;118;48;5;16mâ–ˆ[0;00m[38;5;118;48;5;16mâ–ˆ[0;00m[38;5;82;48;5;16mâ–ˆ[0;00m[38;5;82;48;5;16mâ–ˆ[0;00m[38;5;82;48;5;16mâ–ˆ[0;00m[38;5;46;48;5;16mâ–ˆ[0;00m[38;5;47;48;5;16mâ–ˆ[0;00m[38;5;47;48;5;16mâ–ˆ[0;00m[38;5;47;48;5;16mâ–ˆ[0;00m[38;5;48;48;5;16mâ–ˆ[0;00m[38;5;48;48;5;16mâ–ˆ[0;00m[38;5;48;48;5;16mâ–ˆ[0;00m[38;5;49;48;5;16mâ–ˆ[0;00m[38;5;49;48;5;16mâ–ˆ[0;00m[38;5;50;48;5;16mâ–ˆ[0;00m[38;5;50;48;5;16mâ–ˆ[0;00m[38;5;50;48;5;16mâ–ˆ[0;00m[38;5;45;48;5;16mâ–ˆ[0;00m[38;5;45;48;5;16mâ–ˆ[0;00m[38;5;45;48;5;16mâ–ˆ[0;00m[38;5;39;48;5;16mâ–ˆ[0;00m[38;5;39;48;5;16mâ–ˆ[0;00m[38;5;39;48;5;16mâ–ˆ[0;00m[38;5;33;48;5;16mâ–ˆ[0;00m[38;5;33;48;5;16mâ–ˆ[0;00m[38;5;33;48;5;16mâ–ˆ[0;00m[38;5;27;48;5;16mâ–ˆ[0;00m[38;5;27;48;5;16mâ–ˆ[0;00m[38;5;27;48;5;16mâ–ˆ[0;00m[38;5;21;48;5;16mâ–ˆ[0;00m[38;5;57;48;5;16mâ–ˆ[0;00m[38;5;57;48;5;16mâ–ˆ[0;00m[38;5;57;48;5;16mâ–ˆ[0;00m[38;5;93;48;5;16mâ–ˆ[0;00m[38;5;93;48;5;16mâ–ˆ[0;00m[38;5;93;48;5;16mâ–ˆ[0;00m[38;5;129;48;5;16mâ–ˆ[0;00m[38;5;129;48;5;16mâ–ˆ[0;00m[38;5;165;48;5;16mâ–ˆ[0;00m[38;5;165;48;5;16mâ–ˆ[0;00m[38;5;165;48;5;16mâ–ˆ[0;00m[38;5;200;48;5;16mâ–ˆ[0;00m[38;5;200;48;5;16mâ–ˆ[0;00m[38;5;200;48;5;16mâ–ˆ[0;00m[38;5;199;48;5;16mâ–ˆ[0;00m[38;5;199;48;5;16mâ–ˆ[0;00m[38;5;199;48;5;16mâ–ˆ[0;00m[38;5;198;48;5;16mâ–ˆ[0;00m[38;5;198;48;5;16mâ–ˆ[0;00m[38;5;198;48;5;16mâ–ˆ[0;00m[38;5;197;48;5;16mâ–ˆ[0;00m[38;5;197;48;5;16mâ–ˆ[0;00m[38;5;197;48;5;16mâ–ˆ[0;00m[38;5;196;48;5;16mâ–ˆ[0;00m[38;5;202;48;5;16mâ–ˆ[0;00m[38;5;202;48;5;16mâ–ˆ[0;00m[38;5;202;48;5;16mâ–ˆ[0;00m[38;5;208;48;5;16mâ–ˆ[0;00m[38;5;208;48;5;16mâ–ˆ[0;00m[38;5;208;48;5;16mâ–ˆ[0;00m[38;5;214;48;5;16mâ–ˆ[0;00m[38;5;214;48;5;16mâ–ˆ[0;00m[38;5;214;48;5;16mâ–ˆ[0;00m[38;5;220;48;5;16mâ–ˆ[0;00m[38;5;220;48;5;16mâ–ˆ[0;00m[38;5;226;48;5;16mâ–ˆ[0;00m[38;5;190;48;5;16mâ–ˆ[0;00m[38;5;190;48;5;16mâ–ˆ[0;00m[38;5;154;48;5;16mâ–ˆ[0;00m[38;5;154;48;5;16mâ–ˆ[0;00m[38;5;154;48;5;16mâ–ˆ[0;00m[38;5;118;48;5;16mâ–ˆ[0;00m[38;5;118;48;5;16mâ–ˆ[0;00m[38;5;118;48;5;16mâ–ˆ[0;00m }