harmony-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From hinde...@apache.org
Subject svn commit: r450801 - in /incubator/harmony/enhanced/classlib/trunk/modules/awt/src: main/java/common/java/awt/image/ main/java/common/org/apache/harmony/awt/gl/ main/java/common/org/apache/harmony/awt/internal/nls/ test/api/java/common/java/awt/image/
Date Thu, 28 Sep 2006 10:53:52 GMT
Author: hindessm
Date: Thu Sep 28 03:53:51 2006
New Revision: 450801

URL: http://svn.apache.org/viewvc?view=rev&rev=450801
Log:
Applied patches from "[#HARMONY-1480] [classlib][awt] Implementation of the
missing java.awt.image.BufferedImageFilter class".

Added:
    incubator/harmony/enhanced/classlib/trunk/modules/awt/src/main/java/common/java/awt/image/BufferedImageFilter.java
  (with props)
    incubator/harmony/enhanced/classlib/trunk/modules/awt/src/test/api/java/common/java/awt/image/BufferedImageFilterTest.java
  (with props)
Modified:
    incubator/harmony/enhanced/classlib/trunk/modules/awt/src/main/java/common/java/awt/image/BufferedImage.java
    incubator/harmony/enhanced/classlib/trunk/modules/awt/src/main/java/common/java/awt/image/IndexColorModel.java
    incubator/harmony/enhanced/classlib/trunk/modules/awt/src/main/java/common/java/awt/image/VolatileImage.java
    incubator/harmony/enhanced/classlib/trunk/modules/awt/src/main/java/common/org/apache/harmony/awt/gl/AwtImageBackdoorAccessor.java
    incubator/harmony/enhanced/classlib/trunk/modules/awt/src/main/java/common/org/apache/harmony/awt/internal/nls/messages.properties

Modified: incubator/harmony/enhanced/classlib/trunk/modules/awt/src/main/java/common/java/awt/image/BufferedImage.java
URL: http://svn.apache.org/viewvc/incubator/harmony/enhanced/classlib/trunk/modules/awt/src/main/java/common/java/awt/image/BufferedImage.java?view=diff&rev=450801&r1=450800&r2=450801
==============================================================================
--- incubator/harmony/enhanced/classlib/trunk/modules/awt/src/main/java/common/java/awt/image/BufferedImage.java
(original)
+++ incubator/harmony/enhanced/classlib/trunk/modules/awt/src/main/java/common/java/awt/image/BufferedImage.java
Thu Sep 28 03:53:51 2006
@@ -93,10 +93,6 @@
 
     private static final int BLUE_555_MASK = 0x001f;
 
-    static {
-        AwtImageBackdoorAccessorImpl.init();
-    }
-
     private ColorModel cm;
 
     private final WritableRaster raster;

