home *** CD-ROM | disk | FTP | other *** search
/ PC Plus SuperCD (UK) 2000 March / pcp161b.iso / handson / archive / Issue153 / java / WetPaint.class (.txt) < prev    next >
Encoding:
Java Class File  |  1999-04-04  |  2.4 KB  |  97 lines

  1. import java.applet.Applet;
  2. import java.awt.Color;
  3. import java.awt.Component;
  4. import java.awt.Graphics;
  5. import java.awt.Image;
  6. import java.awt.MediaTracker;
  7.  
  8. public class WetPaint extends Applet implements Runnable {
  9.    Image origImg;
  10.    Image backImg;
  11.    // $FF: renamed from: w1 int
  12.    int field_0;
  13.    // $FF: renamed from: h1 int
  14.    int field_1;
  15.    Thread thrWetPaint;
  16.    private static final int SMUDGE_WIDTH = 40;
  17.    private static final int SMUDGE_HEIGHT = 40;
  18.  
  19.    public void start() {
  20.       if (this.thrWetPaint == null) {
  21.          this.thrWetPaint = new Thread(this);
  22.          this.thrWetPaint.start();
  23.       }
  24.  
  25.    }
  26.  
  27.    public void stop() {
  28.       if (this.thrWetPaint != null) {
  29.          this.thrWetPaint.stop();
  30.          this.thrWetPaint = null;
  31.       }
  32.  
  33.    }
  34.  
  35.    public void run() {
  36.       this.loadImage();
  37.       this.backImg = ((Component)this).createImage(this.field_0, this.field_1);
  38.       Graphics var1 = this.backImg.getGraphics();
  39.       var1.setColor(Color.white);
  40.       var1.drawImage(this.origImg, 0, 0, this);
  41.       int var2 = (int)(Math.random() * (double)this.field_0);
  42.       int var3 = (int)(Math.random() * (double)this.field_1);
  43.       int var4 = 3;
  44.  
  45.       for(int var5 = 3; this.thrWetPaint != null; ((Component)this).repaint()) {
  46.          this.smudge(var1, var2, var3);
  47.          var2 += var4;
  48.          var3 += var5;
  49.          if (var2 < 0 || var2 > this.field_0 - 40) {
  50.             var4 *= -1;
  51.          }
  52.  
  53.          if (var3 < 0 || var3 > this.field_0 - 40) {
  54.             var5 *= -1;
  55.          }
  56.  
  57.          try {
  58.             Thread.sleep(50L);
  59.          } catch (InterruptedException var6) {
  60.          }
  61.       }
  62.  
  63.    }
  64.  
  65.    public void loadImage() {
  66.       MediaTracker var1 = new MediaTracker(this);
  67.       String var2 = ((Applet)this).getParameter("image");
  68.       this.origImg = ((Applet)this).getImage(((Applet)this).getDocumentBase(), var2);
  69.       var1.addImage(this.origImg, 0);
  70.  
  71.       try {
  72.          var1.waitForID(0);
  73.       } catch (InterruptedException var3) {
  74.       }
  75.  
  76.       this.field_0 = this.origImg.getWidth(this);
  77.       this.field_1 = this.origImg.getHeight(this);
  78.    }
  79.  
  80.    public void smudge(Graphics var1, int var2, int var3) {
  81.       int var4 = (int)(Math.random() * (double)40.0F / (double)10.0F) - 2;
  82.       int var5 = (int)(Math.random() * (double)40.0F / (double)10.0F) - 2;
  83.       var1.copyArea(var2, var3, 40, 40, var4, var5);
  84.    }
  85.  
  86.    public void update(Graphics var1) {
  87.       this.paint(var1);
  88.    }
  89.  
  90.    public void paint(Graphics var1) {
  91.       if (this.backImg != null) {
  92.          var1.drawImage(this.backImg, 0, 0, this);
  93.       }
  94.  
  95.    }
  96. }
  97.