/** Constructs a DirectRasterAccessor object */ public DirectRasterAccessor(Raster raster, ColorModel cm) { DataBuffer db = raster.getDataBuffer(); offsetX = raster.getMinX() - raster.getSampleModelTranslateX(); offsetY = raster.getMinY() - raster.getSampleModelTranslateY(); if (!(db instanceof DataBufferByte)) { throw new RuntimeException( "DataBuffer of Raster not of correct type " + "(expected DataBufferByte, got " + db.getClass().getName() + ")"); } DataBufferByte dbb = (DataBufferByte) db; SampleModel sm = raster.getSampleModel(); if (!(sm instanceof MultiPixelPackedSampleModel)) { throw new RuntimeException( "SampleModel of Raster not of correct type " + "(expected MultiPixelPackedSampleModel, got " + sm.getClass().getName() + ")"); } MultiPixelPackedSampleModel mppsm = (MultiPixelPackedSampleModel) sm; data = dbb.getData(); scanlineStride = mppsm.getScanlineStride(); if (cm.getRGB(0) == Color.white.getRGB()) { white = 0; black = 1; } else { white = 1; black = 0; } }
private void writeDataBuffer(DataOutput out, DataBuffer buffer) throws IOException { if (buffer instanceof DataBufferInt) { out.writeInt(DATA_BUFFER_INT); writeDataBufferInt(out, (DataBufferInt) buffer); } else throw new SGIORuntimeException("Unsupported DataBuffer " + buffer.getClass().getName()); }