package de.lessvoid.nifty.elements.render; import de.lessvoid.nifty.elements.Element; import de.lessvoid.nifty.render.NiftyRenderEngine; import de.lessvoid.nifty.tools.Color; import javax.annotation.Nonnull; import javax.annotation.Nullable; import java.util.Random; /** * The ElementRenderer for a Panel. * * @author void */ public class PanelRenderer implements ElementRenderer { /** * the background color when used otherwise null. */ @Nullable private Color backgroundColor; @Nullable private Color debugColor; /** * Default constructor. */ public PanelRenderer() { } /** * render it. * * @param element the widget we're connected to * @param r the renderDevice we should use */ @Override public void render(@Nonnull final Element element, @Nonnull final NiftyRenderEngine r) { if (element.getNifty().isDebugOptionPanelColors()) { r.saveStates(); r.setColor(getDebugColor()); r.renderQuad(element.getX(), element.getY(), element.getWidth(), element.getHeight()); r.restoreStates(); return; } if (backgroundColor != null) { r.saveStates(); if (!r.isColorChanged()) { if (r.isColorAlphaChanged()) { r.setColorIgnoreAlpha(backgroundColor); } else { r.setColor(backgroundColor); } } r.renderQuad(element.getX(), element.getY(), element.getWidth(), element.getHeight()); r.restoreStates(); } } @Nonnull private Color getDebugColor() { if (debugColor != null) { return debugColor; } final Random rnd = new Random(); debugColor = new Color(rnd.nextFloat(), rnd.nextFloat(), rnd.nextFloat(), .5f); return debugColor; } public void setBackgroundColor(@Nullable final Color backgroundColor) { this.backgroundColor = backgroundColor; } @Nullable public Color getBackgroundColor() { return backgroundColor; } }