util.go 574 B

1234567891011121314151617181920212223242526272829
  1. package ansi
  2. import (
  3. "fmt"
  4. "image/color"
  5. )
  6. // colorToHexString returns a hex string representation of a color.
  7. func colorToHexString(c color.Color) string {
  8. if c == nil {
  9. return ""
  10. }
  11. shift := func(v uint32) uint32 {
  12. if v > 0xff {
  13. return v >> 8
  14. }
  15. return v
  16. }
  17. r, g, b, _ := c.RGBA()
  18. r, g, b = shift(r), shift(g), shift(b)
  19. return fmt.Sprintf("#%02x%02x%02x", r, g, b)
  20. }
  21. // rgbToHex converts red, green, and blue values to a hexadecimal value.
  22. //
  23. // hex := rgbToHex(0, 0, 255) // 0x0000FF
  24. func rgbToHex(r, g, b uint32) uint32 {
  25. return r<<16 + g<<8 + b
  26. }