/* * This is machine-genereated code, DO NOT EDIT! * Code generated by com.bc.ceres.jai.opimage.ExpressionCodeGenerator. */ package com.bc.ceres.jai.opimage; import javax.media.jai.ImageLayout; import javax.media.jai.PointOpImage; import javax.media.jai.PixelAccessor; import javax.media.jai.UnpackedImageData; import java.awt.Rectangle; import java.awt.image.Raster; import java.awt.image.WritableRaster; import java.util.Vector; import java.util.Map; import static java.lang.Math.*; public final class ExpressionOpImage_1 extends PointOpImage { public ExpressionOpImage_1(Vector sources, Map config, ImageLayout layout) { super(sources, layout, config, true); // Set flag to permit in-place operation. permitInPlaceOperation(); } protected void computeRect(Raster[] srcRasters, WritableRaster destRaster, Rectangle destRectangle) { final PixelAccessor src0Acc = new PixelAccessor(getSourceImage(0)); final UnpackedImageData src0Pixels = src0Acc.getPixels(srcRasters[0], destRectangle, srcRasters[0].getSampleModel().getDataType(), false); final int src0LineStride = src0Pixels.lineStride; final int src0PixelStride = src0Pixels.pixelStride; int src0LineOffset = src0Pixels.bandOffsets[0]; final byte[] src0Data = src0Pixels.getByteData(0); final PixelAccessor src1Acc = new PixelAccessor(getSourceImage(1)); final UnpackedImageData src1Pixels = src1Acc.getPixels(srcRasters[1], destRectangle, srcRasters[1].getSampleModel().getDataType(), false); final int src1LineStride = src1Pixels.lineStride; final int src1PixelStride = src1Pixels.pixelStride; int src1LineOffset = src1Pixels.bandOffsets[0]; final short[] src1Data = src1Pixels.getShortData(0); final PixelAccessor src2Acc = new PixelAccessor(getSourceImage(2)); final UnpackedImageData src2Pixels = src2Acc.getPixels(srcRasters[2], destRectangle, srcRasters[2].getSampleModel().getDataType(), false); final int src2LineStride = src2Pixels.lineStride; final int src2PixelStride = src2Pixels.pixelStride; int src2LineOffset = src2Pixels.bandOffsets[0]; final short[] src2Data = src2Pixels.getShortData(0); final PixelAccessor src3Acc = new PixelAccessor(getSourceImage(3)); final UnpackedImageData src3Pixels = src3Acc.getPixels(srcRasters[3], destRectangle, srcRasters[3].getSampleModel().getDataType(), false); final int src3LineStride = src3Pixels.lineStride; final int src3PixelStride = src3Pixels.pixelStride; int src3LineOffset = src3Pixels.bandOffsets[0]; final int[] src3Data = src3Pixels.getIntData(0); final PixelAccessor src4Acc = new PixelAccessor(getSourceImage(4)); final UnpackedImageData src4Pixels = src4Acc.getPixels(srcRasters[4], destRectangle, srcRasters[4].getSampleModel().getDataType(), false); final int src4LineStride = src4Pixels.lineStride; final int src4PixelStride = src4Pixels.pixelStride; int src4LineOffset = src4Pixels.bandOffsets[0]; final float[] src4Data = src4Pixels.getFloatData(0); final PixelAccessor src5Acc = new PixelAccessor(getSourceImage(5)); final UnpackedImageData src5Pixels = src5Acc.getPixels(srcRasters[5], destRectangle, srcRasters[5].getSampleModel().getDataType(), false); final int src5LineStride = src5Pixels.lineStride; final int src5PixelStride = src5Pixels.pixelStride; int src5LineOffset = src5Pixels.bandOffsets[0]; final double[] src5Data = src5Pixels.getDoubleData(0); final PixelAccessor destAcc = new PixelAccessor(this); final UnpackedImageData destPixels = destAcc.getPixels(destRaster, destRectangle, getSampleModel().getDataType(), true); final int destLineStride = destPixels.lineStride; final int destPixelStride = destPixels.pixelStride; int destLineOffset = destPixels.bandOffsets[0]; final double[] destData = destPixels.getDoubleData(0); final int width = destRectangle.width; final int height = destRectangle.height; for (int y = 0; y < height; y++) { int src0PixelOffset = src0LineOffset; src0LineOffset += src0LineStride; int src1PixelOffset = src1LineOffset; src1LineOffset += src1LineStride; int src2PixelOffset = src2LineOffset; src2LineOffset += src2LineStride; int src3PixelOffset = src3LineOffset; src3LineOffset += src3LineStride; int src4PixelOffset = src4LineOffset; src4LineOffset += src4LineStride; int src5PixelOffset = src5LineOffset; src5LineOffset += src5LineStride; int destPixelOffset = destLineOffset; destLineOffset += destLineStride; for (int x = 0; x < width; x++) { final byte _0 = src0Data[src0PixelOffset]; final short _1 = src1Data[src1PixelOffset]; final short _2 = src2Data[src2PixelOffset]; final int _3 = src3Data[src3PixelOffset]; final float _4 = src4Data[src4PixelOffset]; final double _5 = src5Data[src5PixelOffset]; destData[destPixelOffset] = (double)(_0 * _1 / (_2 & 0xffff) % _3 + _4 - _5); src0PixelOffset += src0PixelStride; src1PixelOffset += src1PixelStride; src2PixelOffset += src2PixelStride; src3PixelOffset += src3PixelStride; src4PixelOffset += src4PixelStride; src5PixelOffset += src5PixelStride; destPixelOffset += destPixelStride; } // next x } // next y destAcc.setPixels(destPixels); } }