home *** CD-ROM | disk | FTP | other *** search
- import java.applet.Applet;
- import java.awt.Color;
- import java.awt.Component;
- import java.awt.Graphics;
- import java.awt.Image;
- import java.awt.MediaTracker;
-
- public class Rotate extends Applet implements Runnable {
- Image origImg;
- Image backImg;
- // $FF: renamed from: w1 int
- int field_0;
- // $FF: renamed from: h1 int
- int field_1;
- Thread thrRotate;
- private static final double QUART = (Math.PI / 2D);
- private static final double OCT = (Math.PI / 4D);
-
- public void start() {
- if (this.thrRotate == null) {
- this.thrRotate = new Thread(this);
- this.thrRotate.start();
- }
-
- }
-
- public void stop() {
- if (this.thrRotate != null) {
- this.thrRotate.stop();
- this.thrRotate = null;
- }
-
- }
-
- public void run() {
- this.loadImage();
- Image var1 = ((Component)this).createImage(this.field_0 << 1, this.field_1 << 1);
- Graphics var2 = var1.getGraphics();
- var2.setColor(Color.white);
- this.backImg = ((Component)this).createImage(this.field_0 << 1, this.field_1 << 1);
- Graphics var3 = this.backImg.getGraphics();
-
- for(int var4 = 0; this.thrRotate != null; ((Component)this).repaint()) {
- var2.fillRect(0, 0, this.field_0 << 1, this.field_1 << 1);
- var2.drawImage(this.origImg, 0, 0, this);
- this.rotateImage(var2, (double)var4 * Math.PI / (double)180.0F);
- var4 += 5;
- if (var4 > 90) {
- var4 = 0;
- }
-
- var3.drawImage(var1, 0, 0, this);
-
- try {
- Thread.sleep(50L);
- } catch (InterruptedException var5) {
- }
- }
-
- }
-
- public void loadImage() {
- MediaTracker var1 = new MediaTracker(this);
- String var2 = ((Applet)this).getParameter("image");
- this.origImg = ((Applet)this).getImage(((Applet)this).getDocumentBase(), var2);
- var1.addImage(this.origImg, 0);
-
- try {
- var1.waitForID(0);
- } catch (InterruptedException var3) {
- }
-
- this.field_0 = this.origImg.getWidth(this);
- this.field_1 = this.origImg.getHeight(this);
- }
-
- public void rotateImage(Graphics var1, double var2) {
- if (var2 > (Math.PI / 4D)) {
- this.skewY(var1, (double)1.0F);
- this.skewX(var1, (double)1.0F);
- this.skewY(var1, (double)1.0F);
- --var2;
- }
-
- this.skewX(var1, Math.tan(var2 / (double)2.0F));
- this.skewY(var1, Math.sin(var2));
- this.skewX(var1, Math.tan(var2 / (double)2.0F));
- }
-
- public void skewX(Graphics var1, double var2) {
- for(int var6 = 0; var6 < this.field_1 << 1; ++var6) {
- double var4 = (double)var6 * -var2 + (double)this.field_1 * var2;
- var1.copyArea(0, var6, this.field_0 * 3 >> 1, 1, (int)var4, 0);
- var1.drawLine((int)var4, var6, 0, var6);
- var1.drawLine((int)var4 + (this.field_0 * 3 >> 1), var6, this.field_0 * 3 >> 1, var6);
- }
-
- }
-
- public void skewY(Graphics var1, double var2) {
- for(int var6 = 0; var6 < this.field_0 * 3 >> 1; ++var6) {
- double var4 = (double)var6 * var2;
- var1.copyArea(var6, 0, 1, this.field_1 << 1, 0, (int)var4);
- var1.drawLine(var6, (int)var4, var6, 0);
- var1.drawLine(var6, (int)var4 + (this.field_1 << 1), var6, this.field_1 << 1);
- }
-
- }
-
- public void update(Graphics var1) {
- this.paint(var1);
- }
-
- public void paint(Graphics var1) {
- if (this.backImg != null) {
- var1.drawImage(this.backImg, 0, 0, this);
- }
-
- }
- }
-