Advertisement
Guest User

Untitled

a guest
Sep 27th, 2016
63
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.23 KB | None | 0 0
  1. public class DankButtonUI extends AbstractComponentUI<Button> {
  2. private final DankTheme theme;
  3.  
  4. DankButtonUI(DankTheme theme) {
  5. super(Button.class);
  6. this.theme = theme;
  7.  
  8. foreground = Color.BLACK;
  9. background = new Color(0, 0, 0, 0 + 50 / 2);
  10. }
  11.  
  12. @Override
  13. protected void renderComponent(Button button) {
  14. translateComponent(button, false);
  15. Rectangle area = button.getArea();
  16. glEnable(GL_BLEND);
  17. glDisable(GL_CULL_FACE);
  18.  
  19. glDisable(GL_TEXTURE_2D);
  20. RenderUtil.setColor(button.getBackgroundColor());
  21. glBegin(GL_QUADS);
  22. {
  23. glVertex2d(0, 0);
  24. glVertex2d(area.width, 0);
  25. glVertex2d(area.width, area.height);
  26. glVertex2d(0, area.height);
  27. }
  28. glEnd();
  29. Point mouse = RenderUtil.calculateMouseLocation();
  30. Component parent = button.getParent();
  31. while(parent != null) {
  32. mouse.x -= parent.getX();
  33. mouse.y -= parent.getY();
  34. parent = parent.getParent();
  35. }
  36. if(area.contains(mouse)) {
  37. glColor4f(0.0f, 0.0f, 0.0f, Mouse.isButtonDown(0) ? 0.5f : 0.3f);
  38. glBegin(GL_QUADS);
  39. {
  40. glVertex2d(0, 0);
  41. glVertex2d(area.width, 0);
  42. glVertex2d(area.width, area.height);
  43. glVertex2d(0, area.height);
  44. }
  45. glEnd();
  46. }
  47. glEnable(GL_TEXTURE_2D);
  48.  
  49. String text = button.getText();
  50. theme.getFontRenderer().drawString(
  51. text,
  52. area.width / 2 - theme.getFontRenderer().getStringWidth(text)
  53. / 2,
  54. area.height / 2 - theme.getFontRenderer().FONT_HEIGHT / 2,
  55. RenderUtil.toRGBA(button.getForegroundColor()));
  56.  
  57. glEnable(GL_CULL_FACE);
  58. glDisable(GL_BLEND);
  59. translateComponent(button, true);
  60. }
  61.  
  62. @Override
  63. protected Dimension getDefaultComponentSize(Button component) {
  64. return new Dimension(theme.getFontRenderer().getStringWidth(
  65. component.getText()) + 4,
  66. theme.getFontRenderer().FONT_HEIGHT + 4);
  67. }
  68.  
  69. @Override
  70. protected Rectangle[] getInteractableComponentRegions(Button component) {
  71. return new Rectangle[] { new Rectangle(0, 0, component.getWidth(),
  72. component.getHeight()) };
  73. }
  74.  
  75. @Override
  76. protected void handleComponentInteraction(Button component, Point location,
  77. int button) {
  78. if(location.x <= component.getWidth()
  79. && location.y <= component.getHeight() && button == 0)
  80. component.press();
  81. }
  82. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement