Class MemoryShortChannelImage

    • Constructor Summary

      Constructors 
      Constructor Description
      MemoryShortChannelImage​(int numChannels, int width, int height)
      Create an image of short channels.
    • Method Summary

      All Methods Instance Methods Abstract Methods Concrete Methods 
      Modifier and Type Method Description
      protected void checkPositionAndNumber​(int channel, int x, int y, int w, int h)
      Throws an exception if the arguments do not form a valid horizontal sequence of samples.
      void clear​(int newValue)
      Sets all samples in the first channel to the argument value.
      void clear​(int channelIndex, int newValue)
      Sets all samples of the channelIndex'th channel to newValue.
      void clear​(int channelIndex, short newValue)
      Sets all samples of one channel to a new value.
      void clear​(short newValue)
      Sets all samples of the first channel to the argument short value.
      abstract PixelImage createCompatibleImage​(int width, int height)
      Creates an instance of the same class as this one, with width and height given by the arguments.
      PixelImage createCopy()
      Creates an new image object that will be of the same type as this one, with the same image data, using entirely new resources.
      long getAllocatedMemory()
      Returns the number of bytes that were dynamically allocated for this image object.
      int getBitsPerPixel()
      Returns the number of bits per pixel of this image.
      int getHeight()
      Returns the vertical resolution of the image in pixels.
      int getMaxSample​(int channel)
      Returns the maximum value for one of the image's channels.
      int getNumChannels()
      Returns the number of channels in this image.
      int getSample​(int x, int y)
      Returns one sample of the first channel (index 0).
      int getSample​(int channel, int x, int y)
      Returns one sample, specified by its channel index and location.
      void getSamples​(int channel, int x, int y, int w, int h, int[] dest, int destOffs)
      Copies a number of samples from this image to an int[] object.
      short getShortSample​(int x, int y)
      Returns a single short sample from the first channel and the specified position.
      short getShortSample​(int channel, int x, int y)
      Returns a single short sample from the image.
      void getShortSamples​(int channel, int x, int y, int w, int h, short[] dest, int destOffset)
      Copies samples from this image to a short array.
      int getWidth()
      Returns the horizontal resolution of the image in pixels.
      void putSample​(int x, int y, int newValue)
      This method sets one sample of the first channel (index 0) to a new value.
      void putSample​(int channel, int x, int y, int newValue)
      This method sets one sample to a new value.
      void putSamples​(int channel, int x, int y, int w, int h, int[] src, int srcOffs)
      Copies a number of samples from an int[] array to this image.
      void putShortSample​(int channel, int x, int y, short newValue)
      Sets one short sample in one channel to a new value.
      void putShortSample​(int x, int y, short newValue)
      Sets one short sample in the first channel (index 0) to a new value.
      void putShortSamples​(int channel, int x, int y, int w, int h, short[] src, int srcOffset)
      Copies a number of samples from the argument array to this image.
    • Field Detail

      • data

        private final short[][] data
      • firstChannel

        private final short[] firstChannel
      • numChannels

        private final int numChannels
      • width

        private final int width
      • height

        private final int height
      • numPixels

        private final int numPixels
    • Constructor Detail

      • MemoryShortChannelImage

        public MemoryShortChannelImage​(int numChannels,
                                       int width,
                                       int height)
        Create an image of short channels. Image data will be completely in memory, so memory requirements are width * height * numChannels * 2 bytes.
        Parameters:
        numChannels - the number of channels in this image, must be larger than zero
        width - the horizontal resolution, must be larger than zero
        height - the vertical resolution, must be larger than zero
    • Method Detail

      • checkPositionAndNumber

        protected void checkPositionAndNumber​(int channel,
                                              int x,
                                              int y,
                                              int w,
                                              int h)
        Throws an exception if the arguments do not form a valid horizontal sequence of samples. To be valid, all of the following requirements must be met:
      • clear

        public void clear​(int channelIndex,
                          short newValue)
        Description copied from interface: ShortChannelImage
        Sets all samples of one channel to a new value.
        Specified by:
        clear in interface ShortChannelImage
        Parameters:
        channelIndex - zero-based index of the channel to be cleared (must be smaller than PixelImage.getNumChannels()
        newValue - all samples in the channel will be set to this value
      • clear

        public void clear​(int newValue)
        Description copied from interface: IntegerImage
        Sets all samples in the first channel to the argument value. Equal to clear(0, newValue);:
        Specified by:
        clear in interface IntegerImage
      • clear

        public void clear​(int channelIndex,
                          int newValue)
        Description copied from interface: IntegerImage
        Sets all samples of the channelIndex'th channel to newValue.
        Specified by:
        clear in interface IntegerImage
      • createCompatibleImage

        public abstract PixelImage createCompatibleImage​(int width,
                                                         int height)
        Description copied from interface: PixelImage
        Creates an instance of the same class as this one, with width and height given by the arguments.
        Specified by:
        createCompatibleImage in interface PixelImage
        Parameters:
        width - the horizontal resolution of the new image
        height - the vertical resolution of the new image
        Returns:
        the new image
      • createCopy

        public PixelImage createCopy()
        Description copied from interface: PixelImage
        Creates an new image object that will be of the same type as this one, with the same image data, using entirely new resources.
        Specified by:
        createCopy in interface PixelImage
        Returns:
        the new image object
      • getAllocatedMemory

        public long getAllocatedMemory()
        Description copied from interface: PixelImage
        Returns the number of bytes that were dynamically allocated for this image object.
        Specified by:
        getAllocatedMemory in interface PixelImage
        Returns:
        allocated memory in bytes
      • getBitsPerPixel

        public int getBitsPerPixel()
        Description copied from interface: PixelImage
        Returns the number of bits per pixel of this image. That is the number of bits per sample for all channels of this image. Does not include any transparency channels.
        Specified by:
        getBitsPerPixel in interface PixelImage
      • getShortSample

        public short getShortSample​(int x,
                                    int y)
        Description copied from interface: ShortChannelImage
        Returns a single short sample from the first channel and the specified position. A call to this method is the same as getShortSample(0, x, y).
        Specified by:
        getShortSample in interface ShortChannelImage
        Parameters:
        x - horizontal position of the sample to be returned (must be between 0 and PixelImage.getWidth() - 1
        y - vertical position of the sample to be returned (must be between 0 and PixelImage.getHeight() - 1
        Returns:
        the requested short sample
      • getShortSamples

        public void getShortSamples​(int channel,
                                    int x,
                                    int y,
                                    int w,
                                    int h,
                                    short[] dest,
                                    int destOffset)
        Description copied from interface: ShortChannelImage
        Copies samples from this image to a short array. Copies num samples in row y of channel channel, starting at horizontal offset x. Data will be written to the dest array, starting at offset destOffset. Data will be copied from one row only, so a maximum of getWidth() samples can be copied with a call to this method.
        Specified by:
        getShortSamples in interface ShortChannelImage
        Parameters:
        channel - the index of the channel to be copied from; must be from 0 to getNumChannels() - 1
        x - the horizontal offset where copying will start; must be from 0 to getWidth() - 1
        y - the row from which will be copied; must be from 0 to getHeight() - 1
        w - number of columns to be copied
        h - number of rows to be copied
        dest - the array where the data will be copied to; must have a length of at least destOffset + num
        destOffset - the offset into dest where this method will start copying data
      • getHeight

        public final int getHeight()
        Description copied from interface: PixelImage
        Returns the vertical resolution of the image in pixels. Must be one or larger.
        Specified by:
        getHeight in interface PixelImage
        Returns:
        height in pixels
      • getMaxSample

        public int getMaxSample​(int channel)
        Description copied from interface: IntegerImage
        Returns the maximum value for one of the image's channels. The minimum value is always 0.
        Specified by:
        getMaxSample in interface IntegerImage
        Parameters:
        channel - zero-based index of the channel, from 0 to PixelImage.getNumChannels() - 1
        Returns:
        maximum allowed sample value
      • getNumChannels

        public int getNumChannels()
        Description copied from interface: PixelImage
        Returns the number of channels in this image. Must be one or larger.
        Specified by:
        getNumChannels in interface PixelImage
        Returns:
        the number of channels
      • getSample

        public final int getSample​(int x,
                                   int y)
        Description copied from interface: IntegerImage
        Returns one sample of the first channel (index 0). A call to this method must have the same result as the call getSample(0, x, y);.
        Specified by:
        getSample in interface IntegerImage
        Parameters:
        x - the horizontal position of the sample, from 0 to PixelImage.getWidth() - 1
        y - the vertical position of the sample, from 0 to PixelImage.getHeight() - 1
        Returns:
        the desired sample
      • getSample

        public final int getSample​(int channel,
                                   int x,
                                   int y)
        Description copied from interface: IntegerImage
        Returns one sample, specified by its channel index and location.
        Specified by:
        getSample in interface IntegerImage
        Parameters:
        channel - the number of the channel, from 0 to PixelImage.getNumChannels() - 1
        x - the horizontal position of the sample, from 0 to PixelImage.getWidth() - 1
        y - the vertical position of the sample, from 0 to PixelImage.getHeight() - 1
        Returns:
        the desired sample
      • getSamples

        public void getSamples​(int channel,
                               int x,
                               int y,
                               int w,
                               int h,
                               int[] dest,
                               int destOffs)
        Description copied from interface: IntegerImage
        Copies a number of samples from this image to an int[] object. A rectangular part of one channel is copied. The channel index is given by - the upper left corner of that rectangle is given by the point x / y. Width and height of that rectangle are given by w and h. Each sample will be stored as one int value dest, starting at index destOffs.
        Specified by:
        getSamples in interface IntegerImage
        Parameters:
        channel - zero-based index of the channel from which data is to be copied (valid values: 0 to PixelImage.getNumChannels() - 1)
        x - horizontal position of upper left corner of the rectangle to be copied
        y - vertical position of upper left corner of the rectangle to be copied
        w - width of rectangle to be copied
        h - height of rectangle to be copied
        dest - int array to which the samples will be copied
        destOffs - int index into the dest array for the position to which the samples will be copied
      • getWidth

        public final int getWidth()
        Description copied from interface: PixelImage
        Returns the horizontal resolution of the image in pixels. Must be one or larger.
        Specified by:
        getWidth in interface PixelImage
        Returns:
        width in pixels
      • putShortSample

        public final void putShortSample​(int channel,
                                         int x,
                                         int y,
                                         short newValue)
        Description copied from interface: ShortChannelImage
        Sets one short sample in one channel to a new value.
        Specified by:
        putShortSample in interface ShortChannelImage
      • putShortSample

        public final void putShortSample​(int x,
                                         int y,
                                         short newValue)
        Description copied from interface: ShortChannelImage
        Sets one short sample in the first channel (index 0) to a new value. Result is equal to putShortSample(0, x, y, newValue);.
        Specified by:
        putShortSample in interface ShortChannelImage
      • putShortSamples

        public void putShortSamples​(int channel,
                                    int x,
                                    int y,
                                    int w,
                                    int h,
                                    short[] src,
                                    int srcOffset)
        Description copied from interface: ShortChannelImage
        Copies a number of samples from the argument array to this image.
        Specified by:
        putShortSamples in interface ShortChannelImage
      • putSamples

        public void putSamples​(int channel,
                               int x,
                               int y,
                               int w,
                               int h,
                               int[] src,
                               int srcOffs)
        Description copied from interface: IntegerImage
        Copies a number of samples from an int[] array to this image. A rectangular part of one channel is copied - the upper left corner of that rectangle is given by the point x / y. Width and height of that rectangle are given by w and h. Each sample will be stored as one int value src, starting at index srcOffset.
        Specified by:
        putSamples in interface IntegerImage
        Parameters:
        channel - int (from 0 to getNumChannels() - 1) to indicate the channel to which data is copied
        x - horizontal position of upper left corner of the rectangle to be copied
        y - vertical position of upper left corner of the rectangle to be copied
        w - width of rectangle to be copied
        h - height of rectangle to be copied
        src - int array from which the samples will be copied
        srcOffs - int index into the src array for the position from which the samples will be copied
      • putSample

        public final void putSample​(int x,
                                    int y,
                                    int newValue)
        Description copied from interface: IntegerImage
        This method sets one sample of the first channel (index 0) to a new value. This call must have the same result as the call putSample(0, x, y). The sample location is given by the spatial coordinates, x and y.
        Specified by:
        putSample in interface IntegerImage
        Parameters:
        x - the horizontal position of the sample, from 0 to PixelImage.getWidth() - 1
        y - the vertical position of the sample, from 0 to PixelImage.getHeight() - 1
        newValue - the new value of the sample
      • putSample

        public final void putSample​(int channel,
                                    int x,
                                    int y,
                                    int newValue)
        Description copied from interface: IntegerImage
        This method sets one sample to a new value. The sample location is given by the channel index and the spatial coordinates, x and y.
        Specified by:
        putSample in interface IntegerImage
        Parameters:
        channel - the number of the channel, from 0 to PixelImage.getNumChannels() - 1
        x - the horizontal position of the sample, from 0 to PixelImage.getWidth() - 1
        y - the vertical position of the sample, from 0 to PixelImage.getHeight() - 1
        newValue - the new value of the sample