home *** CD-ROM | disk | FTP | other *** search
/ PC Online 1997 October / PCO1097.ISO / FilesBBS / WIN95 / IAVAZIP.EXE / DATA.Z / ImageVector.class (.txt) < prev    next >
Encoding:
Java Class File  |  1997-08-18  |  3.4 KB  |  208 lines

  1. package com.sfs.html;
  2.  
  3. import java.awt.Image;
  4. import java.awt.Toolkit;
  5. import java.awt.image.ImageObserver;
  6. import java.awt.image.IndexColorModel;
  7. import java.awt.image.MemoryImageSource;
  8. import java.net.URL;
  9.  
  10. class ImageVector implements ImageObserver {
  11.    private static final int ERR_WIDTH = 50;
  12.    private static final int ERR_HEIGHT = 50;
  13.    // $FF: renamed from: tk java.awt.Toolkit
  14.    private static Toolkit field_0 = Toolkit.getDefaultToolkit();
  15.    private static Image errImg;
  16.    private URL[] dataURL = new URL[100];
  17.    private int[] dataWidth = new int[100];
  18.    private int[] dataHeight = new int[100];
  19.    private Image[] dataImage = new Image[100];
  20.    private int size;
  21.    private int index;
  22.  
  23.    private void changeCapacity(int var1) {
  24.       int[] var2 = new int[var1];
  25.       System.arraycopy(this.dataWidth, 0, var2, 0, this.size);
  26.       this.dataWidth = var2;
  27.       var2 = new int[var1];
  28.       System.arraycopy(this.dataHeight, 0, var2, 0, this.size);
  29.       this.dataHeight = var2;
  30.       URL[] var3 = new URL[var1];
  31.       System.arraycopy(this.dataURL, 0, var3, 0, this.size);
  32.       this.dataURL = var3;
  33.       Image[] var4 = new Image[var1];
  34.       System.arraycopy(this.dataImage, 0, var4, 0, this.size);
  35.       this.dataImage = var4;
  36.    }
  37.  
  38.    protected void reset() {
  39.       this.index = 0;
  40.    }
  41.  
  42.    protected synchronized HtmlImage nextElement() {
  43.       if (this.dataImage[this.index] != null) {
  44.          Image var1 = this.dataImage[this.index];
  45.          int var2;
  46.          int var3;
  47.          if (!this.imageSizeAvailable(var1, this.dataWidth[this.index], this.dataHeight[this.index])) {
  48.             this.dataURL[this.index] = null;
  49.             var2 = 50;
  50.             var3 = 50;
  51.          } else {
  52.             var2 = var1.getWidth((ImageObserver)null);
  53.             var3 = var1.getHeight((ImageObserver)null);
  54.          }
  55.  
  56.          this.dataImage[this.index] = null;
  57.          if (this.dataWidth[this.index] < 0) {
  58.             this.dataWidth[this.index] = var2;
  59.          }
  60.  
  61.          if (this.dataHeight[this.index] < 0) {
  62.             this.dataHeight[this.index] = var3;
  63.          }
  64.       }
  65.  
  66.       Image var5;
  67.       if (this.dataURL[this.index] == null) {
  68.          var5 = errImg;
  69.       } else {
  70.          var5 = field_0.getImage(this.dataURL[this.index]);
  71.       }
  72.  
  73.       field_0.prepareImage(var5, this.dataWidth[this.index], this.dataHeight[this.index], (ImageObserver)null);
  74.       HtmlImage var4 = new HtmlImage(-1, -1, this.dataWidth[this.index], this.dataHeight[this.index], var5);
  75.       ++this.index;
  76.       return var4;
  77.    }
  78.  
  79.    private synchronized boolean imageSizeAvailable(Image var1, int var2, int var3) {
  80.       while(true) {
  81.          try {
  82.             int var4 = field_0.checkImage(var1, var2, var3, this);
  83.             if ((var4 & 192) != 0) {
  84.                return false;
  85.             }
  86.  
  87.             if ((var4 & 3) == 3) {
  88.                return true;
  89.             }
  90.  
  91.             this.wait();
  92.          } catch (InterruptedException var5) {
  93.          }
  94.       }
  95.    }
  96.  
  97.    protected boolean hasMoreElements() {
  98.       return this.index < this.size;
  99.    }
  100.  
  101.    public synchronized boolean imageUpdate(Image var1, int var2, int var3, int var4, int var5, int var6) {
  102.       if ((var2 & 192) != 0) {
  103.          this.notify();
  104.          return true;
  105.       } else {
  106.          var2 = field_0.checkImage(var1, -1, -1, (ImageObserver)null);
  107.          if ((var2 & 3) == 3) {
  108.             this.notify();
  109.             return true;
  110.          } else {
  111.             return false;
  112.          }
  113.       }
  114.    }
  115.  
  116.    protected synchronized void addElement(URL var1, String var2, int var3, int var4) {
  117.       if (this.size == this.dataURL.length) {
  118.          this.changeCapacity(2 * this.size);
  119.       }
  120.  
  121.       this.dataWidth[this.size] = var3;
  122.       this.dataHeight[this.size] = var4;
  123.  
  124.       URL var5;
  125.       Image var6;
  126.       try {
  127.          var5 = new URL(var1, var2);
  128.          var6 = field_0.getImage(new URL(var1, var2));
  129.          field_0.prepareImage(var6, var3, var4, (ImageObserver)null);
  130.       } catch (Exception var7) {
  131.          var5 = null;
  132.          var6 = null;
  133.          if (this.dataWidth[this.size] < 0) {
  134.             this.dataWidth[this.size] = 50;
  135.          }
  136.  
  137.          if (this.dataHeight[this.size] < 0) {
  138.             this.dataHeight[this.size] = 50;
  139.          }
  140.       }
  141.  
  142.       this.dataURL[this.size] = var5;
  143.       this.dataImage[this.size] = var6;
  144.       ++this.size;
  145.    }
  146.  
  147.    static {
  148.       byte[] var0 = new byte[]{-1};
  149.       byte[] var1 = new byte[]{0};
  150.       byte[] var2 = new byte[]{0};
  151.       IndexColorModel var3 = new IndexColorModel(1, 1, var0, var1, var2);
  152.       byte[] var4 = new byte[2500];
  153.       int var5 = 0;
  154.  
  155.       do {
  156.          var4[var5] = 0;
  157.          ++var5;
  158.       } while(var5 < 2500);
  159.  
  160.       errImg = field_0.createImage(new MemoryImageSource(50, 50, var3, var4, 0, 50));
  161.       field_0.prepareImage(errImg, -1, -1, (ImageObserver)null);
  162.    }
  163.  
  164.    protected void trimToSize() {
  165.       if (this.size < this.dataURL.length) {
  166.          this.changeCapacity(this.size);
  167.       }
  168.  
  169.    }
  170.  
  171.    private String statusString(int var1) {
  172.       String var2 = "";
  173.       if ((var1 & 128) != 0) {
  174.          var2 = var2 + "ABORT ";
  175.       }
  176.  
  177.       if ((var1 & 32) != 0) {
  178.          var2 = var2 + "ALLBITS ";
  179.       }
  180.  
  181.       if ((var1 & 64) != 0) {
  182.          var2 = var2 + "ERROR ";
  183.       }
  184.  
  185.       if ((var1 & 16) != 0) {
  186.          var2 = var2 + "FRAMEBITS ";
  187.       }
  188.  
  189.       if ((var1 & 2) != 0) {
  190.          var2 = var2 + "HEIGHT ";
  191.       }
  192.  
  193.       if ((var1 & 4) != 0) {
  194.          var2 = var2 + "PROPERTIES ";
  195.       }
  196.  
  197.       if ((var1 & 8) != 0) {
  198.          var2 = var2 + "SOMEBITS ";
  199.       }
  200.  
  201.       if ((var1 & 1) != 0) {
  202.          var2 = var2 + "WIDTH ";
  203.       }
  204.  
  205.       return var2 + var1;
  206.    }
  207. }
  208.