public Raster getTile(int tileX, int tileY) { return adaptee.getTile(tileX, tileY); }
@Override public Raster computeTile(int tx, int ty) { final RenderedImage sourceImage = getSourceImage(0); final Raster sourceRaster = sourceImage.getTile(tx, ty); return op.filter(sourceRaster, null); } }
final Raster tile = renderedImage.getTile(xTile, yTile);
private static Raster getRaster(final RenderedImage image) { return image instanceof BufferedImage ? ((BufferedImage) image).getRaster() : image.getNumXTiles() == 1 && image.getNumYTiles() == 1 ? image.getTile(0, 0) : image.getData(); }
for (int tx = minTileX; tx < maxTileX; tx++) { final Raster r = src.getTile(tx, ty);
for (int xT = pImage.getMinTileX(); xT < pImage.getNumXTiles(); xT++) { Raster raster = pImage.getTile(xT, yT); int xIncrement = pFast ? Math.max(raster.getWidth() / 10, 1) : 1; int yIncrement = pFast ? Math.max(raster.getHeight() / 10, 1) : 1;
for (int tx = minTileX; tx < maxTileX; tx++) { final Raster r = src.getTile(tx, ty);
Raster raster = asByteRaster(renderedImage.getTile(tileX, tileY), renderedImage.getColorModel());
private void writeImageData(final IIOImage image) throws IOException { // - dump data as is (or convert, if TYPE_INT_xxx) // Enforce RGB/CMYK order for such data! // TODO: Loop over x/y tiles, using 0,0 is only valid for BufferedImage // TODO: PNM/PAM does not support tiling, we must iterate all tiles along the x-axis for each row we write Raster tile = image.hasRaster() ? image.getRaster() : image.getRenderedImage().getTile(0, 0); SampleModel sampleModel = tile.getSampleModel(); DataBuffer dataBuffer = tile.getDataBuffer(); int tileWidth = tile.getWidth(); int tileHeight = tile.getHeight(); final int transferType = sampleModel.getTransferType(); Object data = null; for (int y = 0; y < tileHeight; y++) { data = sampleModel.getDataElements(0, y, tileWidth, 1, data, dataBuffer); // TODO: Support other (short, float) data types if (transferType == DataBuffer.TYPE_BYTE) { imageOutput.write((byte[]) data); } else if (transferType == DataBuffer.TYPE_USHORT) { short[] shortData = (short[]) data; imageOutput.writeShorts(shortData, 0, shortData.length); } processImageProgress(y * 100f / tileHeight); // TODO: Take tile y into account if (abortRequested()) { processWriteAborted(); break; } } }
/** * Sets dataBuffer to the correct buffer for the pixel (x, y) = (xLocal + boundsRect.x, yLocal + boundsRect.y). * * @param xLocal the X coordinate in the local coordinate system. * @param yLocal the Y coordinate in the local coordinate system. */ private Raster makeCurrent(int xLocal, int yLocal) { final int tileX = xTiles[xLocal]; final int tileY = yTiles[yLocal]; return im.getTile(tileX, tileY); }
/** * Sets dataBuffer to the correct buffer for the pixel (x, y) = (xLocal + boundsRect.x, yLocal + boundsRect.y). * * @param xLocal the X coordinate in the local coordinate system. * @param yLocal the Y coordinate in the local coordinate system. */ private Raster makeCurrent(int xLocal, int yLocal) { final int tileX = xTiles[xLocal]; final int tileY = yTiles[yLocal]; return im.getTile(tileX, tileY); }
/** * Sets dataBuffer to the correct buffer for the pixel (x, y) = (xLocal + boundsRect.x, yLocal + boundsRect.y). * * @param xLocal the X coordinate in the local coordinate system. * @param yLocal the Y coordinate in the local coordinate system. */ private Raster makeCurrent(int xLocal, int yLocal) { final int tileX = xTiles[xLocal]; final int tileY = yTiles[yLocal]; return im.getTile(tileX, tileY); }
/** * Update current raster from tiles array coordinates. * * @param tileX current X coordinate from rendered image tiles array. * @param tileY current Y coordinate from rendered image tiles array. */ protected void updateCurrentRaster(int tileX, int tileY){ currentRaster = renderedImage.getTile(tileX, tileY); }
final Raster sourceRaster = sourceImage.getTile(tx, ty); final int w = sourceRaster.getWidth(); final int h = sourceRaster.getHeight();
private void assertHasAlpha(RenderedImage ri) { ColorModel cm = ri.getColorModel(); assertTrue(cm.hasAlpha()); int numComponents = cm.getNumComponents(); assertEquals(4, numComponents); // Make sure the topleft pixel is transparent Raster raster = ri.getTile(0, 0); if (cm instanceof ComponentColorModel) { // Get the value of the alpha component assertEquals(0, raster.getSample(0, 0, numComponents - 1)); } else if (cm instanceof IndexColorModel) { int transparentPixel = ((IndexColorModel) cm).getTransparentPixel(); assertEquals(transparentPixel, raster.getSample(0, 0, 0)); } } }
@Override public Raster computeTile(int tx, int ty) { final RenderedImage sourceImage = getSourceImage(0); final Raster sourceRaster = sourceImage.getTile(tx, ty); return op.filter(sourceRaster, null); }
/** * Sets dataBuffer to the correct buffer for the pixel (x, y) = (xLocal + boundsRect.x, yLocal + boundsRect.y). * * @param xLocal the X coordinate in the local coordinate system. * @param yLocal the Y coordinate in the local coordinate system. */ private Raster makeCurrent(int xLocal, int yLocal) { final int tileX = PlanarImage.XToTileX(xLocal, tileGridXOffset, tileWidth); final int tileY = PlanarImage.YToTileY(yLocal, tileGridYOffset, tileHeight); return im.getTile(tileX, tileY); }
/** * Create Byte type default rendered image iterator. * * @param renderedImage image which will be follow by iterator. * @param subArea {@code Rectangle} which represent image sub area iteration. * @throws IllegalArgumentException if subArea don't intersect image boundary. */ DefaultDirectByteIterator(final RenderedImage renderedImage, final Rectangle subArea) { super(renderedImage, subArea); assert (renderedImage.getTile(tMinX, tMinY).getDataBuffer().getDataType() == DataBuffer.TYPE_BYTE) : "renderedImage datas or not Byte type"; }
private static Raster getRaster(final RenderedImage image) { return image instanceof BufferedImage ? ((BufferedImage) image).getRaster() : image.getNumXTiles() == 1 && image.getNumYTiles() == 1 ? image.getTile(0, 0) : image.getData(); }