MidiPlayer/src/com/eatenalive3/midiplayer/RenderSong.java

52 lines
1.2 KiB
Java

package com.eatenalive3.midiplayer;
import java.awt.Graphics;
import java.awt.image.BufferedImage;
import java.awt.image.DataBufferInt;
import javax.swing.JPanel;
public class RenderSong extends JPanel {
private static final long serialVersionUID = 1L;
int switchTimer = 7;
public static final int WIDTH = 650, HEIGHT = 300;
BufferedImage canvas = new BufferedImage(WIDTH, HEIGHT, BufferedImage.TYPE_INT_RGB);
final int[] pixels = ((DataBufferInt) canvas.getRaster().getDataBuffer()).getData();
public RenderSong() {
System.out.println(this.getWidth() + ", " + this.getHeight());
this.setSize(WIDTH, HEIGHT);
}
@Override
public void paintComponent(Graphics g) {
g.drawImage(canvas, 0, 0, WIDTH, HEIGHT, null);
}
public void update(int[] pix) {
for (int i = 0; i < pix.length; i++) {
if (pix[i] > 0)
pix[i]--;
}
if (switchTimer-- > 0)
return;
switchTimer = MidiPlayer.currentSong.resolution / 50;
for (int y = 0; y < HEIGHT; y++) {
for (int x = 0; x < WIDTH - 1; x++) {
pixels[x + y * WIDTH] = pixels[x + y * WIDTH + 1];
}
}
for (int y = 0; y < pix.length; y++) {
if (y < HEIGHT) {
if (pix[y] != 0)
pixels[WIDTH - 1 + y * WIDTH] = 0xFFFFFF;
else
pixels[WIDTH - 1 + y * WIDTH] = 0;
}
}
}
}