/** * Implemented as specified by {@link PixelBuffer} I/F. * @see PixelBuffer#getStackSize() */ public Long getStackSize() { if (stackSize == null) { stackSize = getPlaneSize() * getSizeZ(); } return stackSize; }
int pixelSize = getByteWidth(); int tileRowSize = pixelSize * xStripes; byte[] plane = new byte[safeLongToInteger(getPlaneSize())]; for(int t = offset.get(4); t < size.get(4)+offset.get(4); t += step.get(4))
/** * Implemented as specified by {@link PixelBuffer} I/F. * @see PixelBuffer#getPlaneOffset(Integer, Integer, Integer) */ public Long getPlaneOffset(Integer z, Integer c, Integer t) throws DimensionsOutOfBoundsException { checkBounds(null, null, z, c, t); Long timepointSize = getTimepointSize(); Long stackSize = getStackSize(); Long planeSize = getPlaneSize(); return timepointSize * t + stackSize * c + planeSize * z; }
/** * Implemented as specified by {@link PixelBuffer} I/F. * @see PixelBuffer#getPlaneDirect(Integer, Integer, Integer, byte[]) */ public byte[] getPlaneDirect(Integer z, Integer c, Integer t, byte[] buffer) throws IOException, DimensionsOutOfBoundsException { if (buffer.length != getPlaneSize()) throw new ApiUsageException("Buffer size incorrect."); final PixelData pd = getPlane(z, c, t); pd.getData().get(buffer); pd.dispose(); return buffer; }
/** * Implemented as specified by {@link PixelBuffer} I/F. * @see PixelBuffer#getPlane(Integer, Integer, Integer) */ public PixelData getPlane(Integer z, Integer c, Integer t) throws IOException, DimensionsOutOfBoundsException { log.info("Retrieving plane: " + z + "x" + c + "x" + t); Long offset = getPlaneOffset(z, c, t); Integer size = safeLongToInteger(getPlaneSize()); PixelData region = getRegion(size, offset); byte[] nullPlane = PixelsService.nullPlane; for (int i = 0; i < PixelsService.NULL_PLANE_SIZE; i++) { if (region.getData().get(i) != nullPlane[i]) { return region; } } region.dispose(); return null; // All of the nullPlane bytes match, non-filled plane }
/** * Implemented as specified by {@link PixelBuffer} I/F. * @see PixelBuffer#setPlane(ByteBuffer, Integer, Integer, Integer) */ public void setPlane(ByteBuffer buffer, Integer z, Integer c, Integer t) throws IOException, DimensionsOutOfBoundsException { throwIfReadOnly(); Long offset = getPlaneOffset(z, c, t); Integer size = safeLongToInteger(getPlaneSize()); if (buffer.limit() != size) { // Handle the size mismatch. if (buffer.limit() < size) throw new BufferUnderflowException(); throw new BufferOverflowException(); } setRegion(size, offset, buffer); }
/** * Implemented as specified by {@link PixelBuffer} I/F. * @see PixelBuffer#getRowOffset(Integer, Integer, Integer, Integer) */ public Long getRowOffset(Integer y, Integer z, Integer c, Integer t) throws DimensionsOutOfBoundsException { checkBounds(null, y, z, c, t); Integer rowSize = getRowSize(); Long timepointSize = getTimepointSize(); Long stackSize = getStackSize(); Long planeSize = getPlaneSize(); return (long) rowSize * y + timepointSize * t + stackSize * c + planeSize * z; }
String path = getPixelsPath(pixbuf.getId()); createSubpath(path); Integer size = RomioPixelBuffer.safeLongToInteger(pixbuf.getPlaneSize()); byte[] padding = new byte[size - NULL_PLANE_SIZE]; FileOutputStream stream = new FileOutputStream(path);