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