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 / BufferedImage.class (.txt) < prev    next >
Encoding:
Java Class File  |  1979-12-31  |  11.8 KB  |  599 lines

  1. package java.awt.image;
  2.  
  3. import java.awt.Graphics;
  4. import java.awt.Graphics2D;
  5. import java.awt.GraphicsEnvironment;
  6. import java.awt.Image;
  7. import java.awt.Point;
  8. import java.awt.Rectangle;
  9. import java.awt.color.ColorSpace;
  10. import java.util.Hashtable;
  11. import java.util.Vector;
  12. import sun.awt.image.ByteComponentRaster;
  13. import sun.awt.image.BytePackedRaster;
  14. import sun.awt.image.IntegerComponentRaster;
  15. import sun.awt.image.OffScreenImageSource;
  16. import sun.awt.image.ShortComponentRaster;
  17.  
  18. public class BufferedImage extends Image implements WritableRenderedImage {
  19.    int imageType = 0;
  20.    ColorModel colorModel;
  21.    WritableRaster raster;
  22.    OffScreenImageSource osis;
  23.    Hashtable properties;
  24.    boolean isAlphaPremultiplied;
  25.    public static final int TYPE_CUSTOM = 0;
  26.    public static final int TYPE_INT_RGB = 1;
  27.    public static final int TYPE_INT_ARGB = 2;
  28.    public static final int TYPE_INT_ARGB_PRE = 3;
  29.    public static final int TYPE_INT_BGR = 4;
  30.    public static final int TYPE_3BYTE_BGR = 5;
  31.    public static final int TYPE_4BYTE_ABGR = 6;
  32.    public static final int TYPE_4BYTE_ABGR_PRE = 7;
  33.    public static final int TYPE_USHORT_565_RGB = 8;
  34.    public static final int TYPE_USHORT_555_RGB = 9;
  35.    public static final int TYPE_BYTE_GRAY = 10;
  36.    public static final int TYPE_USHORT_GRAY = 11;
  37.    public static final int TYPE_BYTE_BINARY = 12;
  38.    public static final int TYPE_BYTE_INDEXED = 13;
  39.    private static final int DCM_RED_MASK = 16711680;
  40.    private static final int DCM_GREEN_MASK = 65280;
  41.    private static final int DCM_BLUE_MASK = 255;
  42.    private static final int DCM_ALPHA_MASK = -16777216;
  43.    private static final int DCM_565_RED_MASK = 63488;
  44.    private static final int DCM_565_GRN_MASK = 2016;
  45.    private static final int DCM_565_BLU_MASK = 31;
  46.    private static final int DCM_555_RED_MASK = 31744;
  47.    private static final int DCM_555_GRN_MASK = 992;
  48.    private static final int DCM_555_BLU_MASK = 31;
  49.    private static final int DCM_BGR_RED_MASK = 255;
  50.    private static final int DCM_BGR_GRN_MASK = 65280;
  51.    private static final int DCM_BGR_BLU_MASK = 16711680;
  52.  
  53.    private static native void initIDs();
  54.  
  55.    public BufferedImage(int var1, int var2, int var3) {
  56.       switch (var3) {
  57.          case 1:
  58.             this.colorModel = new DirectColorModel(24, 16711680, 65280, 255, 0);
  59.             this.raster = this.colorModel.createCompatibleWritableRaster(var1, var2);
  60.             break;
  61.          case 2:
  62.             this.colorModel = ColorModel.getRGBdefault();
  63.             this.raster = this.colorModel.createCompatibleWritableRaster(var1, var2);
  64.             break;
  65.          case 3:
  66.             this.colorModel = new DirectColorModel(ColorSpace.getInstance(1000), 32, 16711680, 65280, 255, -16777216, true, 3);
  67.             this.raster = this.colorModel.createCompatibleWritableRaster(var1, var2);
  68.             break;
  69.          case 4:
  70.             this.colorModel = new DirectColorModel(24, 255, 65280, 16711680);
  71.             this.raster = this.colorModel.createCompatibleWritableRaster(var1, var2);
  72.             break;
  73.          case 5:
  74.             ColorSpace var14 = ColorSpace.getInstance(1000);
  75.             int[] var19 = new int[]{8, 8, 8};
  76.             int[] var22 = new int[]{2, 1, 0};
  77.             this.colorModel = new ComponentColorModel(var14, var19, false, false, 1, 0);
  78.             this.raster = Raster.createInterleavedRaster(0, var1, var2, var1 * 3, 3, var22, (Point)null);
  79.             break;
  80.          case 6:
  81.             ColorSpace var13 = ColorSpace.getInstance(1000);
  82.             int[] var18 = new int[]{8, 8, 8, 8};
  83.             int[] var21 = new int[]{3, 2, 1, 0};
  84.             this.colorModel = new ComponentColorModel(var13, var18, true, false, 3, 0);
  85.             this.raster = Raster.createInterleavedRaster(0, var1, var2, var1 * 4, 4, var21, (Point)null);
  86.             break;
  87.          case 7:
  88.             ColorSpace var12 = ColorSpace.getInstance(1000);
  89.             int[] var17 = new int[]{8, 8, 8, 8};
  90.             int[] var20 = new int[]{3, 2, 1, 0};
  91.             this.colorModel = new ComponentColorModel(var12, var17, true, true, 3, 0);
  92.             this.raster = Raster.createInterleavedRaster(0, var1, var2, var1 * 4, 4, var20, (Point)null);
  93.             break;
  94.          case 8:
  95.             this.colorModel = new DirectColorModel(16, 63488, 2016, 31);
  96.             this.raster = this.colorModel.createCompatibleWritableRaster(var1, var2);
  97.             break;
  98.          case 9:
  99.             this.colorModel = new DirectColorModel(15, 31744, 992, 31);
  100.             this.raster = this.colorModel.createCompatibleWritableRaster(var1, var2);
  101.             break;
  102.          case 10:
  103.             ColorSpace var11 = ColorSpace.getInstance(1003);
  104.             int[] var16 = new int[]{8};
  105.             this.colorModel = new ComponentColorModel(var11, var16, false, true, 1, 0);
  106.             this.raster = this.colorModel.createCompatibleWritableRaster(var1, var2);
  107.             break;
  108.          case 11:
  109.             ColorSpace var10 = ColorSpace.getInstance(1003);
  110.             int[] var15 = new int[]{16};
  111.             this.colorModel = new ComponentColorModel(var10, var15, false, true, 1, 1);
  112.             this.raster = this.colorModel.createCompatibleWritableRaster(var1, var2);
  113.             break;
  114.          case 12:
  115.             byte[] var9 = new byte[]{0, -1};
  116.             this.colorModel = new IndexColorModel(1, 2, var9, var9, var9);
  117.             this.raster = Raster.createPackedRaster(0, var1, var2, 1, 1, (Point)null);
  118.             break;
  119.          case 13:
  120.             int[] var4 = new int[256];
  121.             int var5 = 0;
  122.  
  123.             for(int var6 = 0; var6 < 256; var6 += 51) {
  124.                for(int var7 = 0; var7 < 256; var7 += 51) {
  125.                   for(int var8 = 0; var8 < 256; var8 += 51) {
  126.                      var4[var5++] = var6 << 16 | var7 << 8 | var8;
  127.                   }
  128.                }
  129.             }
  130.  
  131.             int var23 = 256 / (256 - var5);
  132.  
  133.             for(int var24 = var23 * 3; var5 < 256; ++var5) {
  134.                var4[var5] = var24 << 16 | var24 << 8 | var24;
  135.                var24 += var23;
  136.             }
  137.  
  138.             this.colorModel = new IndexColorModel(8, 256, var4, 0, false, -1, 0);
  139.             this.raster = Raster.createInterleavedRaster(0, var1, var2, 1, (Point)null);
  140.             break;
  141.          default:
  142.             throw new IllegalArgumentException("Unknown image type " + var3);
  143.       }
  144.  
  145.       this.imageType = var3;
  146.    }
  147.  
  148.    public BufferedImage(int var1, int var2, int var3, IndexColorModel var4) {
  149.       if (((ColorModel)var4).hasAlpha() && ((ColorModel)var4).isAlphaPremultiplied()) {
  150.          throw new IllegalArgumentException("This image types do not have premultiplied alpha.");
  151.       } else {
  152.          switch (var3) {
  153.             case 12:
  154.                this.raster = Raster.createPackedRaster(0, var1, var2, 1, 1, (Point)null);
  155.                break;
  156.             case 13:
  157.                this.raster = Raster.createInterleavedRaster(0, var1, var2, 1, (Point)null);
  158.                break;
  159.             default:
  160.                throw new IllegalArgumentException("Invalid image type (" + var3 + ").  Image type must" + " be either TYPE_BYTE_BINARY or " + " TYPE_BYTE_INDEXED");
  161.          }
  162.  
  163.          if (!var4.isCompatibleRaster(this.raster)) {
  164.             throw new IllegalArgumentException("Incompatible image type and IndexColorModel");
  165.          } else {
  166.             this.colorModel = var4;
  167.             this.imageType = var3;
  168.          }
  169.       }
  170.    }
  171.  
  172.    public BufferedImage(ColorModel var1, WritableRaster var2, boolean var3, Hashtable var4) {
  173.       if (!var1.isCompatibleRaster(var2)) {
  174.          throw new IllegalArgumentException("Raster " + var2 + " is incompatible with ColorModel " + var1);
  175.       } else if (var2.minX == 0 && var2.minY == 0) {
  176.          this.colorModel = var1;
  177.          this.raster = var2;
  178.          this.properties = var4;
  179.          int var5 = ((Raster)var2).getNumBands();
  180.          boolean var6 = var1.isAlphaPremultiplied();
  181.          this.coerceData(var3);
  182.          SampleModel var8 = ((Raster)var2).getSampleModel();
  183.          ColorSpace var7 = var1.getColorSpace();
  184.          int var9 = var7.getType();
  185.          if (var9 != 5) {
  186.             if (var9 == 6 && var1 instanceof ComponentColorModel) {
  187.                if (var8 instanceof ComponentSampleModel && ((ComponentSampleModel)var8).getPixelStride() != var5) {
  188.                   this.imageType = 0;
  189.                } else if (var2 instanceof ByteComponentRaster && ((Raster)var2).getNumBands() == 1 && ((ByteComponentRaster)var2).getPixelStride() == 1) {
  190.                   this.imageType = 10;
  191.                } else if (var2 instanceof ShortComponentRaster && ((Raster)var2).getNumBands() == 1 && ((ShortComponentRaster)var2).getPixelStride() == 1) {
  192.                   this.imageType = 11;
  193.                }
  194.             } else {
  195.                this.imageType = 0;
  196.             }
  197.  
  198.          } else {
  199.             if (var2 instanceof IntegerComponentRaster && (var5 == 3 || var5 == 4)) {
  200.                IntegerComponentRaster var19 = (IntegerComponentRaster)var2;
  201.                int var21 = var1.getPixelSize();
  202.                if (var19.getPixelStride() == 1 && var1 instanceof DirectColorModel && (var21 == 32 || var21 == 24)) {
  203.                   DirectColorModel var23 = (DirectColorModel)var1;
  204.                   int var24 = var23.getRedMask();
  205.                   int var25 = var23.getGreenMask();
  206.                   int var26 = var23.getBlueMask();
  207.                   if (var24 == 16711680 && var25 == 65280 && var26 == 255) {
  208.                      if (var23.getAlphaMask() == -16777216) {
  209.                         this.imageType = var6 ? 3 : 2;
  210.                      } else if (!((ColorModel)var23).hasAlpha()) {
  211.                         this.imageType = 1;
  212.                      }
  213.                   } else if (var24 == 255 && var25 == 65280 && var26 == 16711680 && !((ColorModel)var23).hasAlpha()) {
  214.                      this.imageType = 4;
  215.                   }
  216.                }
  217.             } else if (!(var1 instanceof IndexColorModel) || var5 != 1 || var1.hasAlpha() && var6) {
  218.                if (var2 instanceof ShortComponentRaster && var1 instanceof DirectColorModel && var5 == 3 && !var1.hasAlpha()) {
  219.                   DirectColorModel var18 = (DirectColorModel)var1;
  220.                   if (var18.getRedMask() == 63488) {
  221.                      if (var18.getGreenMask() == 2016 && var18.getBlueMask() == 31) {
  222.                         this.imageType = 8;
  223.                      }
  224.                   } else if (var18.getRedMask() == 31744 && var18.getGreenMask() == 992 && var18.getBlueMask() == 31) {
  225.                      this.imageType = 9;
  226.                   }
  227.                } else if (var2 instanceof ByteComponentRaster && var1 instanceof ComponentColorModel && ((Raster)var2).getSampleModel() instanceof PixelInterleavedSampleModel && (var5 == 3 || var5 == 4)) {
  228.                   ComponentColorModel var17 = (ComponentColorModel)var1;
  229.                   PixelInterleavedSampleModel var20 = (PixelInterleavedSampleModel)((Raster)var2).getSampleModel();
  230.                   ByteComponentRaster var22 = (ByteComponentRaster)var2;
  231.                   int[] var13 = ((ComponentSampleModel)var20).getBandOffsets();
  232.                   if (((ColorModel)var17).getNumComponents() != var5) {
  233.                      throw new RasterFormatException("Number of components in ColorModel (" + ((ColorModel)var17).getNumComponents() + ") does not match # in " + " Raster (" + var5 + ")");
  234.                   }
  235.  
  236.                   int[] var14 = ((ColorModel)var17).getComponentSize();
  237.                   boolean var15 = true;
  238.  
  239.                   for(int var16 = 0; var16 < var5; ++var16) {
  240.                      if (var14[var16] != 8) {
  241.                         var15 = false;
  242.                         break;
  243.                      }
  244.                   }
  245.  
  246.                   if (var15 && var13[0] == var5 - 1 && var13[1] == var5 - 2 && var13[2] == var5 - 3) {
  247.                      if (var5 == 3) {
  248.                         this.imageType = 5;
  249.                      } else if (var13[3] == 0) {
  250.                         this.imageType = var6 ? 7 : 6;
  251.                      }
  252.                   }
  253.                }
  254.             } else {
  255.                IndexColorModel var10 = (IndexColorModel)var1;
  256.                int var11 = ((ColorModel)var10).getPixelSize();
  257.                if (var2 instanceof BytePackedRaster) {
  258.                   this.imageType = 12;
  259.                } else if (var2 instanceof ByteComponentRaster) {
  260.                   ByteComponentRaster var12 = (ByteComponentRaster)var2;
  261.                   if (var12.getPixelStride() == 1 && var11 <= 8) {
  262.                      this.imageType = 13;
  263.                   }
  264.                }
  265.             }
  266.  
  267.          }
  268.       } else {
  269.          throw new IllegalArgumentException("Raster " + var2 + " has minX or minY not equal to zero: " + var2.minX + " " + var2.minY);
  270.       }
  271.    }
  272.  
  273.    public int getType() {
  274.       return this.imageType;
  275.    }
  276.  
  277.    public ColorModel getColorModel() {
  278.       return this.colorModel;
  279.    }
  280.  
  281.    public WritableRaster getRaster() {
  282.       return this.raster;
  283.    }
  284.  
  285.    public WritableRaster getAlphaRaster() {
  286.       return this.colorModel.getAlphaRaster(this.raster);
  287.    }
  288.  
  289.    public int getRGB(int var1, int var2) {
  290.       return this.colorModel.getRGB(this.raster.getDataElements(var1, var2, (Object)null));
  291.    }
  292.  
  293.    public int[] getRGB(int var1, int var2, int var3, int var4, int[] var5, int var6, int var7) {
  294.       int var8 = var6;
  295.       int var11 = this.raster.getNumBands();
  296.       int var12 = this.raster.getDataBuffer().getDataType();
  297.       Object var10;
  298.       switch (var12) {
  299.          case 0:
  300.             var10 = new byte[var11];
  301.             break;
  302.          case 1:
  303.             var10 = new short[var11];
  304.             break;
  305.          case 2:
  306.          default:
  307.             throw new IllegalArgumentException("Unknown data buffer type: " + var12);
  308.          case 3:
  309.             var10 = new int[var11];
  310.             break;
  311.          case 4:
  312.             var10 = new float[var11];
  313.             break;
  314.          case 5:
  315.             var10 = new double[var11];
  316.       }
  317.  
  318.       if (var5 == null) {
  319.          var5 = new int[var6 + var4 * var7];
  320.       }
  321.  
  322.       for(int var13 = var2; var13 < var2 + var4; var8 += var7) {
  323.          int var9 = var8;
  324.  
  325.          for(int var14 = var1; var14 < var1 + var3; ++var14) {
  326.             var5[var9++] = this.colorModel.getRGB(this.raster.getDataElements(var14, var13, var10));
  327.          }
  328.  
  329.          ++var13;
  330.       }
  331.  
  332.       return var5;
  333.    }
  334.  
  335.    public synchronized void setRGB(int var1, int var2, int var3) {
  336.       this.raster.setDataElements(var1, var2, this.colorModel.getDataElements(var3, (Object)null));
  337.    }
  338.  
  339.    public void setRGB(int var1, int var2, int var3, int var4, int[] var5, int var6, int var7) {
  340.       int var8 = var6;
  341.       Object var10 = null;
  342.  
  343.       for(int var11 = var2; var11 < var2 + var4; var8 += var7) {
  344.          int var9 = var8;
  345.  
  346.          for(int var12 = var1; var12 < var1 + var3; ++var12) {
  347.             var10 = this.colorModel.getDataElements(var5[var9++], var10);
  348.             this.raster.setDataElements(var12, var11, var10);
  349.          }
  350.  
  351.          ++var11;
  352.       }
  353.  
  354.    }
  355.  
  356.    public int getWidth() {
  357.       return this.raster.getWidth();
  358.    }
  359.  
  360.    public int getHeight() {
  361.       return this.raster.getHeight();
  362.    }
  363.  
  364.    public int getWidth(ImageObserver var1) {
  365.       return this.raster.getWidth();
  366.    }
  367.  
  368.    public int getHeight(ImageObserver var1) {
  369.       return this.raster.getHeight();
  370.    }
  371.  
  372.    public ImageProducer getSource() {
  373.       if (this.osis == null) {
  374.          this.osis = new OffScreenImageSource(this);
  375.       }
  376.  
  377.       return this.osis;
  378.    }
  379.  
  380.    public Object getProperty(String var1, ImageObserver var2) {
  381.       return this.getProperty(var1);
  382.    }
  383.  
  384.    public Object getProperty(String var1) {
  385.       if (this.properties == null) {
  386.          return null;
  387.       } else {
  388.          Object var2 = this.properties.get(var1);
  389.          if (var2 == null) {
  390.             var2 = Image.UndefinedProperty;
  391.          }
  392.  
  393.          return var2;
  394.       }
  395.    }
  396.  
  397.    public void flush() {
  398.    }
  399.  
  400.    public Graphics getGraphics() {
  401.       return this.createGraphics();
  402.    }
  403.  
  404.    public Graphics2D createGraphics() {
  405.       GraphicsEnvironment var1 = GraphicsEnvironment.getLocalGraphicsEnvironment();
  406.       return var1.createGraphics(this);
  407.    }
  408.  
  409.    public BufferedImage getSubimage(int var1, int var2, int var3, int var4) {
  410.       return new BufferedImage(this.colorModel, this.raster.createWritableChild(var1, var2, var3, var4, 0, 0, (int[])null), this.colorModel.isAlphaPremultiplied(), this.properties);
  411.    }
  412.  
  413.    public boolean isAlphaPremultiplied() {
  414.       return this.colorModel.isAlphaPremultiplied();
  415.    }
  416.  
  417.    public void coerceData(boolean var1) {
  418.       if (this.colorModel.hasAlpha() && this.colorModel.isAlphaPremultiplied() != var1) {
  419.          this.colorModel = this.colorModel.coerceData(this.raster, var1);
  420.       }
  421.  
  422.    }
  423.  
  424.    public String toString() {
  425.       return new String("BufferedImage@" + Integer.toHexString(this.hashCode()) + ": type = " + this.imageType + " " + this.colorModel + " " + this.raster);
  426.    }
  427.  
  428.    public Vector getSources() {
  429.       return null;
  430.    }
  431.  
  432.    public String[] getPropertyNames() {
  433.       return null;
  434.    }
  435.  
  436.    public int getMinX() {
  437.       return this.raster.getMinX();
  438.    }
  439.  
  440.    public int getMinY() {
  441.       return this.raster.getMinY();
  442.    }
  443.  
  444.    public SampleModel getSampleModel() {
  445.       return this.raster.getSampleModel();
  446.    }
  447.  
  448.    public int getNumXTiles() {
  449.       return 1;
  450.    }
  451.  
  452.    public int getNumYTiles() {
  453.       return 1;
  454.    }
  455.  
  456.    public int getMinTileX() {
  457.       return 0;
  458.    }
  459.  
  460.    public int getMinTileY() {
  461.       return 0;
  462.    }
  463.  
  464.    public int getTileWidth() {
  465.       return this.raster.getWidth();
  466.    }
  467.  
  468.    public int getTileHeight() {
  469.       return this.raster.getHeight();
  470.    }
  471.  
  472.    public int getTileGridXOffset() {
  473.       return this.raster.getSampleModelTranslateX();
  474.    }
  475.  
  476.    public int getTileGridYOffset() {
  477.       return this.raster.getSampleModelTranslateY();
  478.    }
  479.  
  480.    public Raster getTile(int var1, int var2) {
  481.       if (var1 == 0 && var2 == 0) {
  482.          return this.raster;
  483.       } else {
  484.          throw new ArrayIndexOutOfBoundsException("BufferedImages only have one tile with index 0,0");
  485.       }
  486.    }
  487.  
  488.    public Raster getData() {
  489.       int var1 = this.raster.getWidth();
  490.       int var2 = this.raster.getHeight();
  491.       int var3 = this.raster.getMinX();
  492.       int var4 = this.raster.getMinY();
  493.       WritableRaster var5 = Raster.createWritableRaster(this.raster.getSampleModel(), new Point(this.raster.getSampleModelTranslateX(), this.raster.getSampleModelTranslateY()));
  494.       Object var6 = null;
  495.  
  496.       for(int var7 = var4; var7 < var4 + var2; ++var7) {
  497.          var6 = this.raster.getDataElements(var3, var7, var1, 1, var6);
  498.          var5.setDataElements(var3, var7, var1, 1, var6);
  499.       }
  500.  
  501.       return var5;
  502.    }
  503.  
  504.    public Raster getData(Rectangle var1) {
  505.       SampleModel var2 = this.raster.getSampleModel();
  506.       SampleModel var3 = var2.createCompatibleSampleModel(var1.width, var1.height);
  507.       WritableRaster var4 = Raster.createWritableRaster(var3, var1.getLocation());
  508.       int var5 = var1.width;
  509.       int var6 = var1.height;
  510.       int var7 = var1.x;
  511.       int var8 = var1.y;
  512.       Object var9 = null;
  513.  
  514.       for(int var10 = var8; var10 < var8 + var6; ++var10) {
  515.          var9 = this.raster.getDataElements(var7, var10, var5, 1, var9);
  516.          var4.setDataElements(var7, var10, var5, 1, var9);
  517.       }
  518.  
  519.       return var4;
  520.    }
  521.  
  522.    public WritableRaster copyData(WritableRaster var1) {
  523.       if (var1 == null) {
  524.          return (WritableRaster)this.getData();
  525.       } else {
  526.          int var2 = ((Raster)var1).getWidth();
  527.          int var3 = ((Raster)var1).getHeight();
  528.          int var4 = ((Raster)var1).getMinX();
  529.          int var5 = ((Raster)var1).getMinY();
  530.          Object var6 = null;
  531.  
  532.          for(int var7 = var5; var7 < var5 + var3; ++var7) {
  533.             var6 = this.raster.getDataElements(var4, var7, var2, 1, var6);
  534.             var1.setDataElements(var4, var7, var2, 1, var6);
  535.          }
  536.  
  537.          return var1;
  538.       }
  539.    }
  540.  
  541.    public void setData(Raster var1) {
  542.       int var2 = var1.getWidth();
  543.       int var3 = var1.getHeight();
  544.       int var4 = var1.getMinX();
  545.       int var5 = var1.getMinY();
  546.       int[] var6 = null;
  547.       Rectangle var7 = new Rectangle(var4, var5, var2, var3);
  548.       Rectangle var8 = new Rectangle(0, 0, this.raster.width, this.raster.height);
  549.       Rectangle var9 = var7.intersection(var8);
  550.       if (!var9.isEmpty()) {
  551.          var2 = var9.width;
  552.          var3 = var9.height;
  553.          var4 = var9.x;
  554.          var5 = var9.y;
  555.  
  556.          for(int var10 = var5; var10 < var5 + var3; ++var10) {
  557.             var6 = var1.getPixels(var4, var10, var2, 1, var6);
  558.             this.raster.setPixels(var4, var10, var2, 1, var6);
  559.          }
  560.  
  561.       }
  562.    }
  563.  
  564.    public void addTileObserver(TileObserver var1) {
  565.    }
  566.  
  567.    public void removeTileObserver(TileObserver var1) {
  568.    }
  569.  
  570.    public boolean isTileWritable(int var1, int var2) {
  571.       if (var1 == 0 && var2 == 0) {
  572.          return true;
  573.       } else {
  574.          throw new IllegalArgumentException("Only 1 tile in image");
  575.       }
  576.    }
  577.  
  578.    public Point[] getWritableTileIndices() {
  579.       Point[] var1 = new Point[]{new Point(0, 0)};
  580.       return var1;
  581.    }
  582.  
  583.    public boolean hasTileWriters() {
  584.       return true;
  585.    }
  586.  
  587.    public WritableRaster getWritableTile(int var1, int var2) {
  588.       return this.raster;
  589.    }
  590.  
  591.    public void releaseWritableTile(int var1, int var2) {
  592.    }
  593.  
  594.    static {
  595.       ColorModel.loadLibraries();
  596.       initIDs();
  597.    }
  598. }
  599.