home *** CD-ROM | disk | FTP | other *** search
/ PC Online 1997 October / PCO1097.ISO / FilesBBS / FREI / FSCROLL.EXE / FunScrollFade.class (.txt) < prev    next >
Encoding:
Java Class File  |  1997-09-02  |  2.6 KB  |  160 lines

  1. import java.awt.Graphics;
  2. import java.awt.Image;
  3. import java.awt.image.ImageObserver;
  4. import java.awt.image.MemoryImageSource;
  5. import java.awt.image.PixelGrabber;
  6.  
  7. public class FunScrollFade {
  8.    static final int FRAMES = 7;
  9.    static final int TOTAL_FRAMES = 8;
  10.    static final int MULTIPLIER = 6102575;
  11.    int[][] random;
  12.    FunScroll applet;
  13.    int pixels_per_frame;
  14.    int pixels_per_image;
  15.    int image_w;
  16.    int image_h;
  17.    int number_of_frames = 7;
  18.    int frameIndex;
  19.    Image[] images;
  20.    int[] work_pixels;
  21.    int[] from_pixels;
  22.    int[] to_pixels;
  23.  
  24.    public FunScrollFade(FunScroll var1, int var2, int var3) {
  25.       this.applet = var1;
  26.       this.image_w = var2;
  27.       this.image_h = var3;
  28.       this.pixels_per_image = this.image_w * this.image_h;
  29.       this.frameIndex = 0;
  30.       this.initRandomArray();
  31.       this.from_pixels = null;
  32.       this.to_pixels = null;
  33.       this.work_pixels = null;
  34.       this.images = new Image[8];
  35.    }
  36.  
  37.    public void initToImage(Image var1) {
  38.       if (this.to_pixels == null) {
  39.          this.to_pixels = new int[this.pixels_per_image];
  40.          PixelGrabber var2 = new PixelGrabber(var1.getSource(), 0, 0, this.image_w, this.image_h, this.to_pixels, 0, this.image_w);
  41.  
  42.          try {
  43.             var2.grabPixels();
  44.          } catch (InterruptedException var3) {
  45.          }
  46.       }
  47.    }
  48.  
  49.    public void initFromImage(Image var1) {
  50.       if (this.from_pixels == null) {
  51.          this.from_pixels = new int[this.pixels_per_image];
  52.          PixelGrabber var2 = new PixelGrabber(var1.getSource(), 0, 0, this.image_w, this.image_h, this.from_pixels, 0, this.image_w);
  53.  
  54.          try {
  55.             var2.grabPixels();
  56.          } catch (InterruptedException var3) {
  57.             return;
  58.          }
  59.  
  60.          this.initWorkPixels();
  61.       }
  62.  
  63.    }
  64.  
  65.    public Image getFromImage() {
  66.       Image var1 = this.applet.createImage(new MemoryImageSource(this.image_w, this.image_h, this.from_pixels, 0, this.image_w));
  67.       this.applet.prepareImage(var1, (ImageObserver)null);
  68.       return var1;
  69.    }
  70.  
  71.    public void resetFrameIndex() {
  72.       this.frameIndex = 0;
  73.    }
  74.  
  75.    public void drawFrame(Graphics var1) {
  76.       int var2 = this.frameIndex;
  77.       if (this.frameIndex > this.number_of_frames) {
  78.          var2 = this.number_of_frames;
  79.       }
  80.  
  81.       if (this.images[var2] == null) {
  82.          this.images[var2] = this.createImage(var2);
  83.       }
  84.  
  85.       if (this.images[var2] != null) {
  86.          var1.drawImage(this.images[var2], 0, 0, (ImageObserver)null);
  87.       }
  88.  
  89.       ++this.frameIndex;
  90.    }
  91.  
  92.    public boolean done() {
  93.       return this.frameIndex > this.number_of_frames;
  94.    }
  95.  
  96.    public void initWorkPixels() {
  97.       this.work_pixels = new int[this.pixels_per_image];
  98.       System.arraycopy(this.from_pixels, 0, this.work_pixels, 0, this.pixels_per_image);
  99.    }
  100.  
  101.    public Image createImage(int var1) {
  102.       for(int var2 = 0; var2 < this.pixels_per_frame; ++var2) {
  103.          this.work_pixels[this.random[var1][var2]] = this.to_pixels[this.random[var1][var2]];
  104.       }
  105.  
  106.       Image var3 = this.applet.createImage(new MemoryImageSource(this.image_w, this.image_h, this.work_pixels, 0, this.image_w));
  107.       this.applet.prepareImage(var3, (ImageObserver)null);
  108.       return var3;
  109.    }
  110.  
  111.    void initRandomArray() {
  112.       this.pixels_per_frame = this.pixels_per_image / 8;
  113.       this.random = new int[8][this.pixels_per_frame];
  114.       int[] var1 = new int[8];
  115.  
  116.       for(int var2 = 0; var2 < 8; ++var2) {
  117.          var1[var2] = 0;
  118.       }
  119.  
  120.       int var4 = this.pixels_per_frame * 8;
  121.       int var5 = (int)System.currentTimeMillis();
  122.  
  123.       int var6;
  124.       for(var6 = 10; (this.pixels_per_frame % var6 > 0 || this.image_h % var6 == 0) && var6 > 1; --var6) {
  125.       }
  126.  
  127.       int var7 = this.pixels_per_frame / var6;
  128.       int var8 = var4 / var6;
  129.  
  130.       int var3;
  131.       for(int var9 = 0; var9 < var7; this.random[var3][var1[var3]++] = var9++) {
  132.          var5 *= 6102575;
  133.          var3 = var5 >>> 29;
  134.       }
  135.  
  136.       var5 += 20560;
  137.  
  138.       for(int var10 = var7; var10 < var8; this.random[var3][var1[var3]++] = var10++) {
  139.          var5 *= 6102575;
  140.          var3 = var5 >>> 29;
  141.  
  142.          while(var1[var3] >= var7) {
  143.             ++var3;
  144.             if (var3 >= 8) {
  145.                var3 = 0;
  146.             }
  147.          }
  148.       }
  149.  
  150.       for(int var11 = 0; var11 < 7; ++var11) {
  151.          for(int var12 = var7; var12 < this.pixels_per_frame; var12 += var7) {
  152.             for(int var13 = 0; var13 < var7; ++var13) {
  153.                this.random[var11][var12 + var13] = this.random[var11][var13] + var12 * 8;
  154.             }
  155.          }
  156.       }
  157.  
  158.    }
  159. }
  160.