home *** CD-ROM | disk | FTP | other *** search
/ S283 Planetary Science &n…he Search for Life DVD 2 / DVD-ROM.iso / install / jre1_3 / lib / rt.jar / java / awt / image / MemoryImageSource.class (.txt) < prev    next >
Encoding:
Java Class File  |  1979-12-31  |  3.6 KB  |  230 lines

  1. package java.awt.image;
  2.  
  3. import java.util.Enumeration;
  4. import java.util.Hashtable;
  5. import java.util.Vector;
  6.  
  7. public class MemoryImageSource implements ImageProducer {
  8.    int width;
  9.    int height;
  10.    ColorModel model;
  11.    Object pixels;
  12.    int pixeloffset;
  13.    int pixelscan;
  14.    Hashtable properties;
  15.    Vector theConsumers = new Vector();
  16.    boolean animating;
  17.    boolean fullbuffers;
  18.  
  19.    public MemoryImageSource(int var1, int var2, ColorModel var3, byte[] var4, int var5, int var6) {
  20.       this.initialize(var1, var2, var3, var4, var5, var6, (Hashtable)null);
  21.    }
  22.  
  23.    public MemoryImageSource(int var1, int var2, ColorModel var3, byte[] var4, int var5, int var6, Hashtable var7) {
  24.       this.initialize(var1, var2, var3, var4, var5, var6, var7);
  25.    }
  26.  
  27.    public MemoryImageSource(int var1, int var2, ColorModel var3, int[] var4, int var5, int var6) {
  28.       this.initialize(var1, var2, var3, var4, var5, var6, (Hashtable)null);
  29.    }
  30.  
  31.    public MemoryImageSource(int var1, int var2, ColorModel var3, int[] var4, int var5, int var6, Hashtable var7) {
  32.       this.initialize(var1, var2, var3, var4, var5, var6, var7);
  33.    }
  34.  
  35.    private void initialize(int var1, int var2, ColorModel var3, Object var4, int var5, int var6, Hashtable var7) {
  36.       this.width = var1;
  37.       this.height = var2;
  38.       this.model = var3;
  39.       this.pixels = var4;
  40.       this.pixeloffset = var5;
  41.       this.pixelscan = var6;
  42.       if (var7 == null) {
  43.          var7 = new Hashtable();
  44.       }
  45.  
  46.       this.properties = var7;
  47.    }
  48.  
  49.    public MemoryImageSource(int var1, int var2, int[] var3, int var4, int var5) {
  50.       this.initialize(var1, var2, ColorModel.getRGBdefault(), var3, var4, var5, (Hashtable)null);
  51.    }
  52.  
  53.    public MemoryImageSource(int var1, int var2, int[] var3, int var4, int var5, Hashtable var6) {
  54.       this.initialize(var1, var2, ColorModel.getRGBdefault(), var3, var4, var5, var6);
  55.    }
  56.  
  57.    public synchronized void addConsumer(ImageConsumer var1) {
  58.       if (!this.theConsumers.contains(var1)) {
  59.          this.theConsumers.addElement(var1);
  60.  
  61.          try {
  62.             this.initConsumer(var1);
  63.             this.sendPixels(var1, 0, 0, this.width, this.height);
  64.             if (this.isConsumer(var1)) {
  65.                var1.imageComplete(this.animating ? 2 : 3);
  66.                if (!this.animating && this.isConsumer(var1)) {
  67.                   var1.imageComplete(1);
  68.                   this.removeConsumer(var1);
  69.                }
  70.             }
  71.          } catch (Exception var3) {
  72.             if (this.isConsumer(var1)) {
  73.                var1.imageComplete(1);
  74.             }
  75.          }
  76.  
  77.       }
  78.    }
  79.  
  80.    public synchronized boolean isConsumer(ImageConsumer var1) {
  81.       return this.theConsumers.contains(var1);
  82.    }
  83.  
  84.    public synchronized void removeConsumer(ImageConsumer var1) {
  85.       this.theConsumers.removeElement(var1);
  86.    }
  87.  
  88.    public void startProduction(ImageConsumer var1) {
  89.       this.addConsumer(var1);
  90.    }
  91.  
  92.    public void requestTopDownLeftRightResend(ImageConsumer var1) {
  93.    }
  94.  
  95.    public synchronized void setAnimated(boolean var1) {
  96.       this.animating = var1;
  97.       if (!this.animating) {
  98.          Enumeration var2 = this.theConsumers.elements();
  99.  
  100.          while(var2.hasMoreElements()) {
  101.             ImageConsumer var3 = (ImageConsumer)var2.nextElement();
  102.             var3.imageComplete(3);
  103.             if (this.isConsumer(var3)) {
  104.                var3.imageComplete(1);
  105.             }
  106.          }
  107.  
  108.          this.theConsumers.removeAllElements();
  109.       }
  110.  
  111.    }
  112.  
  113.    public synchronized void setFullBufferUpdates(boolean var1) {
  114.       if (this.fullbuffers != var1) {
  115.          this.fullbuffers = var1;
  116.          if (this.animating) {
  117.             Enumeration var2 = this.theConsumers.elements();
  118.  
  119.             while(var2.hasMoreElements()) {
  120.                ImageConsumer var3 = (ImageConsumer)var2.nextElement();
  121.                var3.setHints(var1 ? 6 : 1);
  122.             }
  123.          }
  124.  
  125.       }
  126.    }
  127.  
  128.    public void newPixels() {
  129.       this.newPixels(0, 0, this.width, this.height, true);
  130.    }
  131.  
  132.    public synchronized void newPixels(int var1, int var2, int var3, int var4) {
  133.       this.newPixels(var1, var2, var3, var4, true);
  134.    }
  135.  
  136.    public synchronized void newPixels(int var1, int var2, int var3, int var4, boolean var5) {
  137.       if (this.animating) {
  138.          if (this.fullbuffers) {
  139.             var2 = 0;
  140.             var1 = 0;
  141.             var3 = this.width;
  142.             var4 = this.height;
  143.          } else {
  144.             if (var1 < 0) {
  145.                var3 += var1;
  146.                var1 = 0;
  147.             }
  148.  
  149.             if (var1 + var3 > this.width) {
  150.                var3 = this.width - var1;
  151.             }
  152.  
  153.             if (var2 < 0) {
  154.                var4 += var2;
  155.                var2 = 0;
  156.             }
  157.  
  158.             if (var2 + var4 > this.height) {
  159.                var4 = this.height - var2;
  160.             }
  161.          }
  162.  
  163.          if ((var3 <= 0 || var4 <= 0) && !var5) {
  164.             return;
  165.          }
  166.  
  167.          Enumeration var6 = this.theConsumers.elements();
  168.  
  169.          while(var6.hasMoreElements()) {
  170.             ImageConsumer var7 = (ImageConsumer)var6.nextElement();
  171.             if (var3 > 0 && var4 > 0) {
  172.                this.sendPixels(var7, var1, var2, var3, var4);
  173.             }
  174.  
  175.             if (var5 && this.isConsumer(var7)) {
  176.                var7.imageComplete(2);
  177.             }
  178.          }
  179.       }
  180.  
  181.    }
  182.  
  183.    public synchronized void newPixels(byte[] var1, ColorModel var2, int var3, int var4) {
  184.       this.pixels = var1;
  185.       this.model = var2;
  186.       this.pixeloffset = var3;
  187.       this.pixelscan = var4;
  188.       this.newPixels();
  189.    }
  190.  
  191.    public synchronized void newPixels(int[] var1, ColorModel var2, int var3, int var4) {
  192.       this.pixels = var1;
  193.       this.model = var2;
  194.       this.pixeloffset = var3;
  195.       this.pixelscan = var4;
  196.       this.newPixels();
  197.    }
  198.  
  199.    private void initConsumer(ImageConsumer var1) {
  200.       if (this.isConsumer(var1)) {
  201.          var1.setDimensions(this.width, this.height);
  202.       }
  203.  
  204.       if (this.isConsumer(var1)) {
  205.          var1.setProperties(this.properties);
  206.       }
  207.  
  208.       if (this.isConsumer(var1)) {
  209.          var1.setColorModel(this.model);
  210.       }
  211.  
  212.       if (this.isConsumer(var1)) {
  213.          var1.setHints(this.animating ? (this.fullbuffers ? 6 : 1) : 30);
  214.       }
  215.  
  216.    }
  217.  
  218.    private void sendPixels(ImageConsumer var1, int var2, int var3, int var4, int var5) {
  219.       int var6 = this.pixeloffset + this.pixelscan * var3 + var2;
  220.       if (this.isConsumer(var1)) {
  221.          if (this.pixels instanceof byte[]) {
  222.             var1.setPixels(var2, var3, var4, var5, this.model, (byte[])this.pixels, var6, this.pixelscan);
  223.          } else {
  224.             var1.setPixels(var2, var3, var4, var5, this.model, (int[])this.pixels, var6, this.pixelscan);
  225.          }
  226.       }
  227.  
  228.    }
  229. }
  230.