home *** CD-ROM | disk | FTP | other *** search
/ Maximum CD 2003 January / maximum-cd-2003-01.iso / Software / Utilities / JPerk / jperk.exe / _SETUP.1 / ripple.class (.txt) < prev    next >
Encoding:
Java Class File  |  1996-08-11  |  3.9 KB  |  162 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.  
  7. public class ripple extends Applet implements Runnable {
  8.    static boolean dispCopy;
  9.    Image origImg;
  10.    Image backImg;
  11.    Image finImg;
  12.    // $FF: renamed from: w1 int
  13.    int field_0;
  14.    // $FF: renamed from: h1 int
  15.    int field_1;
  16.    Graphics backG;
  17.    Graphics finG;
  18.    int phase;
  19.    Thread nick;
  20.    int frameNo;
  21.    int frames = 12;
  22.    int period = 50;
  23.    boolean stopIt = true;
  24.    boolean borderGap = true;
  25.    boolean imLoaded = false;
  26.  
  27.    public void init() {
  28.       if (!dispCopy) {
  29.          System.out.println("Ripple v 1.0 for Java");
  30.          System.out.println("Copyright (c) David Griffiths, 1996. All rights reserved.");
  31.          System.out.println("For more information visit http://www.demon.co.uk/davidg,");
  32.          System.out.println("or contact: dgriffiths@msn.com");
  33.          dispCopy = true;
  34.       }
  35.  
  36.       ((Component)this).setBackground(Color.white);
  37.       this.origImg = ((Applet)this).getImage(((Applet)this).getDocumentBase(), ((Applet)this).getParameter("image"));
  38.       this.borderGap = "on".equals(((Applet)this).getParameter("bordergap"));
  39.       this.field_0 = this.origImg.getWidth(this);
  40.       this.field_1 = this.origImg.getHeight(this);
  41.       if (this.field_1 > 0 && this.field_0 > 0) {
  42.          this.stopIt = false;
  43.       }
  44.  
  45.       this.period = Integer.parseInt(((Applet)this).getParameter("period"));
  46.       this.frames = Integer.parseInt(((Applet)this).getParameter("frames"));
  47.    }
  48.  
  49.    public void start() {
  50.       if (this.nick == null) {
  51.          this.nick = new Thread(this);
  52.          this.nick.start();
  53.       }
  54.  
  55.    }
  56.  
  57.    public void stop() {
  58.       if (this.nick != null) {
  59.          this.nick.stop();
  60.          this.nick = null;
  61.       }
  62.  
  63.    }
  64.  
  65.    public boolean imageUpdate(Image var1, int var2, int var3, int var4, int var5, int var6) {
  66.       boolean var7 = true;
  67.       if ((var2 & 2) > 0) {
  68.          this.field_1 = var6;
  69.       }
  70.  
  71.       if ((var2 & 1) > 0) {
  72.          this.field_0 = var5;
  73.       }
  74.  
  75.       if ((var2 & 32) > 0) {
  76.          this.imLoaded = true;
  77.       }
  78.  
  79.       if (this.imLoaded && this.field_0 > 0 && this.field_1 > 0) {
  80.          this.stopIt = false;
  81.          var7 = false;
  82.       }
  83.  
  84.       return var7;
  85.    }
  86.  
  87.    public void rotateImage(Graphics var1) {
  88.       this.shearX(var1);
  89.       this.shearY(var1);
  90.    }
  91.  
  92.    public void shearX(Graphics var1) {
  93.       for(int var4 = 0; var4 < this.field_1; ++var4) {
  94.          double var2 = (double)(this.period >> 1) * Math.sin((double)var4 / (double)this.period + (Math.PI * 2D) * (double)this.phase / (double)this.frames);
  95.          var1.copyArea(0, var4, this.field_0, 1, (int)var2, 0);
  96.          if (this.borderGap) {
  97.             var1.drawLine((int)var2, var4, 0, var4);
  98.             var1.drawLine((int)var2 + this.field_0, var4, this.field_0, var4);
  99.          }
  100.       }
  101.  
  102.    }
  103.  
  104.    public void shearY(Graphics var1) {
  105.       for(int var4 = 0; var4 < this.field_0; ++var4) {
  106.          double var2 = (double)(this.period >> 1) * Math.sin((double)var4 / (double)this.period + (Math.PI * 2D) * (double)this.phase / (double)this.frames);
  107.          var1.copyArea(var4, 0, 1, this.field_1, 0, (int)var2);
  108.          if (this.borderGap) {
  109.             var1.drawLine(var4, (int)var2, var4, 0);
  110.             var1.drawLine(var4, (int)var2 + this.field_1, var4, this.field_1);
  111.          }
  112.       }
  113.  
  114.    }
  115.  
  116.    public void run() {
  117.       while(this.nick != null) {
  118.          try {
  119.             Thread.sleep(50L);
  120.          } catch (InterruptedException var1) {
  121.          }
  122.  
  123.          this.frameNo = (this.frameNo + 1) % this.frames;
  124.          ((Component)this).repaint();
  125.       }
  126.  
  127.    }
  128.  
  129.    public void update(Graphics var1) {
  130.       this.paint(var1);
  131.    }
  132.  
  133.    public void paint(Graphics var1) {
  134.       if (!this.stopIt) {
  135.          this.stopIt = true;
  136.          this.createIt();
  137.       }
  138.  
  139.       if (this.finImg != null) {
  140.          var1.drawImage(this.finImg, 0, -this.frameNo * this.field_1, this);
  141.          var1.drawImage(this.finImg, 0, (this.frames - this.frameNo) * this.field_1, this);
  142.       } else {
  143.          var1.drawImage(this.origImg, 0, 0, this);
  144.       }
  145.    }
  146.  
  147.    public void createIt() {
  148.       this.backImg = ((Component)this).createImage(this.field_0, this.field_1);
  149.       this.backG = this.backImg.getGraphics();
  150.       this.finImg = ((Component)this).createImage(this.field_0, this.frames * this.field_1);
  151.       this.finG = this.finImg.getGraphics();
  152.       this.backG.setColor(Color.white);
  153.  
  154.       for(this.phase = 0; this.phase < this.frames; ++this.phase) {
  155.          this.backG.drawImage(this.origImg, 0, 0, this);
  156.          this.rotateImage(this.backG);
  157.          this.finG.drawImage(this.backImg, 0, this.phase * this.field_1, this);
  158.       }
  159.  
  160.    }
  161. }
  162.