Added: incubator/harmony/enhanced/classlib/trunk/modules/awt/src/main/java/common/java/awt/image/BufferedImageFilter.java
URL: http://svn.apache.org/viewvc/incubator/harmony/enhanced/classlib/trunk/modules/awt/src/main/java/common/java/awt/image/BufferedImageFilter.java?view=auto&rev=450801
==============================================================================
--- incubator/harmony/enhanced/classlib/trunk/modules/awt/src/main/java/common/java/awt/image/BufferedImageFilter.java
(added)
+++ incubator/harmony/enhanced/classlib/trunk/modules/awt/src/main/java/common/java/awt/image/BufferedImageFilter.java
Thu Sep 28 03:53:51 2006
@@ -0,0 +1,314 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+/**
+ * @author Oleg V. Khaschansky
+ * @version $Revision$
+ */
+
+package java.awt.image;
+
+import org.apache.harmony.awt.gl.AwtImageBackdoorAccessor;
+import org.apache.harmony.awt.internal.nls.Messages;
+
+public class BufferedImageFilter extends ImageFilter implements Cloneable {
+    private static final AwtImageBackdoorAccessor accessor = AwtImageBackdoorAccessor.getInstance();
+
+    private BufferedImageOp op;
+
+    private WritableRaster raster;
+
+    private int iData[];
+    private byte bData[];
+
+    private int width;
+    private int height;
+
+    private ColorModel cm;
+
+    private boolean forcedRGB = false;
+    private int transferType = DataBuffer.TYPE_UNDEFINED;
+
+    public BufferedImageFilter(BufferedImageOp op) {
+        if (op == null) {
+            throw new NullPointerException(Messages.getString("awt.05")); //$NON-NLS-1$
+        }
+        this.op = op;
+    }
+
+    public BufferedImageOp getBufferedImageOp() {
+        return op;
+    }
+
+    public void setDimensions(int width, int height) {
+        this.width = width;
+        this.height = height;
+        // Stop image consuming if no pixels expected.
+        if (width <= 0 || height <= 0) {
+            consumer.imageComplete(ImageConsumer.STATICIMAGEDONE);
+            reset();
+        }
+    }
+
+    public void setColorModel(ColorModel model) {
+        if (this.cm != null && this.cm != model && raster != null) {
+            forceRGB();
+        } else {
+            this.cm = model;
+        }
+    }
+
+    public void setPixels(
+            int x, int y, int
+            w, int h,
+            ColorModel model, byte[] pixels,
+            int off, int scansize
+    ) {
+        setPixels(x, y, w, h, model, pixels, off, scansize, true);
+    }
+
+    public void setPixels(
+            int x, int y,
+            int w, int h,
+            ColorModel model, int[] pixels,
+            int off, int scansize
+    ) {
+        setPixels(x, y, w, h, model, pixels, off, scansize, false);
+    }
+
+    public void imageComplete(int status) {
+        if (status == STATICIMAGEDONE || status == SINGLEFRAMEDONE) {
+            BufferedImage bim = new BufferedImage(cm, raster, cm.isAlphaPremultiplied, null);
+            bim = op.filter(bim, null);
+            DataBuffer dstDb = bim.getRaster().getDataBuffer();
+            ColorModel dstCm = bim.getColorModel();
+            int dstW = bim.getWidth();
+            int dstH = bim.getHeight();
+
+            consumer.setDimensions(dstW, dstH);
+
+            if (dstDb.getDataType() == DataBuffer.TYPE_INT) {
+                consumer.setColorModel(dstCm);
+                consumer.setPixels(0, 0, dstW, dstH, dstCm, accessor.getDataInt(dstDb), 0,
dstW);
+            } else if (dstDb.getDataType() == DataBuffer.TYPE_BYTE) {
+                consumer.setColorModel(dstCm);
+                consumer.setPixels(0, 0, dstW, dstH, dstCm, accessor.getDataByte(dstDb),
0, dstW);
+            } else {
+                int dstData[] = bim.getRGB(0, 0, dstW, dstH, null, 0, dstW);
+                dstCm = ColorModel.getRGBdefault();
+                consumer.setColorModel(dstCm);
+                consumer.setPixels(0, 0, dstW, dstH, dstCm, dstData, 0, dstW);
+            }
+        } else if (status == IMAGEERROR || status == IMAGEABORTED) {
+            reset();
+        }
+
+        consumer.imageComplete(status);
+    }
+
+    private void setPixels(
+            int x, int y,
+            int w, int h,
+            ColorModel model, Object pixels,
+            int off, int scansize, boolean isByteData
+    ) {
+        // Check bounds
+        // Need to copy only the pixels that will fit into the destination area
+        if (x < 0) {
+            w -= x;
+            off += x;
+            x = 0;
+        }
+
+        if (y < 0) {
+            h -= y;
+            off += y * scansize;
+            y = 0;
+        }
+
+        if (x + w > width) {
+            w = width - x;
+        }
+
+        if (y + h > height) {
+            h = height - y;
+        }
+
+        if (w <= 0 || h <= 0) {
+            return;
+        }
+
+        // Check model
+        if (this.cm == null) {
+            setColorModel(model);
+        } else if (model == null) {
+            model = this.cm;
+        } else if (!model.equals(this.cm)) {
+            forceRGB();
+        }
+
+        boolean canArraycopy;
+        // Process pixels
+        switch(transferType) {
+            case DataBuffer.TYPE_UNDEFINED: {
+                if (isByteData) {
+                    transferType = DataBuffer.TYPE_BYTE;
+                    createRaster(transferType);
+                    //bData = new byte[width*height];
+                    canArraycopy = !forcedRGB;
+                    break;
+                } else {
+                    transferType = DataBuffer.TYPE_INT;
+                    createRaster(transferType);
+                    //iData = new int[width*height];
+                    canArraycopy = !forcedRGB || model.equals(ColorModel.getRGBdefault());
+                    break;
+                }
+            } // And proceed to copy the pixels
+            case DataBuffer.TYPE_INT: {
+                if (isByteData) { // There are int data already but the new data are bytes
+                    forceRGB();
+                    canArraycopy = false;
+                    break;
+                } else if (!forcedRGB || model.equals(ColorModel.getRGBdefault())) {
+                    canArraycopy = true;
+                    break;
+                } // Else fallback to the RGB conversion
+            }
+            case DataBuffer.TYPE_BYTE: {
+                if (isByteData && !forcedRGB) {
+                    canArraycopy = true;
+                    break;
+                }
+
+                // RGB conversion
+                canArraycopy = false;
+                break;
+            } default: {
+                throw new IllegalStateException(Messages.getString("awt.06")); //$NON-NLS-1$
+            }
+        }
+
+        off += x;
+        int maxOffset = off + h * scansize;
+        int dstOffset = x + y * width;
+
+        if (canArraycopy) {
+            Object dstArray = isByteData ? (Object) bData : (Object) iData;
+            for (; off < maxOffset; off += scansize, dstOffset += width) {
+                System.arraycopy(pixels, off, dstArray, dstOffset, w);
+            }
+        } else {
+            // RGB conversion
+            for (; off < maxOffset; off += scansize, dstOffset += width) {
+                int srcPos = off;
+                int dstPos = dstOffset;
+                int maxDstPos = dstOffset + w;
+                for (; dstPos < maxDstPos; dstPos++, srcPos++) {
+                    iData[dstPos] = model.getRGB(
+                            isByteData ?
+                            ((byte[])pixels)[srcPos] :
+                            ((int[])pixels)[srcPos]
+                    );
+                }
+            }
+        }
+    }
+
+    private void forceRGB() {
+        if (!forcedRGB) {
+            forcedRGB = true;
+            int size = width*height;
+            int rgbData[] = new int[size];
+
+            if (bData != null) {
+                for (int i=0; i<size; i++) {
+                    rgbData[i] = cm.getRGB(bData[i]);
+                }
+            } else if (iData != null) {
+                for (int i=0; i<size; i++) {
+                    rgbData[i] = cm.getRGB(iData[i]);
+                }
+            }
+
+            cm = ColorModel.getRGBdefault();
+            DataBufferInt db = new DataBufferInt(rgbData, size);
+            int masks[] = new int[] {0x00ff0000, 0x0000ff00, 0x000000ff, 0xff000000};
+            raster = Raster.createPackedRaster(db, width, height, width, masks, null);
+            iData = accessor.getDataInt(db);
+            bData = null;
+            transferType = DataBuffer.TYPE_INT;
+        }
+    }
+
+    private void reset() {
+        width = 0;
+        height = 0;
+        forcedRGB = false;
+        cm = null;
+        iData = null;
+        bData = null;
+        transferType = DataBuffer.TYPE_UNDEFINED;
+        raster = null;
+    }
+
+    private void createRaster(int dataType) {
+        boolean createdValidBuffer = false;
+        try{
+            raster = cm.createCompatibleWritableRaster(width, height);
+            int rasterType = raster.getDataBuffer().getDataType();
+            if (rasterType == dataType) {
+                switch (rasterType) {
+                    case DataBuffer.TYPE_INT: {
+                        iData = accessor.getDataInt(raster.getDataBuffer());
+                        if (iData != null) {
+                            createdValidBuffer = true;
+                        }
+                        break;
+                    }
+                    case DataBuffer.TYPE_BYTE: {
+                        bData = accessor.getDataByte(raster.getDataBuffer());
+                        if (bData != null) {
+                            createdValidBuffer = true;
+                        }
+                        break;
+                    }
+                    default:
+                        createdValidBuffer = false;
+                }
+
+                if(cm == ColorModel.getRGBdefault()){
+                    forcedRGB = true;
+                }
+            } else {
+                createdValidBuffer = false;
+            }
+        } catch(Exception e) {
+            createdValidBuffer = false;
+        }
+
+        if (createdValidBuffer == false) {
+            cm = ColorModel.getRGBdefault();
+            raster = cm.createCompatibleWritableRaster(width, height);
+            System.out.println(raster +" "+ width +" "+ height);
+            iData = accessor.getDataInt(raster.getDataBuffer());
+            bData = null;
+            forcedRGB = true;
+        }
+    }
+}

