Class BfPyramidPixelBuffer

  • All Implemented Interfaces:
    java.io.Closeable, java.lang.AutoCloseable, PixelBuffer

    public class BfPyramidPixelBuffer
    extends java.lang.Object
    implements PixelBuffer
    PixelBuffer implementation which uses Bio-Formats to read pixels data directly from original files.
    Since:
    OMERO-Beta4.3
    • Constructor Summary

      Constructors 
      Modifier Constructor Description
        BfPyramidPixelBuffer​(TileSizes sizes, ome.model.core.Pixels pixels, java.lang.String filePath, boolean write)
      Full constructor taking a TileSizes implementation which defines how large the pyramid tiles will be.
      protected BfPyramidPixelBuffer​(TileSizes sizes, ome.model.core.Pixels pixels, java.lang.String filePath, boolean write, boolean init)  
        BfPyramidPixelBuffer​(ome.model.core.Pixels pixels, java.lang.String filePath, boolean write)
      We may want a constructor that takes the id of an imported file or that takes a File object? There should ultimately be some sort of check here that the file is in a/the repository.
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      protected void acquireLock()  
      byte[] calculateMessageDigest()
      Calculates a SHA-1 message digest for the entire pixel buffer.
      void checkBounds​(java.lang.Integer x, java.lang.Integer y, java.lang.Integer z, java.lang.Integer c, java.lang.Integer t)
      Checks to ensure that no one particular axis has an offset out of bounds.
      void close()
      Closes the buffer, cleaning up file state.
      protected void closeRaf()  
      protected void closeWriter()
      This method should never exit without releasing the lock.
      java.nio.ByteOrder getByteOrder()
      Returns the current pixel byte order.
      int getByteWidth()
      Returns the byte width for the pixel buffer.
      ome.util.PixelData getCol​(java.lang.Integer x, java.lang.Integer z, java.lang.Integer c, java.lang.Integer t)
      Retrieves a particular column from this pixel buffer.
      byte[] getColDirect​(java.lang.Integer x, java.lang.Integer z, java.lang.Integer c, java.lang.Integer t, byte[] buffer)
      Retrieves a particular column from this pixel buffer.
      java.lang.Integer getColSize()
      Retrieves the in memory size of a column of pixels in this pixel buffer.
      ome.util.PixelData getHypercube​(java.util.List<java.lang.Integer> offset, java.util.List<java.lang.Integer> size, java.util.List<java.lang.Integer> step)
      Retrieves a hypercube from this pixel buffer.
      byte[] getHypercubeDirect​(java.util.List<java.lang.Integer> offset, java.util.List<java.lang.Integer> size, java.util.List<java.lang.Integer> step, byte[] buffer)
      Retrieves a hypercube from the given pixels directly.
      java.lang.Long getHypercubeSize​(java.util.List<java.lang.Integer> offset, java.util.List<java.lang.Integer> size, java.util.List<java.lang.Integer> step)
      Retrieves a the size of a hypercube from this pixel buffer.
      long getId()
      Retrieves the identifier of this pixel buffer
      java.lang.String getPath()
      Retrieves the full path to this pixel buffer on disk
      ome.util.PixelData getPlane​(java.lang.Integer z, java.lang.Integer c, java.lang.Integer t)
      Retrieves a particular 2D image plane from this pixel buffer.
      byte[] getPlaneDirect​(java.lang.Integer z, java.lang.Integer c, java.lang.Integer t, byte[] buffer)
      Retrieves a particular 2D image plane from this pixel buffer.
      java.lang.Long getPlaneOffset​(java.lang.Integer z, java.lang.Integer c, java.lang.Integer t)
      Retrieves the offset for a particular 2D image plane in this pixel buffer.
      ome.util.PixelData getPlaneRegion​(java.lang.Integer x, java.lang.Integer y, java.lang.Integer width, java.lang.Integer height, java.lang.Integer z, java.lang.Integer c, java.lang.Integer t, java.lang.Integer stride)
      Retrieves a particular region of a 2D image plane from this pixel buffer.
      byte[] getPlaneRegionDirect​(java.lang.Integer z, java.lang.Integer c, java.lang.Integer t, java.lang.Integer count, java.lang.Integer offset, byte[] buffer)
      Retrieves a region from a given plane directly.
      java.lang.Long getPlaneSize()
      Retrieves the in memory size of a 2D image plane in this pixel buffer.
      ome.util.PixelData getRegion​(java.lang.Integer size, java.lang.Long offset)
      Retrieves a region from this pixel buffer.
      byte[] getRegionDirect​(java.lang.Integer size, java.lang.Long offset, byte[] buffer)
      Retrieves a region from this pixel buffer directly.
      java.util.List<java.util.List<java.lang.Integer>> getResolutionDescriptions()
      Return a list of lists each of which has sizeX, sizeY for the resolution level matching the index of the outer index.
      int getResolutionLevel()
      Retrieves the active resolution level.
      int getResolutionLevels()
      Retrieves the number of resolution levels that the backing pixels pyramid contains.
      ome.util.PixelData getRow​(java.lang.Integer y, java.lang.Integer z, java.lang.Integer c, java.lang.Integer t)
      Retrieves a particular row or scanline from this pixel buffer.
      byte[] getRowDirect​(java.lang.Integer y, java.lang.Integer z, java.lang.Integer c, java.lang.Integer t, byte[] buffer)
      Retrieves a particular row or scanline from this pixel buffer.
      java.lang.Long getRowOffset​(java.lang.Integer y, java.lang.Integer z, java.lang.Integer c, java.lang.Integer t)
      Retrieves the offset for a particular row or scanline in this pixel buffer.
      java.lang.Integer getRowSize()
      Retrieves the in memory size of a row or scanline of pixels in this pixel buffer.
      int getSizeC()
      Retrieves the size in C of this pixel buffer
      int getSizeT()
      Retrieves the size in T of this pixel buffer
      int getSizeX()
      Retrieves the size in X of this pixel buffer
      int getSizeY()
      Retrieves the size in Y of this pixel buffer
      int getSizeZ()
      Retrieves the size in Z of this pixel buffer
      ome.util.PixelData getStack​(java.lang.Integer c, java.lang.Integer t)
      Retrieves the the entire number of optical sections for a single wavelength or channel at a particular timepoint in this pixel buffer.
      byte[] getStackDirect​(java.lang.Integer c, java.lang.Integer t, byte[] buffer)
      Retrieves the the entire number of optical sections for a single wavelength or channel at a particular timepoint in this pixel buffer.
      java.lang.Long getStackOffset​(java.lang.Integer c, java.lang.Integer t)
      Retrieves the offset for the entire number of optical sections for a single wavelength or channel at a particular timepoint in this pixel buffer.
      java.lang.Long getStackSize()
      Retrieves the in memory size of the entire number of optical sections for a single wavelength or channel at a particular timepoint in this pixel buffer.
      ome.util.PixelData getTile​(java.lang.Integer z, java.lang.Integer c, java.lang.Integer t, java.lang.Integer x, java.lang.Integer y, java.lang.Integer w, java.lang.Integer h)
      Retrieves a tile from this pixel buffer.
      byte[] getTileDirect​(java.lang.Integer z, java.lang.Integer c, java.lang.Integer t, java.lang.Integer x, java.lang.Integer y, java.lang.Integer w, java.lang.Integer h, byte[] buffer)
      Retrieves a tile from this pixel buffer.
      java.awt.Dimension getTileSize()
      Retrieves the tile size for the pixel store.
      ome.util.PixelData getTimepoint​(java.lang.Integer t)
      Retrieves the entire number of optical sections for all wavelengths or channels at a particular timepoint in this pixel buffer.
      byte[] getTimepointDirect​(java.lang.Integer t, byte[] buffer)
      Retrieves the entire number of optical sections for all wavelengths or channels at a particular timepoint in this pixel buffer.
      java.lang.Long getTimepointOffset​(java.lang.Integer t)
      Retrieves the in memory size of the entire number of optical sections for all wavelengths or channels at a particular timepoint in this pixel buffer.
      java.lang.Long getTimepointSize()
      Retrieves the in memory size of the entire number of optical sections for all wavelengths or channels at a particular timepoint in this pixel buffer.
      java.lang.Long getTotalSize()
      Retrieves the in memory size of the entire pixel buffer.
      protected void init​(java.lang.String filePath, boolean write)  
      protected void initializeReader()
      If the pyramid file exists (which the constructor guarantees) then we assume that even if a lock file is present, that it's no longer valid.
      protected void initializeWriter​(java.lang.String output, java.lang.String compression, boolean bigTiff, int tileWidth, int tileLength)
      Initializes the writer.
      boolean isFloat()
      Returns whether or not the pixel buffer has floating point pixels.
      boolean isLittleEndian()  
      protected boolean isLockedByOthers()  
      boolean isSigned()
      Returns whether or not the pixel buffer has signed pixels.
      boolean isWrite()
      Whether or not this instance is in writing-mode.
      void setByteOrder​(java.nio.ByteOrder byteOrder)
      Sets the pixel byte order.
      void setPlane​(byte[] buffer, java.lang.Integer z, java.lang.Integer c, java.lang.Integer t)
      Sets a particular 2D image plane in this pixel buffer.
      void setPlane​(java.nio.ByteBuffer buffer, java.lang.Integer z, java.lang.Integer c, java.lang.Integer t)
      Sets a particular 2D image plane in this pixel buffer.
      void setRegion​(java.lang.Integer size, java.lang.Long offset, byte[] buffer)
      Sets a region in this pixel buffer.
      void setRegion​(java.lang.Integer size, java.lang.Long offset, java.nio.ByteBuffer buffer)
      Sets a region in this pixel buffer.
      void setResolutionLevel​(int resolutionLevel)
      Sets the active resolution level.
      void setRow​(java.nio.ByteBuffer buffer, java.lang.Integer y, java.lang.Integer z, java.lang.Integer c, java.lang.Integer t)
      Sets a particular row or scanline in this pixel buffer.
      void setStack​(byte[] buffer, java.lang.Integer z, java.lang.Integer c, java.lang.Integer t)
      Sets the entire number of optical sections for a single wavelength or channel at a particular timepoint in this pixel buffer.
      void setStack​(java.nio.ByteBuffer buffer, java.lang.Integer z, java.lang.Integer c, java.lang.Integer t)
      Sets the entire number of optical sections for a single wavelength or channel at a particular timepoint in this pixel buffer.
      void setTile​(byte[] buffer, java.lang.Integer z, java.lang.Integer c, java.lang.Integer t, java.lang.Integer x, java.lang.Integer y, java.lang.Integer w, java.lang.Integer h)
      Sets a tile in this pixel buffer.
      void setTimepoint​(byte[] buffer, java.lang.Integer t)
      Sets the entire number of optical sections for all wavelengths or channels at a particular timepoint in this pixel buffer.
      void setTimepoint​(java.nio.ByteBuffer buffer, java.lang.Integer t)
      Sets the entire number of optical sections for all wavelengths or channels at a particular timepoint in this pixel buffer.
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Constructor Detail

      • BfPyramidPixelBuffer

        public BfPyramidPixelBuffer​(ome.model.core.Pixels pixels,
                                    java.lang.String filePath,
                                    boolean write)
                             throws java.io.IOException,
                                    loci.formats.FormatException
        We may want a constructor that takes the id of an imported file or that takes a File object? There should ultimately be some sort of check here that the file is in a/the repository. Upon construction, the pixel buffer is available for reading or writing. However, on the first read, writing will be subsequently disabled.
        Throws:
        java.io.IOException
        loci.formats.FormatException
        See Also:
        ticket 5083
      • BfPyramidPixelBuffer

        public BfPyramidPixelBuffer​(TileSizes sizes,
                                    ome.model.core.Pixels pixels,
                                    java.lang.String filePath,
                                    boolean write)
                             throws java.io.IOException,
                                    loci.formats.FormatException
        Full constructor taking a TileSizes implementation which defines how large the pyramid tiles will be.
        Parameters:
        sizes -
        pixels -
        filePath -
        write -
        Throws:
        java.io.IOException
        loci.formats.FormatException
      • BfPyramidPixelBuffer

        protected BfPyramidPixelBuffer​(TileSizes sizes,
                                       ome.model.core.Pixels pixels,
                                       java.lang.String filePath,
                                       boolean write,
                                       boolean init)
                                throws java.io.IOException,
                                       loci.formats.FormatException
        Throws:
        java.io.IOException
        loci.formats.FormatException
    • Method Detail

      • init

        protected void init​(java.lang.String filePath,
                            boolean write)
                     throws java.io.IOException,
                            loci.formats.FormatException
        Throws:
        java.io.IOException
        loci.formats.FormatException
      • initializeReader

        protected void initializeReader()
                                 throws java.io.IOException,
                                        loci.formats.FormatException
        If the pyramid file exists (which the constructor guarantees) then we assume that even if a lock file is present, that it's no longer valid.
        Throws:
        java.io.IOException
        loci.formats.FormatException
      • initializeWriter

        protected void initializeWriter​(java.lang.String output,
                                        java.lang.String compression,
                                        boolean bigTiff,
                                        int tileWidth,
                                        int tileLength)
                                 throws loci.formats.FormatException
        Initializes the writer. Since the reader location is not present until this instance is closed, other BfPyramidPixelBuffer instances may try to also call this method in which case acquireLock() will throw a LockTimeout.
        Parameters:
        output - The file where to write the compressed data.
        compression - The compression to use.
        bigTiff - Pass true to set the bigTiff flag, false otherwise.
        Throws:
        java.lang.Exception - Thrown if an error occurred.
        loci.formats.FormatException
      • acquireLock

        protected void acquireLock()
      • closeRaf

        protected void closeRaf()
      • isLockedByOthers

        protected boolean isLockedByOthers()
      • closeWriter

        protected void closeWriter()
                            throws java.io.IOException
        This method should never exit without releasing the lock.
        Throws:
        java.io.IOException
      • isWrite

        public boolean isWrite()
        Whether or not this instance is in writing-mode. Any of the calls to reader methods called while this method returns true will close the writer, saving it to disk and preventing any further write methods.
      • setTile

        public void setTile​(byte[] buffer,
                            java.lang.Integer z,
                            java.lang.Integer c,
                            java.lang.Integer t,
                            java.lang.Integer x,
                            java.lang.Integer y,
                            java.lang.Integer w,
                            java.lang.Integer h)
                     throws java.io.IOException,
                            java.nio.BufferOverflowException
        Description copied from interface: PixelBuffer
        Sets a tile in this pixel buffer.
        Specified by:
        setTile in interface PixelBuffer
        Parameters:
        buffer - A byte array of the data.
        z - offset across the Z-axis of the pixel buffer.
        c - offset across the C-axis of the pixel buffer.
        t - offset across the T-axis of the pixel buffer.
        x - Top left corner of the tile, X offset.
        y - Top left corner of the tile, Y offset.
        w - Width of the tile.
        h - Height of the tile.
        Throws:
        java.io.IOException - if there is a problem writing to the pixel buffer.
        java.nio.BufferOverflowException - if an attempt is made to write off the end of the file.
      • getByteOrder

        public java.nio.ByteOrder getByteOrder()
        Returns the current pixel byte order.
        Returns:
        See above.
      • setByteOrder

        public void setByteOrder​(java.nio.ByteOrder byteOrder)
        Sets the pixel byte order.
        Parameters:
        byteOrder - The pixel byte order to set.
      • calculateMessageDigest

        public byte[] calculateMessageDigest()
                                      throws java.io.IOException
        Description copied from interface: PixelBuffer
        Calculates a SHA-1 message digest for the entire pixel buffer.
        Specified by:
        calculateMessageDigest in interface PixelBuffer
        Returns:
        byte array containing the message digest.
        Throws:
        java.io.IOException - if there is a problem reading from the pixel buffer.
      • checkBounds

        public void checkBounds​(java.lang.Integer x,
                                java.lang.Integer y,
                                java.lang.Integer z,
                                java.lang.Integer c,
                                java.lang.Integer t)
                         throws DimensionsOutOfBoundsException
        Description copied from interface: PixelBuffer
        Checks to ensure that no one particular axis has an offset out of bounds. null may be passed as the argument to any one of the offsets to ignore it for the purposes of bounds checking.
        Specified by:
        checkBounds in interface PixelBuffer
        Parameters:
        x - offset across the X-axis of the pixel buffer to check.
        y - offset across the Y-axis of the pixel buffer to check.
        z - offset across the Z-axis of the pixel buffer to check.
        c - offset across the C-axis of the pixel buffer to check.
        t - offset across the T-axis of the pixel buffer to check.
        Throws:
        DimensionsOutOfBoundsException - if y, z, c or t is out of bounds.
      • close

        public void close()
                   throws java.io.IOException
        Description copied from interface: PixelBuffer
        Closes the buffer, cleaning up file state.
        Specified by:
        close in interface java.lang.AutoCloseable
        Specified by:
        close in interface java.io.Closeable
        Specified by:
        close in interface PixelBuffer
        Throws:
        java.io.IOException - if an I/O error occurs.
      • getByteWidth

        public int getByteWidth()
        Description copied from interface: PixelBuffer
        Returns the byte width for the pixel buffer.
        Specified by:
        getByteWidth in interface PixelBuffer
        Returns:
        See above.
      • getColSize

        public java.lang.Integer getColSize()
        Description copied from interface: PixelBuffer
        Retrieves the in memory size of a column of pixels in this pixel buffer.
        Specified by:
        getColSize in interface PixelBuffer
        Returns:
        column size in bytes (sizeY*ByteWidth)
      • getHypercube

        public ome.util.PixelData getHypercube​(java.util.List<java.lang.Integer> offset,
                                               java.util.List<java.lang.Integer> size,
                                               java.util.List<java.lang.Integer> step)
                                        throws java.io.IOException,
                                               DimensionsOutOfBoundsException
        Description copied from interface: PixelBuffer
        Retrieves a hypercube from this pixel buffer.
        Specified by:
        getHypercube in interface PixelBuffer
        Parameters:
        offset - The offset of each dimension of the pixel buffer.
        size - The number of pixels to retrieve along each dimension .
        step - The step size across each dimension .
        Returns:
        buffer containing the data.
        Throws:
        java.io.IOException - if there is a problem reading from the pixel buffer.
        DimensionsOutOfBoundsException
      • getHypercubeDirect

        public byte[] getHypercubeDirect​(java.util.List<java.lang.Integer> offset,
                                         java.util.List<java.lang.Integer> size,
                                         java.util.List<java.lang.Integer> step,
                                         byte[] buffer)
                                  throws java.io.IOException,
                                         DimensionsOutOfBoundsException
        Description copied from interface: PixelBuffer
        Retrieves a hypercube from the given pixels directly.
        Specified by:
        getHypercubeDirect in interface PixelBuffer
        Parameters:
        offset - The offset of each dimension of the pixel buffer.
        size - The number of pixels to retrieve along each dimension .
        step - The step size across each dimension .
        buffer - pre-allocated buffer, count in size.
        Returns:
        buffer containing the data.
        Throws:
        java.io.IOException - if there is a problem reading from the pixel buffer.
        DimensionsOutOfBoundsException
      • getHypercubeSize

        public java.lang.Long getHypercubeSize​(java.util.List<java.lang.Integer> offset,
                                               java.util.List<java.lang.Integer> size,
                                               java.util.List<java.lang.Integer> step)
                                        throws DimensionsOutOfBoundsException
        Description copied from interface: PixelBuffer
        Retrieves a the size of a hypercube from this pixel buffer.
        Specified by:
        getHypercubeSize in interface PixelBuffer
        Parameters:
        offset - The offset of each dimension of the pixel buffer.
        size - The number of pixels to retrieve along each dimension .
        step - The step size across each dimension .
        Returns:
        the size.
        Throws:
        DimensionsOutOfBoundsException
      • getId

        public long getId()
        Description copied from interface: PixelBuffer
        Retrieves the identifier of this pixel buffer
        Specified by:
        getId in interface PixelBuffer
      • getPath

        public java.lang.String getPath()
        Description copied from interface: PixelBuffer
        Retrieves the full path to this pixel buffer on disk
        Specified by:
        getPath in interface PixelBuffer
        Returns:
        fully qualified path.
      • getPlane

        public ome.util.PixelData getPlane​(java.lang.Integer z,
                                           java.lang.Integer c,
                                           java.lang.Integer t)
                                    throws java.io.IOException,
                                           DimensionsOutOfBoundsException
        Description copied from interface: PixelBuffer
        Retrieves a particular 2D image plane from this pixel buffer.
        Specified by:
        getPlane in interface PixelBuffer
        Parameters:
        z - offset across the Z-axis of the pixel buffer.
        c - offset across the C-axis of the pixel buffer.
        t - offset across the T-axis of the pixel buffer.
        Returns:
        buffer containing the data which comprises this 2D image plane. It is guaranteed that this buffer will have its order set correctly but not that the backing buffer will have been byte swapped.
        Throws:
        java.io.IOException - if there is a problem reading from the pixel buffer.
        DimensionsOutOfBoundsException - if offsets are out of bounds after checking with PixelBuffer.checkBounds(Integer, Integer, Integer, Integer, Integer).
      • getPlaneDirect

        public byte[] getPlaneDirect​(java.lang.Integer z,
                                     java.lang.Integer c,
                                     java.lang.Integer t,
                                     byte[] buffer)
                              throws java.io.IOException,
                                     DimensionsOutOfBoundsException
        Description copied from interface: PixelBuffer
        Retrieves a particular 2D image plane from this pixel buffer.
        Specified by:
        getPlaneDirect in interface PixelBuffer
        Parameters:
        z - offset across the Z-axis of the pixel buffer.
        c - offset across the C-axis of the pixel buffer.
        t - offset across the T-axis of the pixel buffer.
        buffer - pre-allocated buffer of the plane's size.
        Returns:
        buffer containing the data which comprises this 2D image plane. It is guaranteed that this buffer will have been byte swapped.
        Throws:
        java.io.IOException - if there is a problem reading from the pixel buffer.
        DimensionsOutOfBoundsException - if offsets are out of bounds after checking with PixelBuffer.checkBounds(Integer, Integer, Integer, Integer, Integer).
      • getPlaneRegion

        public ome.util.PixelData getPlaneRegion​(java.lang.Integer x,
                                                 java.lang.Integer y,
                                                 java.lang.Integer width,
                                                 java.lang.Integer height,
                                                 java.lang.Integer z,
                                                 java.lang.Integer c,
                                                 java.lang.Integer t,
                                                 java.lang.Integer stride)
                                          throws java.io.IOException,
                                                 DimensionsOutOfBoundsException
        Description copied from interface: PixelBuffer
        Retrieves a particular region of a 2D image plane from this pixel buffer.
        Specified by:
        getPlaneRegion in interface PixelBuffer
        Parameters:
        x - offset across the X-axis of the pixel buffer.
        y - offset across the Y-axis of the pixel buffer.
        width - The number of pixels to retrieve along the X-axis.
        height - The number of pixels to retrieve along the Y-axis.
        z - offset across the Z-axis of the pixel buffer.
        c - offset across the C-axis of the pixel buffer.
        t - offset across the T-axis of the pixel buffer.
        stride - The step size.
        Returns:
        buffer containing the data which comprises this 2D image plane. It is guaranteed that this buffer will have its order set correctly but not that the backing buffer will have been byte swapped.
        Throws:
        java.io.IOException - if there is a problem reading from the pixel buffer.
        DimensionsOutOfBoundsException - if offsets are out of bounds after checking with PixelBuffer.checkBounds(Integer, Integer, Integer, Integer, Integer).
      • getPlaneRegionDirect

        public byte[] getPlaneRegionDirect​(java.lang.Integer z,
                                           java.lang.Integer c,
                                           java.lang.Integer t,
                                           java.lang.Integer count,
                                           java.lang.Integer offset,
                                           byte[] buffer)
                                    throws java.io.IOException,
                                           DimensionsOutOfBoundsException
        Description copied from interface: PixelBuffer
        Retrieves a region from a given plane directly.
        Specified by:
        getPlaneRegionDirect in interface PixelBuffer
        Parameters:
        z - offset across the Z-axis of the pixel buffer.
        c - offset across the C-axis of the pixel buffer.
        t - offset across the T-axis of the pixel buffer.
        count - the number of pixels to retrieve.
        offset - the offset at which to retrieve count pixels.
        buffer - pre-allocated buffer, count in size.
        Returns:
        buffer containing the data which comprises the region of the given 2D image plane. It is guaranteed that this buffer will have been byte swapped.
        Throws:
        java.io.IOException - if there is a problem reading from the pixel buffer.
        DimensionsOutOfBoundsException
        See Also:
        PixelBuffer.getRegionDirect(Integer, Long, byte[])
      • getPlaneSize

        public java.lang.Long getPlaneSize()
        Description copied from interface: PixelBuffer
        Retrieves the in memory size of a 2D image plane in this pixel buffer.
        Specified by:
        getPlaneSize in interface PixelBuffer
        Returns:
        2D image plane size in bytes (sizeX*sizeY*ByteWidth).
      • getRegion

        public ome.util.PixelData getRegion​(java.lang.Integer size,
                                            java.lang.Long offset)
                                     throws java.io.IOException
        Description copied from interface: PixelBuffer
        Retrieves a region from this pixel buffer.
        Specified by:
        getRegion in interface PixelBuffer
        Parameters:
        size - byte width of the region to retrieve.
        offset - offset within the pixel buffer.
        Returns:
        buffer containing the data. It is guaranteed that this buffer will have its order set correctly but not that the backing buffer will have been byte swapped. The buffer is essentially directly from disk.
        Throws:
        java.io.IOException - if there is a problem reading from the pixel buffer.
        See Also:
        PixelBuffer.getRegionDirect(Integer, Long, byte[])
      • getRegionDirect

        public byte[] getRegionDirect​(java.lang.Integer size,
                                      java.lang.Long offset,
                                      byte[] buffer)
                               throws java.io.IOException
        Description copied from interface: PixelBuffer
        Retrieves a region from this pixel buffer directly.
        Specified by:
        getRegionDirect in interface PixelBuffer
        Parameters:
        size - byte width of the region to retrieve.
        offset - offset within the pixel buffer.
        buffer - pre-allocated buffer of the row's size.
        Returns:
        buffer containing the data which comprises this region. It is guaranteed that this buffer will have been byte swapped. The buffer is essentially directly from disk.
        Throws:
        java.io.IOException - if there is a problem reading from the pixel buffer.
        See Also:
        PixelBuffer.getRegion(Integer, Long)
      • getRowSize

        public java.lang.Integer getRowSize()
        Description copied from interface: PixelBuffer
        Retrieves the in memory size of a row or scanline of pixels in this pixel buffer.
        Specified by:
        getRowSize in interface PixelBuffer
        Returns:
        row or scanline size in bytes (sizeX*ByteWidth)
      • getSizeC

        public int getSizeC()
        Description copied from interface: PixelBuffer
        Retrieves the size in C of this pixel buffer
        Specified by:
        getSizeC in interface PixelBuffer
      • getSizeT

        public int getSizeT()
        Description copied from interface: PixelBuffer
        Retrieves the size in T of this pixel buffer
        Specified by:
        getSizeT in interface PixelBuffer
      • getSizeX

        public int getSizeX()
        Description copied from interface: PixelBuffer
        Retrieves the size in X of this pixel buffer
        Specified by:
        getSizeX in interface PixelBuffer
      • getSizeY

        public int getSizeY()
        Description copied from interface: PixelBuffer
        Retrieves the size in Y of this pixel buffer
        Specified by:
        getSizeY in interface PixelBuffer
      • getSizeZ

        public int getSizeZ()
        Description copied from interface: PixelBuffer
        Retrieves the size in Z of this pixel buffer
        Specified by:
        getSizeZ in interface PixelBuffer
      • getStack

        public ome.util.PixelData getStack​(java.lang.Integer c,
                                           java.lang.Integer t)
                                    throws java.io.IOException,
                                           DimensionsOutOfBoundsException
        Description copied from interface: PixelBuffer
        Retrieves the the entire number of optical sections for a single wavelength or channel at a particular timepoint in this pixel buffer.
        Specified by:
        getStack in interface PixelBuffer
        Parameters:
        c - offset across the C-axis of the pixel buffer.
        t - offset across the T-axis of the pixel buffer.
        Returns:
        buffer containing the data which comprises this stack. It is guaranteed that this buffer will have its order set correctly but not that the backing buffer will have been byte swapped.
        Throws:
        java.io.IOException - if there is a problem reading from the pixel buffer.
        DimensionsOutOfBoundsException - if offsets are out of bounds after checking with PixelBuffer.checkBounds(Integer, Integer, Integer, Integer, Integer).
      • getStackDirect

        public byte[] getStackDirect​(java.lang.Integer c,
                                     java.lang.Integer t,
                                     byte[] buffer)
                              throws java.io.IOException,
                                     DimensionsOutOfBoundsException
        Description copied from interface: PixelBuffer
        Retrieves the the entire number of optical sections for a single wavelength or channel at a particular timepoint in this pixel buffer.
        Specified by:
        getStackDirect in interface PixelBuffer
        Parameters:
        c - offset across the C-axis of the pixel buffer.
        t - offset across the T-axis of the pixel buffer.
        buffer - pre-allocated buffer of the stack's size.
        Returns:
        buffer containing the data which comprises this stack. It is guaranteed that this buffer will have been byte swapped.
        Throws:
        java.io.IOException - if there is a problem reading from the pixel buffer.
        DimensionsOutOfBoundsException - if offsets are out of bounds after checking with PixelBuffer.checkBounds(Integer, Integer, Integer, Integer, Integer).
      • getStackSize

        public java.lang.Long getStackSize()
        Description copied from interface: PixelBuffer
        Retrieves the in memory size of the entire number of optical sections for a single wavelength or channel at a particular timepoint in this pixel buffer.
        Specified by:
        getStackSize in interface PixelBuffer
        Returns:
        stack size in bytes (sizeX*sizeY*sizeZ*ByteWidth).
      • getTile

        public ome.util.PixelData getTile​(java.lang.Integer z,
                                          java.lang.Integer c,
                                          java.lang.Integer t,
                                          java.lang.Integer x,
                                          java.lang.Integer y,
                                          java.lang.Integer w,
                                          java.lang.Integer h)
                                   throws java.io.IOException
        Description copied from interface: PixelBuffer
        Retrieves a tile from this pixel buffer.
        Specified by:
        getTile in interface PixelBuffer
        Parameters:
        z - offset across the Z-axis of the pixel buffer.
        c - offset across the C-axis of the pixel buffer.
        t - offset across the T-axis of the pixel buffer.
        x - Top left corner of the tile, X offset.
        y - Top left corner of the tile, Y offset.
        w - Width of the tile.
        h - Height of the tile.
        Returns:
        buffer containing the data which comprises the region of the given 2D image plane. It is guaranteed that this buffer will have been byte swapped.
        Throws:
        java.io.IOException - if there is a problem reading from the pixel buffer.
        See Also:
        PixelBuffer.getTileDirect(Integer, Integer, Integer, Integer, Integer, Integer, Integer, byte[])
      • getTileDirect

        public byte[] getTileDirect​(java.lang.Integer z,
                                    java.lang.Integer c,
                                    java.lang.Integer t,
                                    java.lang.Integer x,
                                    java.lang.Integer y,
                                    java.lang.Integer w,
                                    java.lang.Integer h,
                                    byte[] buffer)
                             throws java.io.IOException
        Description copied from interface: PixelBuffer
        Retrieves a tile from this pixel buffer.
        Specified by:
        getTileDirect in interface PixelBuffer
        Parameters:
        z - offset across the Z-axis of the pixel buffer.
        c - offset across the C-axis of the pixel buffer.
        t - offset across the T-axis of the pixel buffer.
        x - Top left corner of the tile, X offset.
        y - Top left corner of the tile, Y offset.
        w - Width of the tile.
        h - Height of the tile.
        buffer - Pre-allocated buffer of the tile's size.
        Returns:
        buffer containing the data which comprises this region. It is guaranteed that this buffer will have been byte swapped. The buffer is essentially directly from disk.
        Throws:
        java.io.IOException - if there is a problem reading from the pixel buffer.
        See Also:
        PixelBuffer.getTile(Integer, Integer, Integer, Integer, Integer, Integer, Integer)
      • getTimepoint

        public ome.util.PixelData getTimepoint​(java.lang.Integer t)
                                        throws java.io.IOException,
                                               DimensionsOutOfBoundsException
        Description copied from interface: PixelBuffer
        Retrieves the entire number of optical sections for all wavelengths or channels at a particular timepoint in this pixel buffer.
        Specified by:
        getTimepoint in interface PixelBuffer
        Parameters:
        t - offset across the T-axis of the pixel buffer.
        Returns:
        buffer containing the data which comprises this timepoint. It is guaranteed that this buffer will have its order set correctly but not that the backing buffer will have been byte swapped.
        Throws:
        java.io.IOException - if there is a problem reading from the pixel buffer.
        DimensionsOutOfBoundsException - if offsets are out of bounds after checking with PixelBuffer.checkBounds(Integer, Integer, Integer, Integer, Integer).
      • getTimepointDirect

        public byte[] getTimepointDirect​(java.lang.Integer t,
                                         byte[] buffer)
                                  throws java.io.IOException,
                                         DimensionsOutOfBoundsException
        Description copied from interface: PixelBuffer
        Retrieves the entire number of optical sections for all wavelengths or channels at a particular timepoint in this pixel buffer.
        Specified by:
        getTimepointDirect in interface PixelBuffer
        Parameters:
        t - offset across the T-axis of the pixel buffer.
        buffer - pre-allocated buffer of the timepoint's size.
        Returns:
        buffer containing the data which comprises this timepoint. It is guaranteed that this buffer will have been byte swapped.
        Throws:
        java.io.IOException - if there is a problem reading from the pixel buffer.
        DimensionsOutOfBoundsException - if offsets are out of bounds after checking with PixelBuffer.checkBounds(Integer, Integer, Integer, Integer, Integer).
      • getTimepointSize

        public java.lang.Long getTimepointSize()
        Description copied from interface: PixelBuffer
        Retrieves the in memory size of the entire number of optical sections for all wavelengths or channels at a particular timepoint in this pixel buffer.
        Specified by:
        getTimepointSize in interface PixelBuffer
        Returns:
        timepoint size in bytes (sizeX*sizeY*sizeZ*sizeC*ByteWidth).
      • getTotalSize

        public java.lang.Long getTotalSize()
        Description copied from interface: PixelBuffer
        Retrieves the in memory size of the entire pixel buffer.
        Specified by:
        getTotalSize in interface PixelBuffer
        Returns:
        total size of the pixel size in bytes (sizeX*sizeY*sizeZ*sizeC*sizeT*ByteWidth).
      • isFloat

        public boolean isFloat()
        Description copied from interface: PixelBuffer
        Returns whether or not the pixel buffer has floating point pixels.
        Specified by:
        isFloat in interface PixelBuffer
        Returns:
        true if the pixel buffer as floating point, false otherwise
      • isSigned

        public boolean isSigned()
        Description copied from interface: PixelBuffer
        Returns whether or not the pixel buffer has signed pixels.
        Specified by:
        isSigned in interface PixelBuffer
        Returns:
        See above.
      • isLittleEndian

        public boolean isLittleEndian()
      • setPlane

        public void setPlane​(java.nio.ByteBuffer buffer,
                             java.lang.Integer z,
                             java.lang.Integer c,
                             java.lang.Integer t)
                      throws java.io.IOException,
                             DimensionsOutOfBoundsException,
                             java.nio.BufferOverflowException
        Description copied from interface: PixelBuffer
        Sets a particular 2D image plane in this pixel buffer.
        Specified by:
        setPlane in interface PixelBuffer
        Parameters:
        buffer - a byte array of the data comprising this 2D image plane.
        z - offset across the Z-axis of the pixel buffer.
        c - offset across the C-axis of the pixel buffer.
        t - offset across the T-axis of the pixel buffer.
        Throws:
        java.io.IOException - if there is a problem writing to the pixel buffer.
        DimensionsOutOfBoundsException - if offsets are out of bounds after checking with PixelBuffer.checkBounds(Integer, Integer, Integer, Integer, Integer).
        java.nio.BufferOverflowException - if buffer.length > {@link #getPlaneSize()}.
      • setPlane

        public void setPlane​(byte[] buffer,
                             java.lang.Integer z,
                             java.lang.Integer c,
                             java.lang.Integer t)
                      throws java.io.IOException,
                             DimensionsOutOfBoundsException,
                             java.nio.BufferOverflowException
        Description copied from interface: PixelBuffer
        Sets a particular 2D image plane in this pixel buffer.
        Specified by:
        setPlane in interface PixelBuffer
        Parameters:
        buffer - a byte buffer of the data comprising this 2D image plane.
        z - offset across the Z-axis of the pixel buffer.
        c - offset across the C-axis of the pixel buffer.
        t - offset across the T-axis of the pixel buffer.
        Throws:
        java.io.IOException - if there is a problem writing to the pixel buffer.
        DimensionsOutOfBoundsException - if offsets are out of bounds after checking with PixelBuffer.checkBounds(Integer, Integer, Integer, Integer, Integer).
        java.nio.BufferOverflowException - if buffer.length > {@link #getPlaneSize()}.
      • setRegion

        public void setRegion​(java.lang.Integer size,
                              java.lang.Long offset,
                              byte[] buffer)
                       throws java.io.IOException,
                              java.nio.BufferOverflowException
        Description copied from interface: PixelBuffer
        Sets a region in this pixel buffer.
        Specified by:
        setRegion in interface PixelBuffer
        Parameters:
        size - byte width of the region to set.
        offset - offset within the pixel buffer.
        buffer - a byte array of the data.
        Throws:
        java.io.IOException - if there is a problem writing to the pixel buffer.
        java.nio.BufferOverflowException - if buffer.length > size.
      • setRegion

        public void setRegion​(java.lang.Integer size,
                              java.lang.Long offset,
                              java.nio.ByteBuffer buffer)
                       throws java.io.IOException,
                              java.nio.BufferOverflowException
        Description copied from interface: PixelBuffer
        Sets a region in this pixel buffer.
        Specified by:
        setRegion in interface PixelBuffer
        Parameters:
        size - byte width of the region to set.
        offset - offset within the pixel buffer.
        buffer - a byte buffer of the data.
        Throws:
        java.io.IOException - if there is a problem writing to the pixel buffer.
        java.nio.BufferOverflowException - if buffer.length > size.
      • setRow

        public void setRow​(java.nio.ByteBuffer buffer,
                           java.lang.Integer y,
                           java.lang.Integer z,
                           java.lang.Integer c,
                           java.lang.Integer t)
                    throws java.io.IOException,
                           DimensionsOutOfBoundsException,
                           java.nio.BufferOverflowException
        Description copied from interface: PixelBuffer
        Sets a particular row or scanline in this pixel buffer.
        Specified by:
        setRow in interface PixelBuffer
        Parameters:
        buffer - a byte buffer of the data comprising this row or scanline.
        y - offset across the Y-axis of the pixel buffer.
        z - offset across the Z-axis of the pixel buffer.
        c - offset across the C-axis of the pixel buffer.
        t - offset across the T-axis of the pixel buffer.
        Throws:
        java.io.IOException - if there is a problem reading from the pixel buffer.
        DimensionsOutOfBoundsException - if offsets are out of bounds after checking with PixelBuffer.checkBounds(Integer, Integer, Integer, Integer, Integer).
        java.nio.BufferOverflowException - if buffer.length > {@link #getRowSize()}.
      • setStack

        public void setStack​(java.nio.ByteBuffer buffer,
                             java.lang.Integer z,
                             java.lang.Integer c,
                             java.lang.Integer t)
                      throws java.io.IOException,
                             DimensionsOutOfBoundsException,
                             java.nio.BufferOverflowException
        Description copied from interface: PixelBuffer
        Sets the entire number of optical sections for a single wavelength or channel at a particular timepoint in this pixel buffer.
        Specified by:
        setStack in interface PixelBuffer
        Parameters:
        buffer - a byte buffer of the data comprising this stack.
        c - offset across the C-axis of the pixel buffer.
        t - offset across the T-axis of the pixel buffer.
        Throws:
        java.io.IOException - if there is a problem writing to the pixel buffer.
        DimensionsOutOfBoundsException - if offsets are out of bounds after checking with PixelBuffer.checkBounds(Integer, Integer, Integer, Integer, Integer).
        java.nio.BufferOverflowException - if buffer.length > {@link #getStackSize()}.
      • setStack

        public void setStack​(byte[] buffer,
                             java.lang.Integer z,
                             java.lang.Integer c,
                             java.lang.Integer t)
                      throws java.io.IOException,
                             DimensionsOutOfBoundsException,
                             java.nio.BufferOverflowException
        Description copied from interface: PixelBuffer
        Sets the entire number of optical sections for a single wavelength or channel at a particular timepoint in this pixel buffer.
        Specified by:
        setStack in interface PixelBuffer
        Parameters:
        buffer - a byte array of the data comprising this stack.
        z - offset across the Z-axis of the pixel buffer.
        c - offset across the C-axis of the pixel buffer.
        t - offset across the T-axis of the pixel buffer.
        Throws:
        java.io.IOException - if there is a problem writing to the pixel buffer.
        DimensionsOutOfBoundsException - if offsets are out of bounds after checking with PixelBuffer.checkBounds(Integer, Integer, Integer, Integer, Integer).
        java.nio.BufferOverflowException - if buffer.length > {@link #getStackSize()}.
      • setTimepoint

        public void setTimepoint​(java.nio.ByteBuffer buffer,
                                 java.lang.Integer t)
                          throws java.io.IOException,
                                 DimensionsOutOfBoundsException,
                                 java.nio.BufferOverflowException
        Description copied from interface: PixelBuffer
        Sets the entire number of optical sections for all wavelengths or channels at a particular timepoint in this pixel buffer.
        Specified by:
        setTimepoint in interface PixelBuffer
        Parameters:
        buffer - a byte buffer of the data comprising this timepoint.
        t - offset across the T-axis of the pixel buffer.
        Throws:
        java.io.IOException - if there is a problem writing to the pixel buffer.
        DimensionsOutOfBoundsException - if offsets are out of bounds after checking with PixelBuffer.checkBounds(Integer, Integer, Integer, Integer, Integer).
        java.nio.BufferOverflowException - if buffer.length > {@link #getTimepointSize()}.
      • setTimepoint

        public void setTimepoint​(byte[] buffer,
                                 java.lang.Integer t)
                          throws java.io.IOException,
                                 DimensionsOutOfBoundsException,
                                 java.nio.BufferOverflowException
        Description copied from interface: PixelBuffer
        Sets the entire number of optical sections for all wavelengths or channels at a particular timepoint in this pixel buffer.
        Specified by:
        setTimepoint in interface PixelBuffer
        Parameters:
        buffer - a byte array of the data comprising this timepoint.
        t - offset across the T-axis of the pixel buffer.
        Throws:
        java.io.IOException - if there is a problem writing to the pixel buffer.
        DimensionsOutOfBoundsException - if offsets are out of bounds after checking with PixelBuffer.checkBounds(Integer, Integer, Integer, Integer, Integer).
        java.nio.BufferOverflowException - if buffer.length > {@link #getTimepointSize()}.
      • getResolutionLevel

        public int getResolutionLevel()
        Description copied from interface: PixelBuffer
        Retrieves the active resolution level.
        Specified by:
        getResolutionLevel in interface PixelBuffer
        Returns:
        The active resolution level. The level will be non-negative and less than PixelBuffer.getResolutionLevels(). Resolution level 0 is the smallest resolution and resolution level getResolutionLevels() - 1 is the largest resolution. This is the inverse of how Bio-Formats indexes resolutions.
      • getResolutionLevels

        public int getResolutionLevels()
        Description copied from interface: PixelBuffer
        Retrieves the number of resolution levels that the backing pixels pyramid contains.
        Specified by:
        getResolutionLevels in interface PixelBuffer
        Returns:
        The number of resolution levels. This value does not necessarily indicate either the presence or absence of a pixels pyramid.
      • getResolutionDescriptions

        public java.util.List<java.util.List<java.lang.Integer>> getResolutionDescriptions()
        Description copied from interface: PixelBuffer
        Return a list of lists each of which has sizeX, sizeY for the resolution level matching the index of the outer index. For example, if an image has 2 resolution levels of size 2048x1024 and 1024x512 then this returns: [[2048,1024],[1024,512]]
        Specified by:
        getResolutionDescriptions in interface PixelBuffer
        Returns:
        a list of lists containing sizeX, sizeY for each resolution level
      • getTileSize

        public java.awt.Dimension getTileSize()
        Description copied from interface: PixelBuffer
        Retrieves the tile size for the pixel store.
        Specified by:
        getTileSize in interface PixelBuffer
        Returns:
        The dimension of the tile or null if the pixel buffer is not tiled.
      • setResolutionLevel

        public void setResolutionLevel​(int resolutionLevel)
        Description copied from interface: PixelBuffer
        Sets the active resolution level.
        Specified by:
        setResolutionLevel in interface PixelBuffer
        Parameters:
        resolutionLevel - The resolution level to be used by the pixel buffer. The level should be non-negative and less than PixelBuffer.getResolutionLevels(). Resolution level 0 is the smallest resolution and resolution level getResolutionLevels() - 1 is the largest resolution. This is the inverse of how Bio-Formats indexes resolutions.