You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

50 lines
1.5KB

  1. #pragma once
  2. #include <nanovg.h>
  3. #include <common.hpp>
  4. #include <string.hpp>
  5. namespace rack {
  6. /** Utilities for `NVGcolor` */
  7. namespace color {
  8. static const NVGcolor BLACK_TRANSPARENT = nvgRGBA(0x00, 0x00, 0x00, 0x00);
  9. static const NVGcolor WHITE_TRANSPARENT = nvgRGBA(0xff, 0xff, 0xff, 0x00);
  10. // All corners of the RGB cube and nothing else
  11. static const NVGcolor BLACK = nvgRGB(0x00, 0x00, 0x00);
  12. static const NVGcolor RED = nvgRGB(0xff, 0x00, 0x00);
  13. static const NVGcolor GREEN = nvgRGB(0x00, 0xff, 0x00);
  14. static const NVGcolor BLUE = nvgRGB(0x00, 0x00, 0xff);
  15. static const NVGcolor CYAN = nvgRGB(0x00, 0xff, 0xff);
  16. static const NVGcolor MAGENTA = nvgRGB(0xff, 0x00, 0xff);
  17. static const NVGcolor YELLOW = nvgRGB(0xff, 0xff, 0x00);
  18. static const NVGcolor WHITE = nvgRGB(0xff, 0xff, 0xff);
  19. bool isEqual(NVGcolor a, NVGcolor b);
  20. /** Limits color components between 0 and 1. */
  21. NVGcolor clamp(NVGcolor a);
  22. /** Subtracts color components elementwise. */
  23. NVGcolor minus(NVGcolor a, NVGcolor b);
  24. /** Adds color components elementwise. */
  25. NVGcolor plus(NVGcolor a, NVGcolor b);
  26. /** Multiplies color components elementwise. */
  27. NVGcolor mult(NVGcolor a, NVGcolor b);
  28. NVGcolor mult(NVGcolor a, float x);
  29. /** Screen blending with alpha compositing */
  30. NVGcolor screen(NVGcolor a, NVGcolor b);
  31. /** Multiplies alpha value. */
  32. NVGcolor alpha(NVGcolor a, float alpha);
  33. /** Converts from color hex string of the form "#RRGGBB" or "#RRGGBBAA".
  34. Returns WHITE on error.
  35. */
  36. NVGcolor fromHexString(std::string s);
  37. std::string toHexString(NVGcolor c);
  38. } // namespace color
  39. } // namespace rack