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
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); } } } }