package displayNoise;
import java.awt.*;
import java.awt.geom.Rectangle2D;
import javax.swing.*;
import NoiseGen.NoiseContainer.NoiseContainer;
import NoiseGen.Wrapper.RangeWrapper;
public class NoiseDisplay2D extends SimpleNoiseDisplay {
RangeWrapper range;
public NoiseDisplay2D(NoiseContainer values) {
super(values, "2D Noise Display");
range = new RangeWrapper(getNoise(), 0, 255);
setDisplaySize(range.getLength(), range.getHeight());
add(new NoisePanel());
}
private class NoisePanel extends JPanel {
public void paintComponent(Graphics g) {
super.paintComponent(g);
Graphics2D g2 = (Graphics2D) g;
double pixelLength = ((double) range.getLength() / getNoise().getLength());
double pixelHeight = ((double) range.getHeight() / getNoise().getHeight());
for (int x = 0; x < getNoise().getLength(); x++) { // Loop through values and connect the dots.
for (int y = 0; y < getNoise().getHeight(); y++) {
int noiseValue = range.getValue(x, y, 0).intValue();
double pixelX = x * pixelLength;
double pixelY = y * pixelHeight;
Rectangle2D.Double rectangle = new Rectangle2D.Double(pixelX, pixelY, pixelLength, pixelHeight);
g2.setColor(new Color(noiseValue, noiseValue, noiseValue));
g2.draw(rectangle);
g2.fill(rectangle);
}
}
}
public Dimension getPreferredSize() {
return new Dimension(range.getLength(), range.getHeight());
}
}
}