LabelWidget.java 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128
  1. /*
  2. * Roughly Enough Items by Danielshe.
  3. * Licensed under the MIT License.
  4. */
  5. package me.shedaniel.rei.gui.widget;
  6. import me.shedaniel.math.api.Point;
  7. import me.shedaniel.math.api.Rectangle;
  8. import me.shedaniel.rei.impl.ScreenHelper;
  9. import net.minecraft.client.gui.Element;
  10. import java.util.Collections;
  11. import java.util.List;
  12. public class LabelWidget extends WidgetWithBounds {
  13. private Point pos;
  14. private String text;
  15. private int defaultColor;
  16. private boolean hasShadows = true;
  17. private boolean centered = true;
  18. @Deprecated
  19. public LabelWidget(int x, int y, String text) {
  20. this(new Point(x, y), text);
  21. }
  22. public LabelWidget(Point point, String text) {
  23. this.pos = point;
  24. this.text = text;
  25. this.defaultColor = ScreenHelper.isDarkModeEnabled() ? 0xFFBBBBBB : -1;
  26. }
  27. public boolean isCentered() {
  28. return centered;
  29. }
  30. public void setCentered(boolean centered) {
  31. this.centered = centered;
  32. }
  33. public LabelWidget centered() {
  34. setCentered(true);
  35. return this;
  36. }
  37. public LabelWidget leftAligned() {
  38. setCentered(false);
  39. return this;
  40. }
  41. public boolean isHasShadows() {
  42. return hasShadows;
  43. }
  44. public void setHasShadows(boolean hasShadows) {
  45. this.hasShadows = hasShadows;
  46. }
  47. public LabelWidget noShadow() {
  48. setHasShadows(false);
  49. return this;
  50. }
  51. public int getDefaultColor() {
  52. return defaultColor;
  53. }
  54. public void setDefaultColor(int defaultColor) {
  55. this.defaultColor = defaultColor;
  56. }
  57. public Point getPosition() {
  58. return pos;
  59. }
  60. public LabelWidget setPosition(Point position) {
  61. this.pos = position;
  62. return this;
  63. }
  64. public String getText() {
  65. return text;
  66. }
  67. public LabelWidget setText(String text) {
  68. this.text = text;
  69. return this;
  70. }
  71. public LabelWidget color(int defaultColor) {
  72. this.defaultColor = defaultColor;
  73. return this;
  74. }
  75. @Override
  76. public Rectangle getBounds() {
  77. int width = font.getStringWidth(text);
  78. Point pos = getPosition();
  79. if (isCentered())
  80. return new Rectangle(pos.x - width / 2 - 1, pos.y - 5, width + 2, 14);
  81. return new Rectangle(pos.x - 1, pos.y - 5, width + 2, 14);
  82. }
  83. @Override
  84. public List<? extends Element> children() {
  85. return Collections.emptyList();
  86. }
  87. @Override
  88. public void render(int mouseX, int mouseY, float delta) {
  89. int width = font.getStringWidth(text);
  90. Point pos = getPosition();
  91. if (isCentered()) {
  92. if (hasShadows)
  93. font.drawWithShadow(text, pos.x - width / 2, pos.y, defaultColor);
  94. else
  95. font.draw(text, pos.x - width / 2, pos.y, defaultColor);
  96. } else {
  97. if (hasShadows)
  98. font.drawWithShadow(text, pos.x, pos.y, defaultColor);
  99. else
  100. font.draw(text, pos.x, pos.y, defaultColor);
  101. }
  102. }
  103. }