home *** CD-ROM | disk | FTP | other *** search
/ MACD 4 / MACD4.iso / Internet / Java / ui / drawing / example / DoubleBuffer.class (.txt) < prev    next >
Encoding:
Java Class File  |  1978-03-06  |  3.0 KB  |  156 lines

  1. import java.applet.Applet;
  2. import java.awt.Color;
  3. import java.awt.Component;
  4. import java.awt.Dimension;
  5. import java.awt.Event;
  6. import java.awt.Graphics;
  7. import java.awt.Image;
  8.  
  9. public class DoubleBuffer extends Applet implements Runnable {
  10.    int frameNumber = -1;
  11.    int delay;
  12.    Thread animatorThread;
  13.    boolean frozen = false;
  14.    int squareSize = 20;
  15.    boolean fillColumnTop = true;
  16.    Dimension offDimension;
  17.    Image offImage;
  18.    Graphics offGraphics;
  19.  
  20.    public void init() {
  21.       int var2 = 10;
  22.       String var1 = ((Applet)this).getParameter("fps");
  23.  
  24.       try {
  25.          if (var1 != null) {
  26.             var2 = Integer.parseInt(var1);
  27.          }
  28.       } catch (Exception var4) {
  29.       }
  30.  
  31.       this.delay = var2 > 0 ? 1000 / var2 : 100;
  32.       var1 = ((Applet)this).getParameter("squareWidth");
  33.  
  34.       try {
  35.          if (var1 != null) {
  36.             this.squareSize = Integer.parseInt(var1);
  37.             return;
  38.          }
  39.       } catch (Exception var3) {
  40.       }
  41.  
  42.    }
  43.  
  44.    public void start() {
  45.       if (!this.frozen) {
  46.          if (this.animatorThread == null) {
  47.             this.animatorThread = new Thread(this);
  48.          }
  49.  
  50.          this.animatorThread.start();
  51.       }
  52.  
  53.    }
  54.  
  55.    public void stop() {
  56.       this.animatorThread = null;
  57.       this.offGraphics = null;
  58.       this.offImage = null;
  59.    }
  60.  
  61.    public boolean mouseDown(Event var1, int var2, int var3) {
  62.       if (this.frozen) {
  63.          this.frozen = false;
  64.          this.start();
  65.       } else {
  66.          this.frozen = true;
  67.          this.animatorThread = null;
  68.       }
  69.  
  70.       return true;
  71.    }
  72.  
  73.    public void run() {
  74.       Thread.currentThread().setPriority(1);
  75.       long var1 = System.currentTimeMillis();
  76.  
  77.       while(Thread.currentThread() == this.animatorThread) {
  78.          ++this.frameNumber;
  79.          ((Component)this).repaint();
  80.  
  81.          try {
  82.             var1 += (long)this.delay;
  83.             Thread.sleep(Math.max(0L, var1 - System.currentTimeMillis()));
  84.          } catch (InterruptedException var3) {
  85.             return;
  86.          }
  87.       }
  88.  
  89.    }
  90.  
  91.    public void paint(Graphics var1) {
  92.       this.update(var1);
  93.    }
  94.  
  95.    public void update(Graphics var1) {
  96.       Dimension var2 = ((Component)this).size();
  97.       int var5 = 0;
  98.       int var6 = 0;
  99.       int var7 = 0;
  100.       if (this.offGraphics == null || var2.width != this.offDimension.width || var2.height != this.offDimension.height) {
  101.          this.offDimension = var2;
  102.          this.offImage = ((Component)this).createImage(var2.width, var2.height);
  103.          this.offGraphics = this.offImage.getGraphics();
  104.       }
  105.  
  106.       this.offGraphics.setColor(((Component)this).getBackground());
  107.       this.offGraphics.fillRect(0, 0, var2.width, var2.height);
  108.       this.offGraphics.setColor(Color.black);
  109.       boolean var3 = this.fillColumnTop;
  110.       this.fillColumnTop = !this.fillColumnTop;
  111.       int var10 = this.frameNumber % this.squareSize;
  112.       boolean var4;
  113.       int var8;
  114.       if (var10 == 0) {
  115.          var8 = this.squareSize;
  116.          var4 = !var3;
  117.       } else {
  118.          var8 = var10;
  119.          var4 = var3;
  120.       }
  121.  
  122.       while(var6 < var2.width) {
  123.          int var9;
  124.          for(int var11 = 0; var7 < var2.height; var7 += var9) {
  125.             var11 += this.squareSize;
  126.             if (var11 > var2.height) {
  127.                var9 = var2.height - var7;
  128.             } else {
  129.                var9 = this.squareSize;
  130.             }
  131.  
  132.             if (var3) {
  133.                this.offGraphics.fillRect(var6, var7, var8, var9);
  134.                var3 = false;
  135.             } else {
  136.                var3 = true;
  137.             }
  138.          }
  139.  
  140.          var6 += var8;
  141.          var7 = 0;
  142.          var8 = this.squareSize;
  143.          var5 += var8;
  144.          if (var5 > var2.width) {
  145.             var8 = var2.width - var6;
  146.          }
  147.  
  148.          var3 = this.fillColumnTop;
  149.          this.fillColumnTop = !this.fillColumnTop;
  150.       }
  151.  
  152.       this.fillColumnTop = var4;
  153.       var1.drawImage(this.offImage, 0, 0, this);
  154.    }
  155. }
  156.