/** * Implemented as specified by {@link PixelBuffer} I/F. * @see PixelBuffer#getRow(Integer, Integer, Integer, Integer) */ public PixelData getRow(Integer y, Integer z, Integer c, Integer t) throws IOException, DimensionsOutOfBoundsException { //dimension check getRowOffset Long offset = getRowOffset(y, z, c, t); Integer size = getRowSize(); return getRegion(size, offset); }
int rowOffset = offset.get(1)*getRowSize(); if(step.get(0)==1) byteOffset += getRowSize()*step.get(1); byteOffset += step.get(0)*pixelSize; rowOffset += getRowSize()*step.get(1);
/** * Implemented as specified by {@link PixelBuffer} I/F. * @see PixelBuffer#setRow(ByteBuffer, Integer, Integer, Integer, Integer) */ public void setRow(ByteBuffer buffer, Integer y, Integer z, Integer c, Integer t) throws IOException, DimensionsOutOfBoundsException { throwIfReadOnly(); Long offset = getRowOffset(y, z, c, t); Integer size = getRowSize(); setRegion(size, offset, buffer); }
/** * Implemented as specified by {@link PixelBuffer} I/F. * @see PixelBuffer#getRowDirect(Integer, Integer, Integer, Integer, byte[]) */ public byte[] getRowDirect(Integer y, Integer z, Integer c, Integer t, byte[] buffer) throws IOException, DimensionsOutOfBoundsException { if (buffer.length != getRowSize()) throw new ApiUsageException("Buffer size incorrect."); final PixelData pd = getRow(y, z, c, t); pd.getData().get(buffer); pd.dispose(); return 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; }