home *** CD-ROM | disk | FTP | other *** search
/ Datatid 2000 #1 / Datatid-2000-01.iso / Internet / SPLASH / SPLASH12.EXE / data1.cab / Plugins / _Imaging / Hawk_Ray / HawkRay.class (.txt) < prev    next >
Encoding:
Java Class File  |  1998-12-18  |  4.0 KB  |  176 lines

  1. import java.applet.Applet;
  2. import java.awt.Component;
  3. import java.awt.Event;
  4. import java.awt.Graphics;
  5. import java.awt.Image;
  6. import java.awt.MediaTracker;
  7. import java.awt.image.MemoryImageSource;
  8. import java.awt.image.PixelGrabber;
  9.  
  10. public class HawkRay extends Applet implements Runnable {
  11.    // $FF: renamed from: w int
  12.    private int field_0;
  13.    // $FF: renamed from: h int
  14.    private int field_1;
  15.    private int dispx;
  16.    private int dispz;
  17.    private int m_sw;
  18.    private int m_sh;
  19.    private int[] texel;
  20.    private int m_cos1;
  21.    private int m_sin1;
  22.    private int xres;
  23.    private int yres;
  24.    private int[] screenPixel;
  25.    private int m_alti = 120;
  26.    // $FF: renamed from: d int
  27.    private int field_2 = 1;
  28.    private int viewA = 180;
  29.    private int dViewA = 3;
  30.    private int paintCnt;
  31.    private int garbageCnt;
  32.    private MemoryImageSource screenMem;
  33.    private Thread theThread;
  34.    private Image screenImage;
  35.    private boolean m_tAnimate = true;
  36.  
  37.    public void init() {
  38.       MediaTracker var1 = new MediaTracker(this);
  39.       Image var2 = ((Applet)this).getImage(((Applet)this).getDocumentBase(), ((Applet)this).getParameter("image"));
  40.       this.m_sh = ((Component)this).size().height << 2;
  41.       this.m_sw = ((Component)this).size().width;
  42.       this.screenPixel = new int[this.m_sw * this.m_sh >> 2];
  43.       this.screenMem = new MemoryImageSource(this.m_sw, this.m_sh >> 2, this.screenPixel, 0, this.m_sw);
  44.       var1.addImage(var2, 0);
  45.  
  46.       try {
  47.          var1.waitForID(0);
  48.       } catch (Exception var5) {
  49.       }
  50.  
  51.       this.field_0 = var2.getWidth(this);
  52.       this.field_1 = var2.getHeight(this);
  53.       this.texel = new int[this.field_0 * this.field_1];
  54.       PixelGrabber var3 = new PixelGrabber(var2.getSource(), 0, 0, this.field_0, this.field_1, this.texel, 0, this.field_0);
  55.  
  56.       try {
  57.          var3.grabPixels();
  58.       } catch (Exception var4) {
  59.          return;
  60.       }
  61.  
  62.       Object var6 = null;
  63.    }
  64.  
  65.    public void start() {
  66.       (this.theThread = new Thread(this)).start();
  67.    }
  68.  
  69.    public void stop() {
  70.       if (this.theThread != null) {
  71.          this.theThread.stop();
  72.          this.theThread = null;
  73.       }
  74.  
  75.    }
  76.  
  77.    public void run() {
  78.       while(this.theThread != null) {
  79.          if (this.paintCnt++ < 5 && this.m_tAnimate) {
  80.             if (this.viewA > 720) {
  81.                this.dViewA = -1;
  82.             } else if (this.viewA < 360) {
  83.                this.dViewA = 1;
  84.             }
  85.  
  86.             this.viewA += this.dViewA;
  87.             this.renderImage();
  88.             ((Component)this).repaint();
  89.  
  90.             try {
  91.                Thread.sleep(50L);
  92.             } catch (InterruptedException var2) {
  93.             }
  94.          } else {
  95.             try {
  96.                Thread.sleep(1000L);
  97.             } catch (InterruptedException var1) {
  98.             }
  99.          }
  100.  
  101.          if (this.garbageCnt++ > 120) {
  102.             System.gc();
  103.             this.garbageCnt = 0;
  104.          }
  105.       }
  106.  
  107.    }
  108.  
  109.    public boolean mouseDown(Event var1, int var2, int var3) {
  110.       this.m_tAnimate = !this.m_tAnimate;
  111.       return true;
  112.    }
  113.  
  114.    public void update(Graphics var1) {
  115.       this.paint(var1);
  116.    }
  117.  
  118.    public void paint(Graphics var1) {
  119.       this.paintCnt = 0;
  120.       if (this.screenImage != null) {
  121.          var1.drawImage(this.screenImage, 0, 0, this);
  122.       }
  123.  
  124.    }
  125.  
  126.    private void renderImage() {
  127.       int var8 = 0;
  128.       this.m_alti = (int)((double)240.0F - (double)120.0F * Math.sin((double)this.viewA * 3.1415926 / (double)180.0F));
  129.       this.m_sin1 = (int)((double)1024.0F * Math.sin((double)this.viewA * 3.1415926 / (double)180.0F));
  130.       this.m_cos1 = (int)((double)1024.0F * Math.cos((double)this.viewA * 3.1415926 / (double)180.0F));
  131.       int var7 = this.field_0 * (this.viewA % 360) / 360;
  132.       this.dispz += this.m_cos1 << 3;
  133.       this.dispx += this.m_sin1 << 3;
  134.  
  135.       for(int var11 = (3 * this.m_sh >> 2) + 1; var11 <= this.m_sh; ++var11) {
  136.          this.planePoint(0, var11);
  137.          int var1 = this.xres;
  138.          int var2 = this.yres;
  139.          this.planePoint(this.m_sw - 1, var11);
  140.          int var3 = this.xres;
  141.          int var4 = this.yres;
  142.          int var9 = (var3 - var1) / (this.m_sw - 1);
  143.          int var10 = (var4 - var2) / (this.m_sw - 1);
  144.          var9 = (var9 % (this.field_0 << 10) + (this.field_0 << 10)) % (this.field_0 << 10);
  145.          var10 = (var10 % (this.field_1 << 10) + (this.field_1 << 10)) % (this.field_1 << 10);
  146.  
  147.          for(int var12 = 0; var12 < this.m_sw; ++var12) {
  148.             int var5 = (var1 >> 10) % this.field_0;
  149.             if (var5 < 0) {
  150.                var5 += this.field_0;
  151.             }
  152.  
  153.             int var6 = (var2 >> 10) % this.field_1;
  154.             if (var6 < 0) {
  155.                var6 += this.field_1;
  156.             }
  157.  
  158.             this.screenPixel[var8++] = this.texel[var6 * this.field_0 + var5];
  159.             var1 += var9;
  160.             var2 += var10;
  161.          }
  162.       }
  163.  
  164.       this.screenImage = ((Component)this).createImage(this.screenMem);
  165.    }
  166.  
  167.    private void planePoint(int var1, int var2) {
  168.       double var5 = (double)(var2 << 1) / (double)this.m_sh - (double)1.0F;
  169.       double var7 = (double)this.field_2 * ((double)this.m_alti - var5) / var5;
  170.       double var3 = (double)(var1 - (this.m_sw >> 1)) / (double)this.m_sw;
  171.       double var9 = var3 * (var7 + (double)this.field_2) / (double)this.field_2;
  172.       this.xres = (int)((double)this.m_cos1 * var9 + (double)this.m_sin1 * var7) + this.dispx;
  173.       this.yres = (int)((double)(-this.m_sin1) * var9 + (double)this.m_cos1 * var7) + this.dispz;
  174.    }
  175. }
  176.