package net.mreriksson.misc.fireapplet; import java.awt.image.BufferedImage; import java.awt.image.WritableRaster; import java.awt.Graphics; public class FireApplet extends java.applet.Applet implements java.lang.Runnable { BufferedImage myImage = new BufferedImage(640, 480, BufferedImage.TYPE_BYTE_GRAY); public void init() { startThread(); } public void run() { long start = System.currentTimeMillis(); doit(); long end = System.currentTimeMillis(); long diff = end - start; long diffs = diff / 1000; double fps = 25.0 / (diff / 1000.0); System.out.println("Start: " + start); System.out.println("End: " + end); System.out.println("Frames: 25"); System.out.println("Total time: " + diff + " ms ( " + diffs + " s)"); System.out.println("FPS: " + fps); } void startThread() { java.lang.Thread myThread = new java.lang.Thread(this); myThread.start(); } void doit() { // myImage = new BufferedImage(640, 480, BufferedImage.TYPE_BYTE_GRAY); WritableRaster myRaster = myImage.getRaster(); int buffer[] = new int[640 * 482]; // Two additional lines at the bottom for(int count=0; count < 25; count++) { // Add random line for(int i=307200; i < 308480; i++) buffer[i] = (int) (Math.random() * 150) + 100; for(int i=0; i < 307200; i++) { buffer[i] = ( buffer[ i + 639 ] + buffer[ i + 640 ] + buffer[ i + 641 ] + buffer[ i + 1280 ] ) >> 2; } // Draw the image myRaster.setPixels(0,0,640,480,buffer); repaint(); } } public void paint(java.awt.Graphics g) { // Output the image to the screen g.drawImage(myImage, 0, 0, this); } public void update(java.awt.Graphics g) { paint(g); } }