package org.darkstorm.minecraft.gui.theme.simple;
import static org.lwjgl.opengl.GL11.*;
import java.awt.*;
import org.darkstorm.minecraft.gui.component.Component;
import org.darkstorm.minecraft.gui.component.Panel;
import org.darkstorm.minecraft.gui.layout.Constraint;
import org.darkstorm.minecraft.gui.theme.AbstractComponentUI;
import org.darkstorm.minecraft.gui.util.RenderUtil;
public class SimplePanelUI extends AbstractComponentUI<Panel> {
private final SimpleTheme theme;
SimplePanelUI(SimpleTheme theme) {
super(Panel.class);
this.theme = theme;
foreground = Color.WHITE;
background = new Color(128, 128, 128, 128);
}
@Override
protected void renderComponent(Panel component) {
if(component.getParent() != null)
return;
Rectangle area = component.getArea();
translateComponent(component, false);
glEnable(GL_BLEND);
glDisable(GL_TEXTURE_2D);
glDisable(GL_CULL_FACE);
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
RenderUtil.setColor(component.getBackgroundColor());
glBegin(GL_QUADS);
{
glVertex2d(0, 0);
glVertex2d(area.width, 0);
glVertex2d(area.width, area.height);
glVertex2d(0, area.height);
}
glEnd();
glEnable(GL_CULL_FACE);
glEnable(GL_TEXTURE_2D);
glDisable(GL_BLEND);
translateComponent(component, true);
}
@Override
protected Dimension getDefaultComponentSize(Panel component) {
Component[] children = component.getChildren();
Rectangle[] areas = new Rectangle[children.length];
Constraint[][] constraints = new Constraint[children.length][];
for(int i = 0; i < children.length; i++) {
Component child = children[i];
Dimension size = child.getTheme().getUIForComponent(child)
.getDefaultSize(child);
areas[i] = new Rectangle(0, 0, size.width, size.height);
constraints[i] = component.getConstraints(child);
}
return component.getLayoutManager().getOptimalPositionedSize(areas,
constraints);
}
}