/** * Implemented as specified by {@link PixelBuffer} I/F. * @see PixelBuffer#getTimepointSize() */ public Long getTimepointSize() { if (timepointSize == null) { timepointSize = getStackSize() * getSizeC(); } return timepointSize; }
/** * Implemented as specified by {@link PixelBuffer} I/F. * @see PixelBuffer#getStackOffset(Integer, Integer) */ public Long getStackOffset(Integer c, Integer t) throws DimensionsOutOfBoundsException { checkBounds(null, null, null, c, t); Long timepointSize = getTimepointSize(); Long stackSize = getStackSize(); return timepointSize * t + stackSize * c; }
/** * Implemented as specified by {@link PixelBuffer} I/F. * @see PixelBuffer#getStack(Integer, Integer) */ public PixelData getStack(Integer c, Integer t) throws IOException, DimensionsOutOfBoundsException { Long offset = getStackOffset(c, t); Integer size = safeLongToInteger(getStackSize()); return getRegion(size, offset); }
/** * Implemented as specified by {@link PixelBuffer} I/F. * @see PixelBuffer#getStackDirect(Integer, Integer, byte[]) */ public byte[] getStackDirect(Integer c, Integer t, byte[] buffer) throws IOException, DimensionsOutOfBoundsException { if (buffer.length != getStackSize()) throw new ApiUsageException("Buffer size incorrect."); final PixelData pd = getStack(c, t); pd.getData().get(buffer); pd.dispose(); return buffer; }
/** * 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#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; }
/** * Implemented as specified by {@link PixelBuffer} I/F. * @see PixelBuffer#setStack(ByteBuffer, Integer, Integer, Integer) */ public void setStack(ByteBuffer buffer, Integer z, Integer c, Integer t) throws IOException, DimensionsOutOfBoundsException { throwIfReadOnly(); Long offset = getStackOffset(c, t); Integer size = safeLongToInteger(getStackSize()); if (buffer.limit() != size) { // Handle the size mismatch. if (buffer.limit() < size) throw new BufferUnderflowException(); throw new BufferOverflowException(); } setRegion(size, offset, buffer); }