/** * Sets every samples in the given image to the given value. This method is typically used for * clearing an image content. * * @param image The image to fill. * @param value The value to to given to every samples. */ public static void fill(final WritableRenderedImage image, final Number value) { int y = image.getMinTileY(); for (int ny = image.getNumYTiles(); --ny >= 0; ) { int x = image.getMinTileX(); for (int nx = image.getNumXTiles(); --nx >= 0; ) { final WritableRaster raster = image.getWritableTile(x, y); try { fill(raster.getDataBuffer(), value); } finally { image.releaseWritableTile(x, y); } } } }
/** * Update current writable raster from tiles array coordinates. */ @Override protected void updateCurrentRaster(int tileX, int tileY) { super.updateCurrentRaster(tileX, tileY); if (currentWritableDataArray != null) writableRenderedImage.releaseWritableTile(prectX, prectY); currentWritableDataArray = ((DataBufferByte) writableRenderedImage.getWritableTile(tileX, tileY).getDataBuffer()).getData(); this.prectX = tileX; this.prectY = tileY; }
/** * {@inheritDoc }. */ @Override protected void updateCurrentRaster(int tileX, int tileY) { super.updateCurrentRaster(tileX, tileY); if (currentWritableRaster != null) writableRenderedImage.releaseWritableTile(prectX, prectY); this.currentWritableRaster = writableRenderedImage.getWritableTile(tileX, tileY); this.currentWritableRaster = writableRenderedImage.getWritableTile(tileX, tileY); this.currentWritableDataArray = ((DataBufferFloat) currentWritableRaster.getDataBuffer()).getData(); this.prectX = tileX; this.prectY = tileY; }
/** * {@inheritDoc }. */ @Override protected void updateCurrentRaster(int tileX, int tileY) { super.updateCurrentRaster(tileX, tileY); if (currentWritableRaster != null) writableRenderedImage.releaseWritableTile(prectX, prectY); this.currentWritableRaster = writableRenderedImage.getWritableTile(tileX, tileY); this.currentWritableDataArray = ((DataBufferByte) currentWritableRaster.getDataBuffer()).getData(); this.prectX = tileX; this.prectY = tileY; }
/** * Update current writable raster from tiles array coordinates. */ @Override protected void updateCurrentRaster(int tileX, int tileY) { super.updateCurrentRaster(tileX, tileY); if (currentWritableRaster != null) writableRenderedImage.releaseWritableTile(prectX, prectY); currentWritableRaster = writableRenderedImage.getWritableTile(tileX, tileY); this.prectX = tileX; this.prectY = tileY; }
/** * {@inheritDoc }. */ @Override protected void updateCurrentRaster(int tileX, int tileY) { super.updateCurrentRaster(tileX, tileY); if (currentWritableRaster != null) writableRenderedImage.releaseWritableTile(prectX, prectY); this.currentWritableRaster = writableRenderedImage.getWritableTile(tileX, tileY); prectX = tileX; prectY = tileY; }
/** * Update current writable raster from tiles array coordinates. */ @Override protected void updateCurrentRaster(int tileX, int tileY) { super.updateCurrentRaster(tileX, tileY); if (currentWritableDataArray != null) writableRenderedImage.releaseWritableTile(prectX, prectY); currentWritableDataArray = ((DataBufferFloat) writableRenderedImage.getWritableTile(tileX, tileY).getDataBuffer()).getData(); this.prectX = tileX; this.prectY = tileY; }
public void setRasterValue(Coordinate coordinate, int value) { checkState(); if (!boundingBox.contains(coordinate.x, coordinate.y)) { throw new IllegalArgumentException("Can only add raster values for coordinates (" + coordinate + ") within the bounding box (" + boundingBox + ")"); } Point p = this.gridCellSize.getCell(boundingBox, coordinate); // LOGGER.log(Level.FINEST, "raster value set to {0} on cell {1}", new Object[]{value, p}); WritableRenderedImage raster = getRenderedImage(); WritableRaster tile = raster.getWritableTile(p.x, p.y); try { tile.setSample(p.x, p.y, 0, value); } catch (ArrayIndexOutOfBoundsException e) { LOGGER.log(Level.WARNING, "ArrayIndexOutOfBoundsException for p.x={0} and p.y={1}", new Object[]{p.x, p.y}); } raster.releaseWritableTile(p.x, p.y); }
/** * Fetches from the image a tile for the current {@link #tileX} and {@link #tileY} coordinates. * All fields prefixed by {@code current} are updated by this method. This method also updates * the {@link #y} field, but caller is responsible for updating the {@link #x} field. */ private void fetchTile() { currentRaster = null; if (destination != null) { destRaster = destination.getWritableTile(tileX, tileY); if (destination == image) { currentRaster = destRaster; } } if (currentRaster == null) { currentRaster = image.getTile(tileX, tileY); } final int minX = currentRaster.getMinX(); final int minY = currentRaster.getMinY(); currentLowerX = Math.max(lowerX, minX); y = Math.max(lowerY, minY); currentUpperX = Math.min(upperX, minX + tileWidth); currentUpperY = Math.min(upperY, minY + tileHeight); if (currentRaster.getNumBands() != numBands) { throw new RasterFormatException(Resources.format(Resources.Keys.IncompatibleTile_2, tileX, tileY)); } }
/** * Sets every samples in the given image to the given value. This method is typically used * for clearing an image content. * * @param image The image to fill. * @param value The value to be given to every samples. */ public static void fill(final WritableRenderedImage image, final Number value) { int y = image.getMinTileY(); for (int ny = image.getNumYTiles(); --ny >= 0; y++) { int x = image.getMinTileX(); for (int nx = image.getNumXTiles(); --nx >= 0; x++) { final WritableRaster raster = image.getWritableTile(x, y); try { fill(raster.getDataBuffer(), value); } finally { image.releaseWritableTile(x, y); } } } }
/** * Sets every samples in the given image to the given value. This method is typically used * for clearing an image content. * * @param image The image to fill. * @param value The value to to given to every samples. */ public static void fill(final WritableRenderedImage image, final Number value) { int y = image.getMinTileY(); for (int ny = image.getNumYTiles(); --ny >= 0;) { int x = image.getMinTileX(); for (int nx = image.getNumXTiles(); --nx >= 0;) { final WritableRaster raster = image.getWritableTile(x, y); try { fill(raster.getDataBuffer(), value); } finally { image.releaseWritableTile(x, y); } } } }
final Raster top = (tileY != minTileY) ? image.getTile(tileX, tileY-1) : null; final Raster bottom = (tileY != maxTileY) ? image.getTile(tileX, tileY+1) : null; final WritableRaster raster = image.getWritableTile(tileX, tileY); try { fill(raster, top, bottom, bounds, x, y, oldSamples, newSamples, stack);
if (fillValue.length != numBands) throw new IllegalArgumentException("fillValue table length and numbands are different : "+fillValue.length+" numbands = "+this.numBands); assert(numBands == imageDest.getWritableTile(imageDest.getMinTileX(), imageDest.getMinTileY()).getNumBands()) : "destination image numbands different from source image numbands"; this.destIterator = PixelIteratorFactory.createDefaultWriteableIterator(this.imageDest, this.imageDest, resampleArea);
if (fillValue.length != numBands) throw new IllegalArgumentException("fillValue table length and numbands are different : "+fillValue.length+" numbands = "+this.numBands); assert(numBands == imageDest.getWritableTile(imageDest.getMinTileX(), imageDest.getMinTileY()).getNumBands()) : "destination image numbands different from source image numbands"; this.destIterator = PixelIteratorFactory.createDefaultWriteableIterator(this.imageDest, this.imageDest, resampleArea);
public ResampleTest() { final ColorSpace cs = ColorSpace.getInstance(ColorSpace.CS_GRAY); final ColorModel cm = new ComponentColorModel(cs, new int[]{Double.SIZE}, false, false, Transparency.OPAQUE, DataBuffer.TYPE_DOUBLE); final ImageTypeSpecifier imgTypeSpec = new ImageTypeSpecifier(cm, cm.createCompatibleSampleModel(1, 1)); sourceImg = imgTypeSpec.createBufferedImage(3, 3); final WritableRaster raster = sourceImg.getWritableTile(0, 0); raster.setSample(0, 0, 0, 1); raster.setSample(1, 0, 0, 1); raster.setSample(2, 0, 0, 1); raster.setSample(0, 1, 0, 1); raster.setSample(1, 1, 0, 2); raster.setSample(2, 1, 0, 1); raster.setSample(0, 2, 0, 1); raster.setSample(1, 2, 0, 1); raster.setSample(2, 2, 0, 1); }
final ImageTypeSpecifier imgTypeSpec = new ImageTypeSpecifier(cm, cm.createCompatibleSampleModel(1, 1)); sourceImg = imgTypeSpec.createBufferedImage(4, 4); final WritableRaster raster = sourceImg.getWritableTile(0, 0);
final ImageTypeSpecifier imgTypeSpec = new ImageTypeSpecifier(cm, cm.createCompatibleSampleModel(1, 1)); sourceImg = imgTypeSpec.createBufferedImage(4, 4); final WritableRaster raster = sourceImg.getWritableTile(0, 0);