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.

48 lines
933B

  1. #pragma once
  2. #include "ui/common.hpp"
  3. namespace rack {
  4. struct Label : virtual Widget {
  5. std::string text;
  6. float fontSize;
  7. NVGcolor color;
  8. enum Alignment {
  9. LEFT_ALIGNMENT,
  10. CENTER_ALIGNMENT,
  11. RIGHT_ALIGNMENT,
  12. };
  13. Alignment alignment = LEFT_ALIGNMENT;
  14. Label() {
  15. box.size.y = BND_WIDGET_HEIGHT;
  16. fontSize = 13;
  17. color = bndGetTheme()->regularTheme.textColor;
  18. }
  19. void draw(NVGcontext *vg) override {
  20. // TODO
  21. // Custom font sizes do not work with right or center alignment
  22. float x;
  23. switch (alignment) {
  24. default:
  25. case LEFT_ALIGNMENT: {
  26. x = 0.0;
  27. } break;
  28. case RIGHT_ALIGNMENT: {
  29. x = box.size.x - bndLabelWidth(vg, -1, text.c_str());
  30. } break;
  31. case CENTER_ALIGNMENT: {
  32. x = (box.size.x - bndLabelWidth(vg, -1, text.c_str())) / 2.0;
  33. } break;
  34. }
  35. bndIconLabelValue(vg, x, 0.0, box.size.x, box.size.y, -1, color, BND_LEFT, fontSize, text.c_str(), NULL);
  36. }
  37. };
  38. } // namespace rack