home *** CD-ROM | disk | FTP | other *** search
/ PC Plus SuperCD (UK) 2000 March / pcp161b.iso / handson / archive / Issue153 / java / copyjava.exe / Rotate.class (.txt) < prev    next >
Encoding:
Java Class File  |  1999-04-04  |  2.9 KB  |  121 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 Rotate 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 thrRotate;
  16.    private static final double QUART = (Math.PI / 2D);
  17.    private static final double OCT = (Math.PI / 4D);
  18.  
  19.    public void start() {
  20.       if (this.thrRotate == null) {
  21.          this.thrRotate = new Thread(this);
  22.          this.thrRotate.start();
  23.       }
  24.  
  25.    }
  26.  
  27.    public void stop() {
  28.       if (this.thrRotate != null) {
  29.          this.thrRotate.stop();
  30.          this.thrRotate = null;
  31.       }
  32.  
  33.    }
  34.  
  35.    public void run() {
  36.       this.loadImage();
  37.       Image var1 = ((Component)this).createImage(this.field_0 << 1, this.field_1 << 1);
  38.       Graphics var2 = var1.getGraphics();
  39.       var2.setColor(Color.white);
  40.       this.backImg = ((Component)this).createImage(this.field_0 << 1, this.field_1 << 1);
  41.       Graphics var3 = this.backImg.getGraphics();
  42.  
  43.       for(int var4 = 0; this.thrRotate != null; ((Component)this).repaint()) {
  44.          var2.fillRect(0, 0, this.field_0 << 1, this.field_1 << 1);
  45.          var2.drawImage(this.origImg, 0, 0, this);
  46.          this.rotateImage(var2, (double)var4 * Math.PI / (double)180.0F);
  47.          var4 += 5;
  48.          if (var4 > 90) {
  49.             var4 = 0;
  50.          }
  51.  
  52.          var3.drawImage(var1, 0, 0, this);
  53.  
  54.          try {
  55.             Thread.sleep(50L);
  56.          } catch (InterruptedException var5) {
  57.          }
  58.       }
  59.  
  60.    }
  61.  
  62.    public void loadImage() {
  63.       MediaTracker var1 = new MediaTracker(this);
  64.       String var2 = ((Applet)this).getParameter("image");
  65.       this.origImg = ((Applet)this).getImage(((Applet)this).getDocumentBase(), var2);
  66.       var1.addImage(this.origImg, 0);
  67.  
  68.       try {
  69.          var1.waitForID(0);
  70.       } catch (InterruptedException var3) {
  71.       }
  72.  
  73.       this.field_0 = this.origImg.getWidth(this);
  74.       this.field_1 = this.origImg.getHeight(this);
  75.    }
  76.  
  77.    public void rotateImage(Graphics var1, double var2) {
  78.       if (var2 > (Math.PI / 4D)) {
  79.          this.skewY(var1, (double)1.0F);
  80.          this.skewX(var1, (double)1.0F);
  81.          this.skewY(var1, (double)1.0F);
  82.          --var2;
  83.       }
  84.  
  85.       this.skewX(var1, Math.tan(var2 / (double)2.0F));
  86.       this.skewY(var1, Math.sin(var2));
  87.       this.skewX(var1, Math.tan(var2 / (double)2.0F));
  88.    }
  89.  
  90.    public void skewX(Graphics var1, double var2) {
  91.       for(int var6 = 0; var6 < this.field_1 << 1; ++var6) {
  92.          double var4 = (double)var6 * -var2 + (double)this.field_1 * var2;
  93.          var1.copyArea(0, var6, this.field_0 * 3 >> 1, 1, (int)var4, 0);
  94.          var1.drawLine((int)var4, var6, 0, var6);
  95.          var1.drawLine((int)var4 + (this.field_0 * 3 >> 1), var6, this.field_0 * 3 >> 1, var6);
  96.       }
  97.  
  98.    }
  99.  
  100.    public void skewY(Graphics var1, double var2) {
  101.       for(int var6 = 0; var6 < this.field_0 * 3 >> 1; ++var6) {
  102.          double var4 = (double)var6 * var2;
  103.          var1.copyArea(var6, 0, 1, this.field_1 << 1, 0, (int)var4);
  104.          var1.drawLine(var6, (int)var4, var6, 0);
  105.          var1.drawLine(var6, (int)var4 + (this.field_1 << 1), var6, this.field_1 << 1);
  106.       }
  107.  
  108.    }
  109.  
  110.    public void update(Graphics var1) {
  111.       this.paint(var1);
  112.    }
  113.  
  114.    public void paint(Graphics var1) {
  115.       if (this.backImg != null) {
  116.          var1.drawImage(this.backImg, 0, 0, this);
  117.       }
  118.  
  119.    }
  120. }
  121.