/** * Implemented as specified by {@link PixelBuffer} I/F. * @see PixelBuffer#getTotalSize() */ public Long getTotalSize() { if (totalSize == null) { totalSize = getTimepointSize() * getSizeT(); } return totalSize; }
/** * Implemented as specified by {@link PixelBuffer} I/F. * @see PixelBuffer#getTimepointOffset(Integer) */ public Long getTimepointOffset(Integer t) throws DimensionsOutOfBoundsException { checkBounds(null, null, null, null, t); Long timepointSize = getTimepointSize(); return (long) timepointSize * t; }
/** * 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#getTimepoint(Integer) */ public PixelData getTimepoint(Integer t) throws IOException, DimensionsOutOfBoundsException { Long offset = getTimepointOffset(t); Integer size = safeLongToInteger(getTimepointSize()); return getRegion(size, offset); }
/** * 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#getTimepointDirect(Integer, byte[]) */ public byte[] getTimepointDirect(Integer t, byte[] buffer) throws IOException, DimensionsOutOfBoundsException { if (buffer.length != getTimepointSize()) throw new ApiUsageException("Buffer size incorrect."); final PixelData pd = getTimepoint(t); pd.getData().get(buffer); pd.dispose(); return buffer; }
/** * Implemented as specified by {@link PixelBuffer} I/F. * @see PixelBuffer#setTimepoint(ByteBuffer, Integer) */ public void setTimepoint(ByteBuffer buffer, Integer t) throws IOException, DimensionsOutOfBoundsException { throwIfReadOnly(); Long offset = getTimepointOffset(t); Integer size = safeLongToInteger(getTimepointSize()); 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; }