import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.image.BufferedImage;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class TestFrame extends JFrame{
TestCanvas canvas;
public TestFrame(){
canvas = new TestCanvas();
getContentPane().add(canvas);
pack();
setVisible(true);
}
private byte[] buffer = new byte[1920*1080*3];
public void pset(int x, int y, int rgb){
buffer[3*(x+y*1920)+0] = (byte)((rgb >> 0) & 0x000000FF);
buffer[3*(x+y*1920)+1] = (byte)((rgb >> 8) & 0x000000FF);
buffer[3*(x+y*1920)+2] = (byte)((rgb >> 16) & 0x000000FF);
}
public void fill_rect(int x, int y, int w, int h, int rgb){
for(int i = 0; i < w; i++){
for(int j = 0; j < h; j++){
pset(x+i, y+j, rgb);
}
}
}
public void flush(){
canvas.repaint();
}
class TestCanvas extends JPanel{
private BufferedImage img = new BufferedImage(1920, 1080, BufferedImage.TYPE_INT_RGB);
TestCanvas(){
setSize(1920, 1080);
setPreferredSize(new Dimension(1920, 1080));
}
public void paint(Graphics g){
super.paint(g);
for(int i = 0; i < 1920; i++){
for(int j = 0; j < 1080; j++){
int r0 = buffer[3*(i+j*1920)+2] & 0x000000FF;
int g0 = buffer[3*(i+j*1920)+1] & 0x000000FF;
int b0 = buffer[3*(i+j*1920)+0] & 0x000000FF;
img.setRGB(i, j, (r0 << 16) + (g0 << 8) + b0);
}
}
g.drawImage(img, 0, 0, this);
}
}
public static void main(String[] args){
TestFrame canvas = new TestFrame();
canvas.fill_rect(0, 0, 100, 100, 0x00FF0000);
canvas.flush();
}
}