/** Returns {@code true} if {@code raster} is compatible with this {@code ColorModel}. */ public boolean isCompatibleRaster(final Raster raster) { return isCompatibleSampleModel(raster.getSampleModel()); }
final int stride = (tile.getSampleModel().getWidth() * sampleSize + 7) / 8; final DataBuffer dataBuffer = tile.getDataBuffer();
@Override public final boolean isCompatibleRaster(final Raster raster) { int size = raster.getSampleModel().getSampleSize(0); return ((raster.getTransferType() == transferType) && (raster.getNumBands() == 2) && ((1 << size) >= icm.getMapSize())); }
InvertedRaster(final Raster raster) { super(raster.getSampleModel(), new DataBuffer(raster.getDataBuffer().getDataType(), raster.getDataBuffer().getSize()) { private final DataBuffer delegate = raster.getDataBuffer(); @Override public int getElem(final int bank, final int i) { return (255 - delegate.getElem(bank, i)); } @Override public void setElem(int bank, int i, int val) { throw new UnsupportedOperationException("setElem"); } }, new Point()); } }
name, (min == null || max == null) ? RectIterFactory.create(raster, null) : null, raster.getSampleModel(), min, max,
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; } } }
int[] bitOffsets = null; if (src.getTransferType() == DataBuffer.TYPE_USHORT) { if (src.getSampleModel() instanceof SinglePixelPackedSampleModel) { SinglePixelPackedSampleModel sampleModel = (SinglePixelPackedSampleModel) src.getSampleModel(); bitMasks = sampleModel.getBitMasks(); bitOffsets = sampleModel.getBitOffsets();
int[] bitOffsets = null; if (src.getTransferType() == DataBuffer.TYPE_USHORT) { if (src.getSampleModel() instanceof SinglePixelPackedSampleModel) { SinglePixelPackedSampleModel sampleModel = (SinglePixelPackedSampleModel) src.getSampleModel(); bitMasks = sampleModel.getBitMasks(); bitOffsets = sampleModel.getBitOffsets();
final int w = sourceRaster.getWidth(); final int h = sourceRaster.getHeight(); final int numBands = sourceRaster.getSampleModel().getNumBands(); final int[] rgba = new int[numBands]; final boolean sourceHasAlpha = sourceColorModel.hasAlpha();
final int dstMinX = src.getMinX(); final int dstMinY = src.getMinY(); final int numBands = src.getSampleModel().getNumBands(); final boolean sourceHasAlpha = (numBands % 2 == 0); final int alphaBand = sourceHasAlpha ? numBands - 1 : -1;
int bank = banded ? ((BandedSampleModel) tileRowRaster.getSampleModel()).getBankIndices()[band] : band;
/** * Returns {@code true} if {@code raster} is compatible * with this {@code ColorModel}. */ public boolean isCompatibleRaster(final Raster raster) { return isCompatibleSampleModel(raster.getSampleModel()); }
private void validateRaster(Raster r) { if(r.getSampleModel().getDataType() != DataBuffer.TYPE_INT) { throw new IllegalArgumentException("Raster sample type has to be integer"); } }
public ICCPackedColorModel(ICC_ColorSpace colorSpace, Raster raster) { // FIXME this super call silently only handles rasters without alpha channel! super(colorSpace,// getBits(raster),// ((SinglePixelPackedSampleModel) raster.getSampleModel()).getBitMasks(), 0, true, OPAQUE, raster.getTransferType()); this.colorSpace = colorSpace; this.maskArray = ((SinglePixelPackedSampleModel) raster.getSampleModel()).getBitMasks(); this.maskOffsets = ((SinglePixelPackedSampleModel) raster.getSampleModel()).getBitOffsets(); }
public WritableRaster createCompatibleDestRaster(Raster src){ checkCompatible(src.getSampleModel()); // Src Raster is OK: create a similar Raster for destination. return src.createCompatibleWritableRaster(); }
@Override public boolean isCompatibleRaster(Raster raster) { final SampleModel sm = raster.getSampleModel(); if (!(sm instanceof ComponentSampleModel)) return false; for (int i = 0; i < bits.length; i++) { if (sm.getSampleSize(i) < bits[i]) return false; } return (raster.getTransferType() == transferType); }
public RasterIntABGRProvider(Raster raster, boolean hasAlpha) { super(raster, 8, raster.getWidth() * (hasAlpha ? 4 : 3)); this.pixels = ((DataBufferInt) raster.getDataBuffer()).getData(); this.hasAlpha = hasAlpha; if (hasAlpha) { bgrOrder = false; } else { int[] offsets = ((SinglePixelPackedSampleModel) raster.getSampleModel()).getBitOffsets(); bgrOrder = offsets[0] != 0; } }
public RasterShortGrayAlphaProvider(Raster raster) { super(raster, 16, raster.getWidth() * 4); this.shorts = ((DataBufferUShort) raster.getDataBuffer()).getData(); int[] bandOffsets = ((PixelInterleavedSampleModel) raster.getSampleModel()).getBandOffsets(); this.alphaFirst = bandOffsets[0] != 0; }
public RasterShortABGRProvider(Raster raster, boolean hasAlpha) { super(raster, 16, (hasAlpha ? 8 : 6) * raster.getWidth()); this.hasAlpha = hasAlpha; shorts = ((DataBufferUShort) raster.getDataBuffer()).getData(); bgrOrder = ((ComponentSampleModel) raster.getSampleModel()).getBandOffsets()[0] != 0; }
public RasterByteGrayAlphaProvider(Raster raster) { super(raster, 8, raster.getWidth() * computePixelStride(raster, PIXEL_STRIDES)); this.bytes = ((DataBufferByte) raster.getDataBuffer()).getData(); ComponentSampleModel sm = (ComponentSampleModel) raster.getSampleModel(); this.bandOffsets = sm.getBandOffsets(); this.numBands = sm.getNumBands(); this.pixelStride = sm.getPixelStride(); this.alphaFirst = bandOffsets[0] != 0; }