home *** CD-ROM | disk | FTP | other *** search
/ Sky at Night 2007 June / SAN CD 6-2007 CD-ROM 25.iso / pc / Software / AstroGrav_Win / Java / jre1.6.0 / lib / rt.jar / javax / imageio / ImageReader.class (.txt) < prev    next >
Encoding:
Java Class File  |  2006-11-29  |  15.1 KB  |  860 lines

  1. package javax.imageio;
  2.  
  3. import java.awt.Rectangle;
  4. import java.awt.image.BufferedImage;
  5. import java.awt.image.Raster;
  6. import java.awt.image.RenderedImage;
  7. import java.io.IOException;
  8. import java.security.AccessController;
  9. import java.util.ArrayList;
  10. import java.util.Iterator;
  11. import java.util.List;
  12. import java.util.Locale;
  13. import java.util.MissingResourceException;
  14. import java.util.ResourceBundle;
  15. import java.util.Set;
  16. import javax.imageio.event.IIOReadProgressListener;
  17. import javax.imageio.event.IIOReadUpdateListener;
  18. import javax.imageio.event.IIOReadWarningListener;
  19. import javax.imageio.metadata.IIOMetadata;
  20. import javax.imageio.spi.ImageReaderSpi;
  21. import javax.imageio.stream.ImageInputStream;
  22.  
  23. public abstract class ImageReader {
  24.    protected ImageReaderSpi originatingProvider;
  25.    protected Object input = null;
  26.    protected boolean seekForwardOnly = false;
  27.    protected boolean ignoreMetadata = false;
  28.    protected int minIndex = 0;
  29.    protected Locale[] availableLocales = null;
  30.    protected Locale locale = null;
  31.    protected List<IIOReadWarningListener> warningListeners = null;
  32.    protected List<Locale> warningLocales = null;
  33.    protected List<IIOReadProgressListener> progressListeners = null;
  34.    protected List<IIOReadUpdateListener> updateListeners = null;
  35.    private boolean abortFlag = false;
  36.  
  37.    protected ImageReader(ImageReaderSpi var1) {
  38.       this.originatingProvider = var1;
  39.    }
  40.  
  41.    public String getFormatName() throws IOException {
  42.       return this.originatingProvider.getFormatNames()[0];
  43.    }
  44.  
  45.    public ImageReaderSpi getOriginatingProvider() {
  46.       return this.originatingProvider;
  47.    }
  48.  
  49.    public void setInput(Object var1, boolean var2, boolean var3) {
  50.       if (var1 != null) {
  51.          boolean var4 = false;
  52.          if (this.originatingProvider != null) {
  53.             Class[] var5 = this.originatingProvider.getInputTypes();
  54.  
  55.             for(int var6 = 0; var6 < var5.length; ++var6) {
  56.                if (var5[var6].isInstance(var1)) {
  57.                   var4 = true;
  58.                   break;
  59.                }
  60.             }
  61.          } else if (var1 instanceof ImageInputStream) {
  62.             var4 = true;
  63.          }
  64.  
  65.          if (!var4) {
  66.             throw new IllegalArgumentException("Incorrect input type!");
  67.          }
  68.  
  69.          this.seekForwardOnly = var2;
  70.          this.ignoreMetadata = var3;
  71.          this.minIndex = 0;
  72.       }
  73.  
  74.       this.input = var1;
  75.    }
  76.  
  77.    public void setInput(Object var1, boolean var2) {
  78.       this.setInput(var1, var2, false);
  79.    }
  80.  
  81.    public void setInput(Object var1) {
  82.       this.setInput(var1, false, false);
  83.    }
  84.  
  85.    public Object getInput() {
  86.       return this.input;
  87.    }
  88.  
  89.    public boolean isSeekForwardOnly() {
  90.       return this.seekForwardOnly;
  91.    }
  92.  
  93.    public boolean isIgnoringMetadata() {
  94.       return this.ignoreMetadata;
  95.    }
  96.  
  97.    public int getMinIndex() {
  98.       return this.minIndex;
  99.    }
  100.  
  101.    public Locale[] getAvailableLocales() {
  102.       return this.availableLocales == null ? null : (Locale[])((Locale[])this.availableLocales.clone());
  103.    }
  104.  
  105.    public void setLocale(Locale var1) {
  106.       if (var1 != null) {
  107.          Locale[] var2 = this.getAvailableLocales();
  108.          boolean var3 = false;
  109.          if (var2 != null) {
  110.             for(int var4 = 0; var4 < var2.length; ++var4) {
  111.                if (var1.equals(var2[var4])) {
  112.                   var3 = true;
  113.                   break;
  114.                }
  115.             }
  116.          }
  117.  
  118.          if (!var3) {
  119.             throw new IllegalArgumentException("Invalid locale!");
  120.          }
  121.       }
  122.  
  123.       this.locale = var1;
  124.    }
  125.  
  126.    public Locale getLocale() {
  127.       return this.locale;
  128.    }
  129.  
  130.    public abstract int getNumImages(boolean var1) throws IOException;
  131.  
  132.    public abstract int getWidth(int var1) throws IOException;
  133.  
  134.    public abstract int getHeight(int var1) throws IOException;
  135.  
  136.    public boolean isRandomAccessEasy(int var1) throws IOException {
  137.       return false;
  138.    }
  139.  
  140.    public float getAspectRatio(int var1) throws IOException {
  141.       return (float)this.getWidth(var1) / (float)this.getHeight(var1);
  142.    }
  143.  
  144.    public ImageTypeSpecifier getRawImageType(int var1) throws IOException {
  145.       return (ImageTypeSpecifier)this.getImageTypes(var1).next();
  146.    }
  147.  
  148.    public abstract Iterator<ImageTypeSpecifier> getImageTypes(int var1) throws IOException;
  149.  
  150.    public ImageReadParam getDefaultReadParam() {
  151.       return new ImageReadParam();
  152.    }
  153.  
  154.    public abstract IIOMetadata getStreamMetadata() throws IOException;
  155.  
  156.    public IIOMetadata getStreamMetadata(String var1, Set<String> var2) throws IOException {
  157.       return this.getMetadata(var1, var2, true, 0);
  158.    }
  159.  
  160.    private IIOMetadata getMetadata(String var1, Set var2, boolean var3, int var4) throws IOException {
  161.       if (var1 == null) {
  162.          throw new IllegalArgumentException("formatName == null!");
  163.       } else if (var2 == null) {
  164.          throw new IllegalArgumentException("nodeNames == null!");
  165.       } else {
  166.          IIOMetadata var5 = var3 ? this.getStreamMetadata() : this.getImageMetadata(var4);
  167.          if (var5 != null) {
  168.             if (var5.isStandardMetadataFormatSupported() && var1.equals("javax_imageio_1.0")) {
  169.                return var5;
  170.             }
  171.  
  172.             String var6 = var5.getNativeMetadataFormatName();
  173.             if (var6 != null && var1.equals(var6)) {
  174.                return var5;
  175.             }
  176.  
  177.             String[] var7 = var5.getExtraMetadataFormatNames();
  178.             if (var7 != null) {
  179.                for(int var8 = 0; var8 < var7.length; ++var8) {
  180.                   if (var1.equals(var7[var8])) {
  181.                      return var5;
  182.                   }
  183.                }
  184.             }
  185.          }
  186.  
  187.          return null;
  188.       }
  189.    }
  190.  
  191.    public abstract IIOMetadata getImageMetadata(int var1) throws IOException;
  192.  
  193.    public IIOMetadata getImageMetadata(int var1, String var2, Set<String> var3) throws IOException {
  194.       return this.getMetadata(var2, var3, false, var1);
  195.    }
  196.  
  197.    public BufferedImage read(int var1) throws IOException {
  198.       return this.read(var1, (ImageReadParam)null);
  199.    }
  200.  
  201.    public abstract BufferedImage read(int var1, ImageReadParam var2) throws IOException;
  202.  
  203.    public IIOImage readAll(int var1, ImageReadParam var2) throws IOException {
  204.       if (var1 < this.getMinIndex()) {
  205.          throw new IndexOutOfBoundsException("imageIndex < getMinIndex()!");
  206.       } else {
  207.          BufferedImage var3 = this.read(var1, var2);
  208.          ArrayList var4 = null;
  209.          int var5 = this.getNumThumbnails(var1);
  210.          if (var5 > 0) {
  211.             var4 = new ArrayList();
  212.  
  213.             for(int var6 = 0; var6 < var5; ++var6) {
  214.                var4.add(this.readThumbnail(var1, var6));
  215.             }
  216.          }
  217.  
  218.          IIOMetadata var7 = this.getImageMetadata(var1);
  219.          return new IIOImage(var3, var4, var7);
  220.       }
  221.    }
  222.  
  223.    public Iterator<IIOImage> readAll(Iterator<? extends ImageReadParam> var1) throws IOException {
  224.       ArrayList var2 = new ArrayList();
  225.       int var3 = this.getMinIndex();
  226.       this.processSequenceStarted(var3);
  227.  
  228.       while(true) {
  229.          ImageReadParam var4 = null;
  230.          if (var1 != null && var1.hasNext()) {
  231.             Object var5 = var1.next();
  232.             if (var5 != null) {
  233.                if (!(var5 instanceof ImageReadParam)) {
  234.                   throw new IllegalArgumentException("Non-ImageReadParam supplied as part of params!");
  235.                }
  236.  
  237.                var4 = (ImageReadParam)var5;
  238.             }
  239.          }
  240.  
  241.          Object var11 = null;
  242.  
  243.          try {
  244.             var12 = this.read(var3, var4);
  245.          } catch (IndexOutOfBoundsException var10) {
  246.             this.processSequenceComplete();
  247.             return var2.iterator();
  248.          }
  249.  
  250.          ArrayList var6 = null;
  251.          int var7 = this.getNumThumbnails(var3);
  252.          if (var7 > 0) {
  253.             var6 = new ArrayList();
  254.  
  255.             for(int var8 = 0; var8 < var7; ++var8) {
  256.                var6.add(this.readThumbnail(var3, var8));
  257.             }
  258.          }
  259.  
  260.          IIOMetadata var13 = this.getImageMetadata(var3);
  261.          IIOImage var9 = new IIOImage(var12, var6, var13);
  262.          var2.add(var9);
  263.          ++var3;
  264.       }
  265.    }
  266.  
  267.    public boolean canReadRaster() {
  268.       return false;
  269.    }
  270.  
  271.    public Raster readRaster(int var1, ImageReadParam var2) throws IOException {
  272.       throw new UnsupportedOperationException("readRaster not supported!");
  273.    }
  274.  
  275.    public boolean isImageTiled(int var1) throws IOException {
  276.       return false;
  277.    }
  278.  
  279.    public int getTileWidth(int var1) throws IOException {
  280.       return this.getWidth(var1);
  281.    }
  282.  
  283.    public int getTileHeight(int var1) throws IOException {
  284.       return this.getHeight(var1);
  285.    }
  286.  
  287.    public int getTileGridXOffset(int var1) throws IOException {
  288.       return 0;
  289.    }
  290.  
  291.    public int getTileGridYOffset(int var1) throws IOException {
  292.       return 0;
  293.    }
  294.  
  295.    public BufferedImage readTile(int var1, int var2, int var3) throws IOException {
  296.       if (var2 == 0 && var3 == 0) {
  297.          return this.read(var1);
  298.       } else {
  299.          throw new IllegalArgumentException("Invalid tile indices");
  300.       }
  301.    }
  302.  
  303.    public Raster readTileRaster(int var1, int var2, int var3) throws IOException {
  304.       if (!this.canReadRaster()) {
  305.          throw new UnsupportedOperationException("readTileRaster not supported!");
  306.       } else if (var2 == 0 && var3 == 0) {
  307.          return this.readRaster(var1, (ImageReadParam)null);
  308.       } else {
  309.          throw new IllegalArgumentException("Invalid tile indices");
  310.       }
  311.    }
  312.  
  313.    public RenderedImage readAsRenderedImage(int var1, ImageReadParam var2) throws IOException {
  314.       return this.read(var1, var2);
  315.    }
  316.  
  317.    public boolean readerSupportsThumbnails() {
  318.       return false;
  319.    }
  320.  
  321.    public boolean hasThumbnails(int var1) throws IOException {
  322.       return this.getNumThumbnails(var1) > 0;
  323.    }
  324.  
  325.    public int getNumThumbnails(int var1) throws IOException {
  326.       return 0;
  327.    }
  328.  
  329.    public int getThumbnailWidth(int var1, int var2) throws IOException {
  330.       return this.readThumbnail(var1, var2).getWidth();
  331.    }
  332.  
  333.    public int getThumbnailHeight(int var1, int var2) throws IOException {
  334.       return this.readThumbnail(var1, var2).getHeight();
  335.    }
  336.  
  337.    public BufferedImage readThumbnail(int var1, int var2) throws IOException {
  338.       throw new UnsupportedOperationException("Thumbnails not supported!");
  339.    }
  340.  
  341.    public synchronized void abort() {
  342.       this.abortFlag = true;
  343.    }
  344.  
  345.    protected synchronized boolean abortRequested() {
  346.       return this.abortFlag;
  347.    }
  348.  
  349.    protected synchronized void clearAbortRequest() {
  350.       this.abortFlag = false;
  351.    }
  352.  
  353.    static List addToList(List var0, Object var1) {
  354.       if (var0 == null) {
  355.          var0 = new ArrayList();
  356.       }
  357.  
  358.       ((List)var0).add(var1);
  359.       return (List)var0;
  360.    }
  361.  
  362.    static List removeFromList(List var0, Object var1) {
  363.       if (var0 == null) {
  364.          return var0;
  365.       } else {
  366.          var0.remove(var1);
  367.          if (var0.size() == 0) {
  368.             var0 = null;
  369.          }
  370.  
  371.          return var0;
  372.       }
  373.    }
  374.  
  375.    public void addIIOReadWarningListener(IIOReadWarningListener var1) {
  376.       if (var1 != null) {
  377.          this.warningListeners = addToList(this.warningListeners, var1);
  378.          this.warningLocales = addToList(this.warningLocales, this.getLocale());
  379.       }
  380.    }
  381.  
  382.    public void removeIIOReadWarningListener(IIOReadWarningListener var1) {
  383.       if (var1 != null && this.warningListeners != null) {
  384.          int var2 = this.warningListeners.indexOf(var1);
  385.          if (var2 != -1) {
  386.             this.warningListeners.remove(var2);
  387.             this.warningLocales.remove(var2);
  388.             if (this.warningListeners.size() == 0) {
  389.                this.warningListeners = null;
  390.                this.warningLocales = null;
  391.             }
  392.          }
  393.  
  394.       }
  395.    }
  396.  
  397.    public void removeAllIIOReadWarningListeners() {
  398.       this.warningListeners = null;
  399.       this.warningLocales = null;
  400.    }
  401.  
  402.    public void addIIOReadProgressListener(IIOReadProgressListener var1) {
  403.       if (var1 != null) {
  404.          this.progressListeners = addToList(this.progressListeners, var1);
  405.       }
  406.    }
  407.  
  408.    public void removeIIOReadProgressListener(IIOReadProgressListener var1) {
  409.       if (var1 != null && this.progressListeners != null) {
  410.          this.progressListeners = removeFromList(this.progressListeners, var1);
  411.       }
  412.    }
  413.  
  414.    public void removeAllIIOReadProgressListeners() {
  415.       this.progressListeners = null;
  416.    }
  417.  
  418.    public void addIIOReadUpdateListener(IIOReadUpdateListener var1) {
  419.       if (var1 != null) {
  420.          this.updateListeners = addToList(this.updateListeners, var1);
  421.       }
  422.    }
  423.  
  424.    public void removeIIOReadUpdateListener(IIOReadUpdateListener var1) {
  425.       if (var1 != null && this.updateListeners != null) {
  426.          this.updateListeners = removeFromList(this.updateListeners, var1);
  427.       }
  428.    }
  429.  
  430.    public void removeAllIIOReadUpdateListeners() {
  431.       this.updateListeners = null;
  432.    }
  433.  
  434.    protected void processSequenceStarted(int var1) {
  435.       if (this.progressListeners != null) {
  436.          int var2 = this.progressListeners.size();
  437.  
  438.          for(int var3 = 0; var3 < var2; ++var3) {
  439.             IIOReadProgressListener var4 = (IIOReadProgressListener)this.progressListeners.get(var3);
  440.             var4.sequenceStarted(this, var1);
  441.          }
  442.  
  443.       }
  444.    }
  445.  
  446.    protected void processSequenceComplete() {
  447.       if (this.progressListeners != null) {
  448.          int var1 = this.progressListeners.size();
  449.  
  450.          for(int var2 = 0; var2 < var1; ++var2) {
  451.             IIOReadProgressListener var3 = (IIOReadProgressListener)this.progressListeners.get(var2);
  452.             var3.sequenceComplete(this);
  453.          }
  454.  
  455.       }
  456.    }
  457.  
  458.    protected void processImageStarted(int var1) {
  459.       if (this.progressListeners != null) {
  460.          int var2 = this.progressListeners.size();
  461.  
  462.          for(int var3 = 0; var3 < var2; ++var3) {
  463.             IIOReadProgressListener var4 = (IIOReadProgressListener)this.progressListeners.get(var3);
  464.             var4.imageStarted(this, var1);
  465.          }
  466.  
  467.       }
  468.    }
  469.  
  470.    protected void processImageProgress(float var1) {
  471.       if (this.progressListeners != null) {
  472.          int var2 = this.progressListeners.size();
  473.  
  474.          for(int var3 = 0; var3 < var2; ++var3) {
  475.             IIOReadProgressListener var4 = (IIOReadProgressListener)this.progressListeners.get(var3);
  476.             var4.imageProgress(this, var1);
  477.          }
  478.  
  479.       }
  480.    }
  481.  
  482.    protected void processImageComplete() {
  483.       if (this.progressListeners != null) {
  484.          int var1 = this.progressListeners.size();
  485.  
  486.          for(int var2 = 0; var2 < var1; ++var2) {
  487.             IIOReadProgressListener var3 = (IIOReadProgressListener)this.progressListeners.get(var2);
  488.             var3.imageComplete(this);
  489.          }
  490.  
  491.       }
  492.    }
  493.  
  494.    protected void processThumbnailStarted(int var1, int var2) {
  495.       if (this.progressListeners != null) {
  496.          int var3 = this.progressListeners.size();
  497.  
  498.          for(int var4 = 0; var4 < var3; ++var4) {
  499.             IIOReadProgressListener var5 = (IIOReadProgressListener)this.progressListeners.get(var4);
  500.             var5.thumbnailStarted(this, var1, var2);
  501.          }
  502.  
  503.       }
  504.    }
  505.  
  506.    protected void processThumbnailProgress(float var1) {
  507.       if (this.progressListeners != null) {
  508.          int var2 = this.progressListeners.size();
  509.  
  510.          for(int var3 = 0; var3 < var2; ++var3) {
  511.             IIOReadProgressListener var4 = (IIOReadProgressListener)this.progressListeners.get(var3);
  512.             var4.thumbnailProgress(this, var1);
  513.          }
  514.  
  515.       }
  516.    }
  517.  
  518.    protected void processThumbnailComplete() {
  519.       if (this.progressListeners != null) {
  520.          int var1 = this.progressListeners.size();
  521.  
  522.          for(int var2 = 0; var2 < var1; ++var2) {
  523.             IIOReadProgressListener var3 = (IIOReadProgressListener)this.progressListeners.get(var2);
  524.             var3.thumbnailComplete(this);
  525.          }
  526.  
  527.       }
  528.    }
  529.  
  530.    protected void processReadAborted() {
  531.       if (this.progressListeners != null) {
  532.          int var1 = this.progressListeners.size();
  533.  
  534.          for(int var2 = 0; var2 < var1; ++var2) {
  535.             IIOReadProgressListener var3 = (IIOReadProgressListener)this.progressListeners.get(var2);
  536.             var3.readAborted(this);
  537.          }
  538.  
  539.       }
  540.    }
  541.  
  542.    protected void processPassStarted(BufferedImage var1, int var2, int var3, int var4, int var5, int var6, int var7, int var8, int[] var9) {
  543.       if (this.updateListeners != null) {
  544.          int var10 = this.updateListeners.size();
  545.  
  546.          for(int var11 = 0; var11 < var10; ++var11) {
  547.             IIOReadUpdateListener var12 = (IIOReadUpdateListener)this.updateListeners.get(var11);
  548.             var12.passStarted(this, var1, var2, var3, var4, var5, var6, var7, var8, var9);
  549.          }
  550.  
  551.       }
  552.    }
  553.  
  554.    protected void processImageUpdate(BufferedImage var1, int var2, int var3, int var4, int var5, int var6, int var7, int[] var8) {
  555.       if (this.updateListeners != null) {
  556.          int var9 = this.updateListeners.size();
  557.  
  558.          for(int var10 = 0; var10 < var9; ++var10) {
  559.             IIOReadUpdateListener var11 = (IIOReadUpdateListener)this.updateListeners.get(var10);
  560.             var11.imageUpdate(this, var1, var2, var3, var4, var5, var6, var7, var8);
  561.          }
  562.  
  563.       }
  564.    }
  565.  
  566.    protected void processPassComplete(BufferedImage var1) {
  567.       if (this.updateListeners != null) {
  568.          int var2 = this.updateListeners.size();
  569.  
  570.          for(int var3 = 0; var3 < var2; ++var3) {
  571.             IIOReadUpdateListener var4 = (IIOReadUpdateListener)this.updateListeners.get(var3);
  572.             var4.passComplete(this, var1);
  573.          }
  574.  
  575.       }
  576.    }
  577.  
  578.    protected void processThumbnailPassStarted(BufferedImage var1, int var2, int var3, int var4, int var5, int var6, int var7, int var8, int[] var9) {
  579.       if (this.updateListeners != null) {
  580.          int var10 = this.updateListeners.size();
  581.  
  582.          for(int var11 = 0; var11 < var10; ++var11) {
  583.             IIOReadUpdateListener var12 = (IIOReadUpdateListener)this.updateListeners.get(var11);
  584.             var12.thumbnailPassStarted(this, var1, var2, var3, var4, var5, var6, var7, var8, var9);
  585.          }
  586.  
  587.       }
  588.    }
  589.  
  590.    protected void processThumbnailUpdate(BufferedImage var1, int var2, int var3, int var4, int var5, int var6, int var7, int[] var8) {
  591.       if (this.updateListeners != null) {
  592.          int var9 = this.updateListeners.size();
  593.  
  594.          for(int var10 = 0; var10 < var9; ++var10) {
  595.             IIOReadUpdateListener var11 = (IIOReadUpdateListener)this.updateListeners.get(var10);
  596.             var11.thumbnailUpdate(this, var1, var2, var3, var4, var5, var6, var7, var8);
  597.          }
  598.  
  599.       }
  600.    }
  601.  
  602.    protected void processThumbnailPassComplete(BufferedImage var1) {
  603.       if (this.updateListeners != null) {
  604.          int var2 = this.updateListeners.size();
  605.  
  606.          for(int var3 = 0; var3 < var2; ++var3) {
  607.             IIOReadUpdateListener var4 = (IIOReadUpdateListener)this.updateListeners.get(var3);
  608.             var4.thumbnailPassComplete(this, var1);
  609.          }
  610.  
  611.       }
  612.    }
  613.  
  614.    protected void processWarningOccurred(String var1) {
  615.       if (this.warningListeners != null) {
  616.          if (var1 == null) {
  617.             throw new IllegalArgumentException("warning == null!");
  618.          } else {
  619.             int var2 = this.warningListeners.size();
  620.  
  621.             for(int var3 = 0; var3 < var2; ++var3) {
  622.                IIOReadWarningListener var4 = (IIOReadWarningListener)this.warningListeners.get(var3);
  623.                var4.warningOccurred(this, var1);
  624.             }
  625.  
  626.          }
  627.       }
  628.    }
  629.  
  630.    protected void processWarningOccurred(String var1, String var2) {
  631.       if (this.warningListeners != null) {
  632.          if (var1 == null) {
  633.             throw new IllegalArgumentException("baseName == null!");
  634.          } else if (var2 == null) {
  635.             throw new IllegalArgumentException("keyword == null!");
  636.          } else {
  637.             int var3 = this.warningListeners.size();
  638.  
  639.             for(int var4 = 0; var4 < var3; ++var4) {
  640.                IIOReadWarningListener var5 = (IIOReadWarningListener)this.warningListeners.get(var4);
  641.                Locale var6 = (Locale)this.warningLocales.get(var4);
  642.                if (var6 == null) {
  643.                   var6 = Locale.getDefault();
  644.                }
  645.  
  646.                ClassLoader var7 = (ClassLoader)AccessController.doPrivileged(new 1(this));
  647.                Object var8 = null;
  648.  
  649.                try {
  650.                   var15 = ResourceBundle.getBundle(var1, var6, var7);
  651.                } catch (MissingResourceException var14) {
  652.                   try {
  653.                      var15 = ResourceBundle.getBundle(var1, var6);
  654.                   } catch (MissingResourceException var13) {
  655.                      throw new IllegalArgumentException("Bundle not found!");
  656.                   }
  657.                }
  658.  
  659.                Object var9 = null;
  660.  
  661.                try {
  662.                   var16 = var15.getString(var2);
  663.                } catch (ClassCastException var11) {
  664.                   throw new IllegalArgumentException("Resource is not a String!");
  665.                } catch (MissingResourceException var12) {
  666.                   throw new IllegalArgumentException("Resource is missing!");
  667.                }
  668.  
  669.                var5.warningOccurred(this, var16);
  670.             }
  671.  
  672.          }
  673.       }
  674.    }
  675.  
  676.    public void reset() {
  677.       this.setInput((Object)null, false, false);
  678.       this.setLocale((Locale)null);
  679.       this.removeAllIIOReadUpdateListeners();
  680.       this.removeAllIIOReadProgressListeners();
  681.       this.removeAllIIOReadWarningListeners();
  682.       this.clearAbortRequest();
  683.    }
  684.  
  685.    public void dispose() {
  686.    }
  687.  
  688.    protected static Rectangle getSourceRegion(ImageReadParam var0, int var1, int var2) {
  689.       Rectangle var3 = new Rectangle(0, 0, var1, var2);
  690.       if (var0 != null) {
  691.          Rectangle var4 = var0.getSourceRegion();
  692.          if (var4 != null) {
  693.             var3 = var3.intersection(var4);
  694.          }
  695.  
  696.          int var5 = var0.getSubsamplingXOffset();
  697.          int var6 = var0.getSubsamplingYOffset();
  698.          var3.x += var5;
  699.          var3.y += var6;
  700.          var3.width -= var5;
  701.          var3.height -= var6;
  702.       }
  703.  
  704.       return var3;
  705.    }
  706.  
  707.    protected static void computeRegions(ImageReadParam var0, int var1, int var2, BufferedImage var3, Rectangle var4, Rectangle var5) {
  708.       if (var4 == null) {
  709.          throw new IllegalArgumentException("srcRegion == null!");
  710.       } else if (var5 == null) {
  711.          throw new IllegalArgumentException("destRegion == null!");
  712.       } else {
  713.          var4.setBounds(0, 0, var1, var2);
  714.          var5.setBounds(0, 0, var1, var2);
  715.          int var6 = 1;
  716.          int var7 = 1;
  717.          int var8 = 0;
  718.          int var9 = 0;
  719.          if (var0 != null) {
  720.             Rectangle var10 = var0.getSourceRegion();
  721.             if (var10 != null) {
  722.                var4.setBounds(var4.intersection(var10));
  723.             }
  724.  
  725.             var6 = var0.getSourceXSubsampling();
  726.             var7 = var0.getSourceYSubsampling();
  727.             var8 = var0.getSubsamplingXOffset();
  728.             var9 = var0.getSubsamplingYOffset();
  729.             var4.translate(var8, var9);
  730.             var4.width -= var8;
  731.             var4.height -= var9;
  732.             var5.setLocation(var0.getDestinationOffset());
  733.          }
  734.  
  735.          if (var5.x < 0) {
  736.             int var17 = -var5.x * var6;
  737.             var4.x += var17;
  738.             var4.width -= var17;
  739.             var5.x = 0;
  740.          }
  741.  
  742.          if (var5.y < 0) {
  743.             int var18 = -var5.y * var7;
  744.             var4.y += var18;
  745.             var4.height -= var18;
  746.             var5.y = 0;
  747.          }
  748.  
  749.          int var19 = (var4.width + var6 - 1) / var6;
  750.          int var11 = (var4.height + var7 - 1) / var7;
  751.          var5.width = var19;
  752.          var5.height = var11;
  753.          if (var3 != null) {
  754.             Rectangle var12 = new Rectangle(0, 0, var3.getWidth(), var3.getHeight());
  755.             var5.setBounds(var5.intersection(var12));
  756.             if (var5.isEmpty()) {
  757.                throw new IllegalArgumentException("Empty destination region!");
  758.             }
  759.  
  760.             int var13 = var5.x + var19 - var3.getWidth();
  761.             if (var13 > 0) {
  762.                var4.width -= var13 * var6;
  763.             }
  764.  
  765.             int var14 = var5.y + var11 - var3.getHeight();
  766.             if (var14 > 0) {
  767.                var4.height -= var14 * var7;
  768.             }
  769.          }
  770.  
  771.          if (var4.isEmpty() || var5.isEmpty()) {
  772.             throw new IllegalArgumentException("Empty region!");
  773.          }
  774.       }
  775.    }
  776.  
  777.    protected static void checkReadParamBandSettings(ImageReadParam var0, int var1, int var2) {
  778.       int[] var3 = null;
  779.       int[] var4 = null;
  780.       if (var0 != null) {
  781.          var3 = var0.getSourceBands();
  782.          var4 = var0.getDestinationBands();
  783.       }
  784.  
  785.       int var5 = var3 == null ? var1 : var3.length;
  786.       int var6 = var4 == null ? var2 : var4.length;
  787.       if (var5 != var6) {
  788.          throw new IllegalArgumentException("ImageReadParam num source & dest bands differ!");
  789.       } else {
  790.          if (var3 != null) {
  791.             for(int var7 = 0; var7 < var3.length; ++var7) {
  792.                if (var3[var7] >= var1) {
  793.                   throw new IllegalArgumentException("ImageReadParam source bands contains a value >= the number of source bands!");
  794.                }
  795.             }
  796.          }
  797.  
  798.          if (var4 != null) {
  799.             for(int var8 = 0; var8 < var4.length; ++var8) {
  800.                if (var4[var8] >= var2) {
  801.                   throw new IllegalArgumentException("ImageReadParam dest bands contains a value >= the number of dest bands!");
  802.                }
  803.             }
  804.          }
  805.  
  806.       }
  807.    }
  808.  
  809.    protected static BufferedImage getDestination(ImageReadParam var0, Iterator<ImageTypeSpecifier> var1, int var2, int var3) throws IIOException {
  810.       if (var1 != null && var1.hasNext()) {
  811.          if ((long)var2 * (long)var3 > 2147483647L) {
  812.             throw new IllegalArgumentException("width*height > Integer.MAX_VALUE!");
  813.          } else {
  814.             Object var4 = null;
  815.             ImageTypeSpecifier var5 = null;
  816.             if (var0 != null) {
  817.                BufferedImage var10 = var0.getDestination();
  818.                if (var10 != null) {
  819.                   return var10;
  820.                }
  821.  
  822.                var5 = var0.getDestinationType();
  823.             }
  824.  
  825.             if (var5 == null) {
  826.                Object var6 = var1.next();
  827.                if (!(var6 instanceof ImageTypeSpecifier)) {
  828.                   throw new IllegalArgumentException("Non-ImageTypeSpecifier retrieved from imageTypes!");
  829.                }
  830.  
  831.                var5 = (ImageTypeSpecifier)var6;
  832.             } else {
  833.                boolean var11 = false;
  834.  
  835.                while(var1.hasNext()) {
  836.                   ImageTypeSpecifier var7 = (ImageTypeSpecifier)var1.next();
  837.                   if (var7.equals(var5)) {
  838.                      var11 = true;
  839.                      break;
  840.                   }
  841.                }
  842.  
  843.                if (!var11) {
  844.                   throw new IIOException("Destination type from ImageReadParam does not match!");
  845.                }
  846.             }
  847.  
  848.             Rectangle var12 = new Rectangle(0, 0, 0, 0);
  849.             Rectangle var13 = new Rectangle(0, 0, 0, 0);
  850.             computeRegions(var0, var2, var3, (BufferedImage)null, var12, var13);
  851.             int var8 = var13.x + var13.width;
  852.             int var9 = var13.y + var13.height;
  853.             return var5.createBufferedImage(var8, var9);
  854.          }
  855.       } else {
  856.          throw new IllegalArgumentException("imageTypes null or empty!");
  857.       }
  858.    }
  859. }
  860.