package com.kokakiwi.mclauncher.ui.simple.components;
import java.awt.Color;
import java.awt.GradientPaint;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Image;
import java.awt.geom.Point2D;
import javax.imageio.ImageIO;
import javax.swing.JPanel;
public class TexturedPanel extends JPanel
{
private static final long serialVersionUID = -1577652681975914598L;
private Image img;
private final Image bgImage;
public TexturedPanel(String path) throws Exception
{
this(ImageIO.read(TexturedPanel.class.getResourceAsStream("/" + path))
.getScaledInstance(32, 32, 16));
}
public TexturedPanel(Image background)
{
setOpaque(true);
bgImage = background;
}
public void update(Graphics g)
{
paint(g);
}
public void paintComponent(Graphics g2)
{
final int w = getWidth() / 2 + 1;
final int h = getHeight() / 2 + 1;
if (img == null || img.getWidth(null) != w || img.getHeight(null) != h)
{
img = createImage(w, h);
final Graphics g = img.getGraphics();
for (int x = 0; x <= w / 32; x++)
{
for (int y = 0; y <= h / 32; y++)
{
g.drawImage(bgImage, x * 32, y * 32, null);
}
}
if (g instanceof Graphics2D)
{
final Graphics2D gg = (Graphics2D) g;
int gh = 1;
gg.setPaint(new GradientPaint(new Point2D.Float(0.0F, 0.0F),
new Color(553648127, true),
new Point2D.Float(0.0F, gh), new Color(0, true)));
gg.fillRect(0, 0, w, gh);
gh = h;
gg.setPaint(new GradientPaint(new Point2D.Float(0.0F, 0.0F),
new Color(0, true), new Point2D.Float(0.0F, gh),
new Color(1610612736, true)));
gg.fillRect(0, 0, w, gh);
}
g.dispose();
}
g2.drawImage(img, 0, 0, w * 2, h * 2, null);
}
}