for (int xt = 0; xt < numXTiles; xt++) { Raster srcTile = image.getTile(xt, yt); WritableRaster destTile = destImage.getWritableTile(xt, yt);
for (int xt = 0; xt < numXTiles; xt++) { Raster srcTile = image.getTile(xt, yt); WritableRaster destTile = destImage.getWritableTile(xt, yt);
/******************************************************************************* * * ******************************************************************************/ public static WritableRaster getRaster (final PlanarImage source) { assert source.getNumXTiles() == 1 : "getNumXTiles is " + source.getNumXTiles(); assert source.getNumYTiles() == 1 : "getNumYTiles is " + source.getNumYTiles(); TiledImage tiledImage = new TiledImage(source, true); return tiledImage.getWritableTile(0, 0); // FIXME: in realta' per le TiledImage non esiste: ci sono tanti raster, uno // per ogni tile, e quindi richiederne uno solo implica un bel po' di lavoro // Verificare invece se si puo' eliminare questo metodo // Si potrebbe eliminare se il demosaicing venisse implementato come un'operazione JAI. }
/******************************************************************************* * * ******************************************************************************/ public static WritableRaster getRaster (final PlanarImage source) { assert source.getNumXTiles() == 1 : "getNumXTiles is " + source.getNumXTiles(); assert source.getNumYTiles() == 1 : "getNumYTiles is " + source.getNumYTiles(); TiledImage tiledImage = new TiledImage(source, true); return tiledImage.getWritableTile(0, 0); // FIXME: in realta' per le TiledImage non esiste: ci sono tanti raster, uno // per ogni tile, e quindi richiederne uno solo implica un bel po' di lavoro // Verificare invece se si puo' eliminare questo metodo // Si potrebbe eliminare se il demosaicing venisse implementato come un'operazione JAI. }
for (int tileY = tImg.getMinTileY(); tileY <= tImg.getMaxTileY(); tileY++) { for (int tileX = tImg.getMinTileX(); tileX <= tImg.getMaxTileX(); tileX++) { WritableRaster raster = tImg.getWritableTile(tileX, tileY); WritableRaster child = raster.createWritableTranslatedChild(0, 0);
for (int tileY = tImg.getMinTileY(); tileY <= tImg.getMaxTileY(); tileY++) { for (int tileX = tImg.getMinTileX(); tileX <= tImg.getMaxTileX(); tileX++) { WritableRaster raster = tImg.getWritableTile(tileX, tileY); WritableRaster child = raster.createWritableTranslatedChild(0, 0);
for (int tileY = tImg.getMinTileY(); tileY <= tImg.getMaxTileY(); tileY++) { for (int tileX = tImg.getMinTileX(); tileX <= tImg.getMaxTileX(); tileX++) { WritableRaster raster = tImg.getWritableTile(tileX, tileY); WritableRaster child = raster.createWritableTranslatedChild(0, 0);
for (int xt = 0; xt < numXTiles; xt++) { Raster srcTile = image.getTile(xt, yt); WritableRaster destTile = destImage.getWritableTile(xt, yt);
for (int tileY = tImg.getMinTileY(); tileY <= tImg.getMaxTileY(); tileY++) { for (int tileX = tImg.getMinTileX(); tileX <= tImg.getMaxTileX(); tileX++) { WritableRaster raster = tImg.getWritableTile(tileX, tileY); WritableRaster child = raster.createWritableTranslatedChild(0, 0);
/** * Takes the 4-band ARGB image that we have been drawing into and * converts it to a single-band int image. */ private void flattenImageToInt() { int numXTiles = image.getNumXTiles(); int numYTiles = image.getNumYTiles(); SampleModel sm = RasterFactory.createPixelInterleavedSampleModel( DataBuffer.TYPE_INT, image.getWidth(), image.getHeight(), 1); TiledImage destImage = new TiledImage(0, 0, image.getWidth(), image.getHeight(), 0, 0, sm, new ComponentColorModel(ColorSpace.getInstance(ColorSpace.CS_GRAY), false, false, Transparency.OPAQUE, DataBuffer.TYPE_INT)); for (int yt = 0; yt < numYTiles; yt++) { for (int xt = 0; xt < numXTiles; xt++) { Raster srcTile = image.getTile(xt, yt); WritableRaster destTile = destImage.getWritableTile(xt, yt); int[] data = new int[srcTile.getDataBuffer().getSize()]; srcTile.getDataElements(srcTile.getMinX(), srcTile.getMinY(), srcTile.getWidth(), srcTile.getHeight(), data); Rectangle bounds = destTile.getBounds(); destTile.setPixels(bounds.x, bounds.y, bounds.width, bounds.height, data); destImage.releaseWritableTile(xt, yt); } } image = destImage; }