1125 lines · 38.7 KB · Java
RawDownload
    public void setRaster(WritableRaster dstRast) {        this.dstRast = dstRast;    }     public abstract void writePixel(int x, int y);} class SolidPixelWriter extends PixelWriter {    protected Object srcData;     SolidPixelWriter(Object srcPixel) {        this.srcData = srcPixel;    }     public void writePixel(int x, int y) {        dstRast.setDataElements(x, y, srcData);    }} abstract class XorPixelWriter extends PixelWriter {    protected ColorModel dstCM;     public void writePixel(int x, int y) {        Object dstPixel = dstRast.getDataElements(x, y, null);        xorPixel(dstPixel);        dstRast.setDataElements(x, y, dstPixel);    }     protected abstract void xorPixel(Object pixData);     public static class ByteData extends XorPixelWriter {        byte[] xorData;         ByteData(Object srcPixel, Object xorPixel) {            this.xorData = (byte[]) srcPixel;            xorPixel(xorPixel);            this.xorData = (byte[]) xorPixel;        }         protected void xorPixel(Object pixData) {            byte[] dstData = (byte[]) pixData;            for (int i = 0; i < dstData.length; i++) {                dstData[i] ^= xorData[i];            }        }    }     public static class ShortData extends XorPixelWriter {        short[] xorData;         ShortData(Object srcPixel, Object xorPixel) {            this.xorData = (short[]) srcPixel;            xorPixel(xorPixel);            this.xorData = (short[]) xorPixel;        }         protected void xorPixel(Object pixData) {            short[] dstData = (short[]) pixData;            for (int i = 0; i < dstData.length; i++) {                dstData[i] ^= xorData[i];            }        }    }     public static class IntData extends XorPixelWriter {        int[] xorData;         IntData(Object srcPixel, Object xorPixel) {            this.xorData = (int[]) srcPixel;            xorPixel(xorPixel);            this.xorData = (int[]) xorPixel;        }         protected void xorPixel(Object pixData) {            int[] dstData = (int[]) pixData;            for (int i = 0; i < dstData.length; i++) {                dstData[i] ^= xorData[i];            }        }    }     public static class FloatData extends XorPixelWriter {        int[] xorData;         FloatData(Object srcPixel, Object xorPixel) {            float[] srcData = (float[]) srcPixel;            float[] xorData = (float[]) xorPixel;            this.xorData = new int[srcData.length];            for (int i = 0; i < srcData.length; i++) {                this.xorData[i] = (Float.floatToIntBits(srcData[i]) ^                                   Float.floatToIntBits(xorData[i]));            }        }         protected void xorPixel(Object pixData) {            float[] dstData = (float[]) pixData;            for (int i = 0; i < dstData.length; i++) {                int v = Float.floatToIntBits(dstData[i]) ^ xorData[i];                dstData[i] = Float.intBitsToFloat(v);            }        }    }     public static class DoubleData extends XorPixelWriter {        long[] xorData;         DoubleData(Object srcPixel, Object xorPixel) {            double[] srcData = (double[]) srcPixel;            double[] xorData = (double[]) xorPixel;            this.xorData = new long[srcData.length];            for (int i = 0; i < srcData.length; i++) {                this.xorData[i] = (Double.doubleToLongBits(srcData[i]) ^                                   Double.doubleToLongBits(xorData[i]));            }        }         protected void xorPixel(Object pixData) {            double[] dstData = (double[]) pixData;            for (int i = 0; i < dstData.length; i++) {                long v = Double.doubleToLongBits(dstData[i]) ^ xorData[i];                dstData[i] = Double.longBitsToDouble(v);            }        }    }}

Lines 1001–1125 of 1125. Previous lines