Propchange: incubator/harmony/enhanced/classlib/trunk/modules/awt/src/main/java/common/java/awt/image/BufferedImageFilter.java
------------------------------------------------------------------------------
    svn:eol-style = native

Modified: incubator/harmony/enhanced/classlib/trunk/modules/awt/src/main/java/common/java/awt/image/IndexColorModel.java
URL: http://svn.apache.org/viewvc/incubator/harmony/enhanced/classlib/trunk/modules/awt/src/main/java/common/java/awt/image/IndexColorModel.java?view=diff&rev=450801&r1=450800&r2=450801
==============================================================================
--- incubator/harmony/enhanced/classlib/trunk/modules/awt/src/main/java/common/java/awt/image/IndexColorModel.java
(original)
+++ incubator/harmony/enhanced/classlib/trunk/modules/awt/src/main/java/common/java/awt/image/IndexColorModel.java
Thu Sep 28 03:53:51 2006
@@ -48,10 +48,6 @@
 
     private int totalInserted = 0;  // Number of inserted values into Cache table
 
-    static {
-        AwtImageBackdoorAccessorImpl.init();
-    }
-
     public IndexColorModel(int bits, int size, int cmap[], int start,
             int transferType, BigInteger validBits) {
 

Modified: incubator/harmony/enhanced/classlib/trunk/modules/awt/src/main/java/common/java/awt/image/VolatileImage.java
URL: http://svn.apache.org/viewvc/incubator/harmony/enhanced/classlib/trunk/modules/awt/src/main/java/common/java/awt/image/VolatileImage.java?view=diff&rev=450801&r1=450800&r2=450801
==============================================================================
--- incubator/harmony/enhanced/classlib/trunk/modules/awt/src/main/java/common/java/awt/image/VolatileImage.java
(original)
+++ incubator/harmony/enhanced/classlib/trunk/modules/awt/src/main/java/common/java/awt/image/VolatileImage.java
Thu Sep 28 03:53:51 2006
@@ -25,7 +25,6 @@
 import java.awt.Image;
 import java.awt.ImageCapabilities;
 import java.awt.Transparency;
-import java.awt.image.AwtImageBackdoorAccessorImpl;
 
 /**
  * Volatile image implementation
@@ -44,11 +43,6 @@
     public static final int IMAGE_OK = 0;
 
     public static final int IMAGE_RESTORED = 1;
-
-
-    static {
-        AwtImageBackdoorAccessorImpl.init();
-    }
 
     protected int transparency = OPAQUE;
 

Modified: incubator/harmony/enhanced/classlib/trunk/modules/awt/src/main/java/common/org/apache/harmony/awt/gl/AwtImageBackdoorAccessor.java
URL: http://svn.apache.org/viewvc/incubator/harmony/enhanced/classlib/trunk/modules/awt/src/main/java/common/org/apache/harmony/awt/gl/AwtImageBackdoorAccessor.java?view=diff&rev=450801&r1=450800&r2=450801
==============================================================================
--- incubator/harmony/enhanced/classlib/trunk/modules/awt/src/main/java/common/org/apache/harmony/awt/gl/AwtImageBackdoorAccessor.java
(original)
+++ incubator/harmony/enhanced/classlib/trunk/modules/awt/src/main/java/common/org/apache/harmony/awt/gl/AwtImageBackdoorAccessor.java
Thu Sep 28 03:53:51 2006
@@ -26,6 +26,8 @@
 import java.awt.Image;
 import java.awt.image.DataBuffer;
 import java.awt.image.IndexColorModel;
+import java.awt.image.DataBufferInt;
+
 import org.apache.harmony.awt.gl.image.DataBufferListener;
 
 /**
@@ -39,6 +41,8 @@
     static protected AwtImageBackdoorAccessor inst;
 
     public static AwtImageBackdoorAccessor getInstance(){
+        // First we need to run the static initializer in the DataBuffer class to resolve
inst.
+        new DataBufferInt(0);
         return inst;
     }
 

Modified: incubator/harmony/enhanced/classlib/trunk/modules/awt/src/main/java/common/org/apache/harmony/awt/internal/nls/messages.properties
URL: http://svn.apache.org/viewvc/incubator/harmony/enhanced/classlib/trunk/modules/awt/src/main/java/common/org/apache/harmony/awt/internal/nls/messages.properties?view=diff&rev=450801&r1=450800&r2=450801
==============================================================================
--- incubator/harmony/enhanced/classlib/trunk/modules/awt/src/main/java/common/org/apache/harmony/awt/internal/nls/messages.properties
(original)
+++ incubator/harmony/enhanced/classlib/trunk/modules/awt/src/main/java/common/org/apache/harmony/awt/internal/nls/messages.properties
Thu Sep 28 03:53:51 2006
@@ -19,3 +19,5 @@
 awt.02='{0}' parameter has zero length
 awt.03='{0}' iterator parameter is null
 awt.04='{0}' iterator parameter has zero length
+awt.05=Operation cannot be null
+awt.06=Unexpected type of the internal data buffer

Added: incubator/harmony/enhanced/classlib/trunk/modules/awt/src/test/api/java/common/java/awt/image/BufferedImageFilterTest.java
URL: http://svn.apache.org/viewvc/incubator/harmony/enhanced/classlib/trunk/modules/awt/src/test/api/java/common/java/awt/image/BufferedImageFilterTest.java?view=auto&rev=450801
==============================================================================
--- incubator/harmony/enhanced/classlib/trunk/modules/awt/src/test/api/java/common/java/awt/image/BufferedImageFilterTest.java
(added)
+++ incubator/harmony/enhanced/classlib/trunk/modules/awt/src/test/api/java/common/java/awt/image/BufferedImageFilterTest.java
Thu Sep 28 03:53:51 2006
@@ -0,0 +1,140 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance    
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+/**
+ * @author Oleg V. Khaschansky
+ * @version $Revision$
+ */
+
+package java.awt.image;
+
+import junit.framework.TestCase;
+
+import java.awt.geom.AffineTransform;
+import java.awt.*;
+
+public class BufferedImageFilterTest extends TestCase {
+    private BufferedImageFilter filter;
+    private BufferedImageOp op;
+
+    private BufferedImageFilter lookupFilter;
+    private LookupOp lop;
+
+    public static void main(String[] args) {
+        junit.textui.TestRunner.run(BufferedImageFilterTest.class);
+    }
+
+    public BufferedImageFilterTest(String name) {
+        super(name);
+    }
+
+    protected void setUp() throws Exception {
+        super.setUp();
+
+        //float kernel[] = {0.1f, 0.1f, 0.1f, 0.1f, 0.2f, 0.1f, 0.1f, 0.1f, 0.1f};
+        op = new AffineTransformOp(AffineTransform.getRotateInstance(Math.PI/4.), null);
+        filter = new BufferedImageFilter(op);
+
+        byte lut[] = new byte[256];
+        for (int i = 0; i < lut.length; i++) {
+            lut[i] = (byte)(255 - i);
+        }
+        ByteLookupTable blut = new ByteLookupTable(0, lut);
+        lop = new LookupOp(blut, null);
+        lookupFilter = new BufferedImageFilter(lop);
+    }
+
+    public void testBufferedImageFilter() throws Exception {
+        BufferedImageOp op = new AffineTransformOp(
+                AffineTransform.getTranslateInstance(0, 0),
+                AffineTransformOp.TYPE_NEAREST_NEIGHBOR
+        );
+
+        new BufferedImageFilter(op);
+
+        try {
+            new BufferedImageFilter(null);
+            fail("Should throw NullPointerException, but was not.");
+        } catch (NullPointerException e) {
+        } catch (Exception e) {
+            fail("NullPointerException expected");
+        }
+    }
+
+    public void testGetBufferedImageOp() throws Exception {
+        assertEquals(op, filter.getBufferedImageOp());
+    }
+
+    public void testFilterRGB() throws Exception {
+        // Create source
+        BufferedImage im = new BufferedImage(10, 10, BufferedImage.TYPE_INT_RGB);
+        for (int i=0; i<100; i++) {
+            im.setRGB(i%10, i/10, i + ((i+1)<<8) + ((i+2)<<16));
+        }
+        // Create filtered image
+        Image img = Toolkit.getDefaultToolkit().createImage(new FilteredImageSource(im.getSource(),
lookupFilter));
+        BufferedImage dstIm = new BufferedImage(10, 10, BufferedImage.TYPE_INT_RGB);
+        dstIm.getGraphics().drawImage(img, 0, 0, null);
+        // Check the result
+        for (int i=0; i<100; i++) {
+            int k = 255 - i;
+            int rgb = dstIm.getRGB(i%10, i/10);
+            assertEquals(k, rgb & 0xFF);
+            assertEquals(k-1, (rgb >> 8) & 0xFF);
+            assertEquals(k-2, (rgb >> 16) & 0xFF);
+        }
+    }
+
+    public void testFilterByteIndexed() throws Exception {
+        BufferedImage im = new BufferedImage(20, 20, BufferedImage.TYPE_BYTE_INDEXED);
+        for (int i=0; i<400; i++) {
+            im.getRaster().setPixel(i%20, i/20, new int[]{i});
+        }
+        Image img = Toolkit.getDefaultToolkit().createImage(new FilteredImageSource(im.getSource(),
filter));
+
+        BufferedImage expIm = op.filter(im, null);
+        BufferedImage wasIm = op.filter(im, null);
+        wasIm.getGraphics().drawImage(img, 0, 0, null);
+
+        int idata[] = null;
+        int exp[] = expIm.getRaster().getPixels(0,0,expIm.getWidth(),expIm.getHeight(),idata);
+        int was[] = wasIm.getRaster().getPixels(0,0,wasIm.getWidth(),wasIm.getHeight(),idata);
+        for (int i=0; i<exp.length; i++) {
+            assertEquals(exp[i], was[i]);
+        }
+    }
+
+    public void testFilterByte()  throws Exception {
+        BufferedImage im = new BufferedImage(20, 20, BufferedImage.TYPE_3BYTE_BGR);
+        for (int i=0; i<400; i++) {
+            im.getRaster().setPixel(i%20, i/20, new int[]{i,i+1,i+2});
+        }
+        Image img = Toolkit.getDefaultToolkit().createImage(new FilteredImageSource(im.getSource(),
filter));
+
+        BufferedImage expIm = op.filter(im, null);
+        BufferedImage wasIm = op.filter(im, null);
+        wasIm.getGraphics().drawImage(img, 0, 0, null);
+
+        int idata[] = null;
+        int exp[] = expIm.getRaster().getPixels(0,0,expIm.getWidth(),expIm.getHeight(),idata);
+        int was[] = wasIm.getRaster().getPixels(0,0,wasIm.getWidth(),wasIm.getHeight(),idata);
+        for (int i=0; i<exp.length; i++) {
+            assertEquals(exp[i], was[i]);
+        }
+    }
+}

Propchange: incubator/harmony/enhanced/classlib/trunk/modules/awt/src/test/api/java/common/java/awt/image/BufferedImageFilterTest.java
------------------------------------------------------------------------------
    svn:eol-style = native



Mime
View raw message