int kheight = interp.getHeight(); int dstWidth = dst.getWidth(); int dstHeight = dst.getHeight(); int dstBands = dst.getNumBands(); int lineStride = dst.getScanlineStride(); int pixelStride = dst.getPixelStride(); int[] bandOffsets = dst.getBandOffsets(); double[][] data = dst.getDoubleDataArrays(); lineOffset += lineStride; warpRect(dst.getX(), dst.getY() + h, dstWidth, 1, warpData);
new RasterAccessor( source, srcRect, formatTags[0], getSourceImage(0).getColorModel()); RasterAccessor dstAccessor = new RasterAccessor(dest, destRect, formatTags[1], getColorModel()); switch (dstAccessor.getDataType()) { case DataBuffer.TYPE_BYTE: byteLoop(srcAccessor, dstAccessor); if (dstAccessor.isDataCopy()) { dstAccessor.clampDataArrays(); dstAccessor.copyDataToRaster();
private void byteLoop(RasterAccessor src, RasterAccessor dst) { int dwidth = dst.getWidth(); int dheight = dst.getHeight(); int numBands = dst.getNumBands(); int dstOffsetsForBands[] = dst.getOffsetsForBands(); int dstBandOffsets[] = dst.getBandOffsets(); int dstPixelStride = dst.getPixelStride(); int dstScanlineStride = dst.getScanlineStride(); int srcOffsetsForBands[] = src.getOffsetsForBands(); int srcBandOffsets[] = src.getBandOffsets(); int srcPixelStride = src.getPixelStride(); int srcScanlineStride = src.getScanlineStride(); byte dstDataArrays[][] = dst.getByteDataArrays(); byte srcDataArrays[][] = src.getByteDataArrays(); byte srcData[] = srcDataArrays[numBands - 1];
destWidth = destAcc.getWidth(); destHeight = destAcc.getHeight(); destBands = destAcc.getNumBands(); dstBandOffsets = destAcc.getBandOffsets(); dstPixelStride = destAcc.getPixelStride(); dstScanlineStride = destAcc.getScanlineStride(); srcBandOffsets = srcAcc.getBandOffsets(); srcPixelStride = srcAcc.getPixelStride(); srcScanlineStride = srcAcc.getScanlineStride(); switch (destAcc.getDataType()) { case DataBuffer.TYPE_BYTE: convolveAsByteData(srcAcc, destAcc); if (destAcc.isDataCopy()) { destAcc.clampDataArrays(); destAcc.copyDataToRaster();
int s1LineStride = s1.getScanlineStride(); int s1PixelStride = s1.getPixelStride(); int[] s1BandOffsets = s1.getBandOffsets(); double[][] s1Data = s1.getDoubleDataArrays(); int s2LineStride = s2.getScanlineStride(); int s2PixelStride = s2.getPixelStride(); int[] s2BandOffsets = s2.getBandOffsets(); double[][] s2Data = s2.getDoubleDataArrays(); int a1LineStride = a1.getScanlineStride(); int a1PixelStride = a1.getPixelStride(); int a1BandOffset = a1.getBandOffset(0); double[] a1Data = a1.getDoubleDataArray(0); double[] a2Data = null; if (alpha2 != null) { a2LineStride = a2.getScanlineStride(); a2PixelStride = a2.getPixelStride(); a2BandOffset = a2.getBandOffset(0); a2Data = a2.getDoubleDataArray(0); int dLineStride = d.getScanlineStride(); int dPixelStride = d.getPixelStride(); int[] dBandOffsets = d.getBandOffsets(); double[][] dData = d.getDoubleDataArrays(); int dwidth = d.getWidth(); int dheight = d.getHeight();
@Override protected void computeRect(Raster[] sources, WritableRaster dest, Rectangle destRect) { RasterAccessor latAcc = new RasterAccessor(sources[0], destRect, latRasterFormatTag, getSourceImage(0).getColorModel()); RasterAccessor lonAcc = new RasterAccessor(sources[1], destRect, lonRasterFormatTag, getSourceImage(1).getColorModel()); RasterAccessor maskAcc = null; if (maskRasterFormatTag != null) { maskAcc = new RasterAccessor(sources[2], destRect, maskRasterFormatTag, getSourceImage(2).getColorModel()); } RasterAccessor destAcc = new RasterAccessor(dest, destRect, targetRasterFormatTag, getColorModel()); if (latAcc.getDataType() == DataBuffer.TYPE_DOUBLE) { processDoubleLoop(latAcc, lonAcc, maskAcc, destAcc, destRect); } else if (latAcc.getDataType() == DataBuffer.TYPE_FLOAT) { processFloatLoop(latAcc, lonAcc, maskAcc, destAcc, destRect); } else { throw new IllegalStateException("unsupported data type: " + latAcc.getDataType()); } destAcc.copyDataToRaster(); }
RasterAccessor dst = new RasterAccessor(dest, destRect, formatTags[1], getColorModel()); RasterAccessor src = new RasterAccessor(sources[0], srcRect, formatTags[0], getSource(0).getColorModel()); switch (dst.getDataType()) if (dst.needsClamping()) dst.clampDataArrays(); dst.copyDataToRaster();
public int[][] roiBoundCheck(int dataType, Number[][] pixelArray, int[][] weightArray, boolean bilinearUsed) { int x0 = src[dataType].getX() + posx / src[dataType].getPixelStride(); int y0 = src[dataType].getY() + (posy - src[dataType].getBandOffset(0)) / src[dataType].getScanlineStride(); // get the 4/16 weight if (roiBounds.contains(x0, y0)) { for (int i = 0; i < pixelArray.length; i++) { for (int j = 0; j < pixelArray.length; j++) { if (bilinearUsed) { weightArray[i][j] = roiIter.getSample(x0 + j, y0 + i, 0); } else { weightArray[i][j] = roiIter.getSample(x0 + (j - 1), y0 + (i - 1), 0); } } } } return weightArray; }
private void computeRect(final Raster sources, final WritableRaster destinationRaster, final Rectangle destRect) { // Clear the background and return if no sources. if (sources == null) { ImageUtil.fillBackground(destinationRaster, destRect, backgroundValues); return; } // Determine the format tag id. final SampleModel[] sourceSM = new SampleModel[] { sources.getSampleModel() }; final int formatTagID = RasterAccessor.findCompatibleTag(sourceSM, destinationRaster.getSampleModel()); // Create dest accessor. final RasterAccessor rasterAccessor = new RasterAccessor(destinationRaster, destRect, new RasterFormatTag(destinationRaster.getSampleModel(), formatTagID), null); final int dataType = rasterAccessor.getDataType(); // Branch to data type-specific method. switch (dataType) { case DataBuffer.TYPE_BYTE: computeRect(rasterAccessor); break; default: throw new UnsupportedOperationException("The following datatype isn't actually supported " + dataType); } rasterAccessor.copyDataToRaster(); }
private void convolveAsFloatData(RasterAccessor srcAcc, RasterAccessor destAcc) { float destData[][] = destAcc.getFloatDataArrays(); float srcData[][] = srcAcc.getFloatDataArrays(); int y = destAcc.getY(); float destBand[] = destData[k]; float srcBand[] = srcData[k]; int dstScanlineOffset = dstBandOffsets[k]; for (int j = 0; j < destHeight; j++, y++) { int x = destAcc.getX(); int srcPixelOffset = srcScanlineOffset; int dstPixelOffset = dstScanlineOffset;
private void convolveAsDoubleData(RasterAccessor srcAcc, RasterAccessor destAcc) { double destData[][] = destAcc.getDoubleDataArrays(); double srcData[][] = srcAcc.getDoubleDataArrays(); int y = destAcc.getY(); double destBand[] = destData[k]; double srcBand[] = srcData[k]; int dstScanlineOffset = dstBandOffsets[k]; for (int j = 0; j < destHeight; j++, y++) { int x = destAcc.getX(); int srcPixelOffset = srcScanlineOffset; int dstPixelOffset = dstScanlineOffset;
private void convolveAsByteData(RasterAccessor srcAcc, RasterAccessor destAcc) { byte srcData[][] = srcAcc.getByteDataArrays(); byte destData[][] = destAcc.getByteDataArrays(); int destY = destAcc.getY(); byte destBandData[] = destData[k]; byte srcBandDat[] = srcData[k]; int dstScanlineOffset = dstBandOffsets[k]; for (int j = 0; j < destHeight; j++, destY++) { int destX = destAcc.getX(); int srcPixelOffset = srcScanlineOffset; int dstPixelOffset = dstScanlineOffset;
/** * Do lookups for the specified destination rectangle * * @param sources an array of source Rasters * @param dest a WritableRaster tile containing the area to be computed. * @param destRect the rectangle within dest to be processed. */ @Override protected void computeRect(Raster[] sources, WritableRaster dest, Rectangle destRect) { RasterFormatTag[] formatTags = getFormatTags(); Raster source = sources[0]; Rectangle srcRect = mapDestRect(destRect, 0); RasterAccessor srcAcc = new RasterAccessor(source, srcRect, formatTags[0], getSourceImage(0).getColorModel()); RasterAccessor destAcc = new RasterAccessor(dest, destRect, formatTags[1], getColorModel()); doLookup(srcAcc, destAcc); }
private void computeRect( PlanarImage source, RasterAccessor d, RandomIter roiIter, boolean roiContainsTile) { switch (d.getDataType()) { case DataBuffer.TYPE_BYTE: computeRectByte(source, d, roiIter, roiContainsTile); break; case DataBuffer.TYPE_USHORT: computeRectUShort(source, d, roiIter, roiContainsTile); break; case DataBuffer.TYPE_SHORT: computeRectShort(source, d, roiIter, roiContainsTile); break; case DataBuffer.TYPE_INT: computeRectInt(source, d, roiIter, roiContainsTile); break; case DataBuffer.TYPE_FLOAT: computeRectFloat(source, d, roiIter, roiContainsTile); break; case DataBuffer.TYPE_DOUBLE: computeRectDouble(source, d, roiIter, roiContainsTile); break; } }
+ (i * roiAccessor.getScanlineStride()); } else { weightArrayIndex[i][j] = posx + (j - 1) + posYroi + ((i - 1) * roiAccessor.getScanlineStride());
new RasterAccessor(source, srcRect, formatTags[0], getSourceImage(0).getColorModel()); new RasterAccessor(dest, destRect, formatTags[1], getColorModel()); destWidth = destAcc.getWidth(); destHeight = destAcc.getHeight(); destBands = destAcc.getNumBands(); destBandOffsets = destAcc.getBandOffsets(); destPixelStride = destAcc.getPixelStride(); destScanlineStride = destAcc.getScanlineStride(); srcBandOffsets = srcAcc.getBandOffsets(); srcPixelStride = srcAcc.getPixelStride(); srcScanlineStride = srcAcc.getScanlineStride(); switch (destAcc.getDataType()) { case DataBuffer.TYPE_BYTE: calcByteData(srcAcc, destAcc); if (destAcc.isDataCopy()) { destAcc.clampDataArrays(); destAcc.copyDataToRaster();
@Override protected void computeRect(Raster[] sources, WritableRaster dest, Rectangle destRect) { RasterFormatTag[] formatTags = getFormatTags(); RasterAccessor s = new RasterAccessor(sources[0], destRect, formatTags[0], getSourceImage(0).getColorModel()); RasterAccessor d = new RasterAccessor(dest, destRect, formatTags[1], getColorModel()); switch (d.getDataType()) { case 4: // '\004' computeRectFloat(s, d); break; case 5: // '\005' computeRectDouble(s, d); break; } d.copyDataToRaster(); }
RasterAccessor srcAccessor = new RasterAccessor(tile, srcRect, formatTags[0], getSourceImage(0).getColorModel()); RasterAccessor destAccessor = new RasterAccessor(dest, destRect, formatTags[1], getColorModel()); roiAccessor = new RasterAccessor(roiRaster, srcRect, RasterAccessor.findCompatibleTags( new RenderedImage[] { srcROIImage }, srcROIImage)[0], srcROIImage.getColorModel()); int dataType = destAccessor.getDataType(); if (destAccessor.needsClamping()) { destAccessor.clampDataArrays(); destAccessor.copyDataToRaster();
final int formatTagID = RasterAccessor.findCompatibleTag(sourceSM, destinationRaster.getSampleModel()); final RasterAccessor rasterAccessor = new RasterAccessor(destinationRaster, destRect, new RasterFormatTag(destinationRaster.getSampleModel(), formatTagID), null); final int dataType = rasterAccessor.getDataType(); rasterAccessor.copyDataToRaster();
private void calcFloatData(RasterAccessor srcAcc, RasterAccessor destAcc) { float destData[][] = destAcc.getFloatDataArrays(); float srcData[][] = srcAcc.getFloatDataArrays(); int destY = destAcc.getY(); int destX = destAcc.getX();