Eclipse Remote Application Platform

## org.eclipse.swt.graphics
Class ImageData

    java.lang.Object
      org.eclipse.swt.graphics.ImageData

    public final class ImageData

extends java.lang.Object

Instances of this class are device-independent descriptions of images. They are typically used as an intermediate format between loading from or writing to streams and creating an `Image`.

Note that the public fields `x`, `y`, `disposalMethod` and `delayTime` are typically only used when the image is in a set of images used for animation.

Since:
  1.3
See Also:
  `Image`, `ImageLoader`

Field Summary
`int` `alpha` The global alpha value to be used for every pixel.
`byte[]` `alphaData` The alpha data of the image.
`int` `bytesPerLine` The number of bytes per scanline.
`byte[]` `data` The pixel data of the image.
`int` `delayTime` The time to delay before displaying the next image in an animation (this field corresponds to the GIF89a Delay Time value).
`int` `depth` The color depth of the image, in bits per pixel.
`int` `disposalMethod` A description of how to dispose of the current image before displaying the next.
`int` `height` The height of the image, in pixels.
`byte[]` `maskData` An icon-specific field containing the data from the icon mask.
`int` `maskPad` An icon-specific field containing the scanline pad of the mask.
`PaletteData` `palette` The color table for the image.
`int` `scanlinePad` The scanline padding.
`int` `transparentPixel` The transparent pixel.
`int` `type` The type of file from which the image was read.
`int` `width` The width of the image, in pixels.
`int` `x` The x coordinate of the top left corner of the image within the logical screen (this field corresponds to the GIF89a Image Left Position value).
`int` `y` The y coordinate of the top left corner of the image within the logical screen (this field corresponds to the GIF89a Image Top Position value).

Constructor Summary
`ImageData(java.io.InputStream stream)` Constructs an `ImageData` loaded from the specified input stream.
`ImageData(int width, int height, int depth, PaletteData palette)` Constructs a new, empty ImageData with the given width, height, depth and palette.
`ImageData(int width, int height, int depth, PaletteData palette, int scanlinePad, byte[] data)` Constructs a new, empty ImageData with the given width, height, depth, palette, scanlinePad and data.
`ImageData(java.lang.String filename)` Constructs an `ImageData` loaded from a file with the specified name.

Method Summary
`java.lang.Object` `clone()` Returns a new instance of the same class as the receiver, whose slots have been filled in with copies of the values in the slots of the receiver.
`int` `getAlpha(int x, int y)` Returns the alpha value at offset `x` in scanline `y` in the receiver's alpha data.
`void` `getAlphas(int x, int y, int getWidth, byte[] alphas, int startIndex)` Returns `getWidth` alpha values starting at offset `x` in scanline `y` in the receiver's alpha data starting at `startIndex`.
`int` `getPixel(int x, int y)` Returns the pixel value at offset `x` in scanline `y` in the receiver's data.
`void` `getPixels(int x, int y, int getWidth, byte[] pixels, int startIndex)` Returns `getWidth` pixel values starting at offset `x` in scanline `y` in the receiver's data starting at `startIndex`.
`void` `getPixels(int x, int y, int getWidth, int[] pixels, int startIndex)` Returns `getWidth` pixel values starting at offset `x` in scanline `y` in the receiver's data starting at `startIndex`.
`RGB[]` `getRGBs()` Returns an array of `RGB`s which comprise the indexed color table of the receiver, or null if the receiver has a direct color model.
`ImageData` `getTransparencyMask()` Returns an `ImageData` which specifies the transparency mask information for the receiver.
`int` `getTransparencyType()` Returns the image transparency type, which will be one of `SWT.TRANSPARENCY_NONE`, `SWT.TRANSPARENCY_MASK`, `SWT.TRANSPARENCY_PIXEL` or `SWT.TRANSPARENCY_ALPHA`.
`static ImageData` `internal_new(int width, int height, int depth, PaletteData palette, int scanlinePad, byte[] data, int maskPad, byte[] maskData, byte[] alphaData, int alpha, int transparentPixel, int type, int x, int y, int disposalMethod, int delayTime)` Invokes internal SWT functionality to create a new instance of this class.
`ImageData` `scaledTo(int width, int height)` Returns a copy of the receiver which has been stretched or shrunk to the specified size.
`void` `setAlpha(int x, int y, int alpha)` Sets the alpha value at offset `x` in scanline `y` in the receiver's alpha data.
`void` `setAlphas(int x, int y, int putWidth, byte[] alphas, int startIndex)` Sets the alpha values starting at offset `x` in scanline `y` in the receiver's alpha data to the values from the array `alphas` starting at `startIndex`.
`void` `setPixel(int x, int y, int pixelValue)` Sets the pixel value at offset `x` in scanline `y` in the receiver's data.
`void` `setPixels(int x, int y, int putWidth, byte[] pixels, int startIndex)` Sets the pixel values starting at offset `x` in scanline `y` in the receiver's data to the values from the array `pixels` starting at `startIndex`.
`void` `setPixels(int x, int y, int putWidth, int[] pixels, int startIndex)` Sets the pixel values starting at offset `x` in scanline `y` in the receiver's data to the values from the array `pixels` starting at `startIndex`.

Methods inherited from class java.lang.Object
`equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

Field Detail

### width

    public int width

  The width of the image, in pixels.

### height

    public int height

  The height of the image, in pixels.

### depth

    public int depth

  The color depth of the image, in bits per pixel.

  Note that a depth of 8 or less does not necessarily mean that the image is palette indexed, or conversely that a depth greater than 8 means that the image is direct color. Check the associated PaletteData's isDirect field for such determinations.

### scanlinePad

    public int scanlinePad

  The scanline padding.

  If one scanline of the image is not a multiple of this number, it will be padded with zeros until it is.

### bytesPerLine

    public int bytesPerLine

  The number of bytes per scanline.

  This is a multiple of the scanline padding.

### data

    public byte[] data

  The pixel data of the image.

  Note that for 16 bit depth images the pixel data is stored in least significant byte order; however, for 24bit and 32bit depth images the pixel data is stored in most significant byte order.

### palette

    public PaletteData palette

  The color table for the image.

### transparentPixel

    public int transparentPixel

  The transparent pixel.

  Pixels with this value are transparent.

  The default is -1 which means 'no transparent pixel'.

### maskData

    public byte[] maskData

  An icon-specific field containing the data from the icon mask.

  This is a 1 bit bitmap stored with the most significant bit first. The number of bytes per scanline is '((width + 7) / 8 + (maskPad - 1)) / maskPad * maskPad'.

  The default is null which means 'no transparency mask'.

### maskPad

    public int maskPad

  An icon-specific field containing the scanline pad of the mask.

  If one scanline of the transparency mask is not a multiple of this number, it will be padded with zeros until it is.

### alphaData

    public byte[] alphaData

  The alpha data of the image.

  Every pixel can have an alpha blending value that varies from 0, meaning fully transparent, to 255 meaning fully opaque. The number of bytes per scanline is 'width'.

### alpha

    public int alpha

  The global alpha value to be used for every pixel.

  If this value is set, the `alphaData` field is ignored and when the image is rendered each pixel will be blended with the background an amount proportional to this value.

  The default is -1 which means 'no global alpha value'

### type

    public int type

  The type of file from which the image was read. It is expressed as one of the following values:
  `IMAGE_BMP`
    Windows BMP file format, no compression
  `IMAGE_BMP_RLE`
    Windows BMP file format, RLE compression if appropriate
  `IMAGE_GIF`
    GIF file format
  `IMAGE_ICO`
    Windows ICO file format
  `IMAGE_JPEG`
    JPEG file format
  `IMAGE_PNG`
    PNG file format

### x

    public int x

  The x coordinate of the top left corner of the image within the logical screen (this field corresponds to the GIF89a Image Left Position value).

### y

    public int y

  The y coordinate of the top left corner of the image within the logical screen (this field corresponds to the GIF89a Image Top Position value).

### disposalMethod

    public int disposalMethod

  A description of how to dispose of the current image before displaying the next. It is expressed as one of the following values:
  `DM_UNSPECIFIED`
    disposal method not specified
  `DM_FILL_NONE`
    do nothing - leave the image in place
  `DM_FILL_BACKGROUND`
    fill with the background color
  `DM_FILL_PREVIOUS`
    restore the previous picture
  (this field corresponds to the GIF89a Disposal Method value)

### delayTime

    public int delayTime

  The time to delay before displaying the next image in an animation (this field corresponds to the GIF89a Delay Time value).

Constructor Detail

### ImageData

    public ImageData(int width,
                     int height,
                     int depth,
                     PaletteData palette)

  Constructs a new, empty ImageData with the given width, height, depth and palette. The data will be initialized to an (all zero) array of the appropriate size.

  Parameters:
    `width` - the width of the image
    `height` - the height of the image
    `depth` - the depth of the image
    `palette` - the palette of the image (must not be null)
  Throws:
    `java.lang.IllegalArgumentException` -
    - ERROR_INVALID_ARGUMENT - if the width or height is zero or negative, or if the depth is not one of 1, 2, 4, 8, 16, 24 or 32
    - ERROR_NULL_ARGUMENT - if the palette is null

### ImageData

    public ImageData(int width,
                     int height,
                     int depth,
                     PaletteData palette,
                     int scanlinePad,
                     byte[] data)

  Constructs a new, empty ImageData with the given width, height, depth, palette, scanlinePad and data.

  Parameters:
    `width` - the width of the image
    `height` - the height of the image
    `depth` - the depth of the image
    `palette` - the palette of the image
    `scanlinePad` - the padding of each line, in bytes
    `data` - the data of the image
  Throws:
    `java.lang.IllegalArgumentException` -
    - ERROR_INVALID_ARGUMENT - if the width or height is zero or negative, or if the depth is not one of 1, 2, 4, 8, 16, 24 or 32, or the data array is too small to contain the image data
    - ERROR_NULL_ARGUMENT - if the palette or data is null
    - ERROR_CANNOT_BE_ZERO - if the scanlinePad is zero

### ImageData

    public ImageData(java.io.InputStream stream)

  Constructs an `ImageData` loaded from the specified input stream. Throws an error if an error occurs while loading the image, or if the image has an unsupported type. Application code is still responsible for closing the input stream.

  This constructor is provided for convenience when loading a single image only. If the stream contains multiple images, only the first one will be loaded. To load multiple images, use `ImageLoader.load()`.

  This constructor may be used to load a resource as follows:

           static ImageData loadImageData (Class clazz, String string) {
                InputStream stream = clazz.getResourceAsStream (string);
                if (stream == null) return null;
                ImageData imageData = null;
                try {
                     imageData = new ImageData (stream);
                } catch (SWTException ex) {
                } finally {
                     try {
                          stream.close ();
                     } catch (IOException ex) {}
                }
                return imageData;
           }

  Parameters:
    `stream` - the input stream to load the image from (must not be null)
  Throws:
    `java.lang.IllegalArgumentException` -
    - ERROR_NULL_ARGUMENT - if the stream is null
    `SWTException` -
    - ERROR_IO - if an IO error occurs while reading from the stream
    - ERROR_INVALID_IMAGE - if the image stream contains invalid data
    - ERROR_UNSUPPORTED_FORMAT - if the image stream contains an unrecognized format
  See Also:
    `ImageLoader.load(InputStream)`

### ImageData

    public ImageData(java.lang.String filename)

  Constructs an `ImageData` loaded from a file with the specified name. Throws an error if an error occurs loading the image, or if the image has an unsupported type.

  This constructor is provided for convenience when loading a single image only. If the file contains multiple images, only the first one will be loaded. To load multiple images, use `ImageLoader.load()`.

  Parameters:
    `filename` - the name of the file to load the image from (must not be null)
  Throws:
    `java.lang.IllegalArgumentException` -
    - ERROR_NULL_ARGUMENT - if the file name is null
    `SWTException` -
    - ERROR_IO - if an IO error occurs while reading from the file
    - ERROR_INVALID_IMAGE - if the image file contains invalid data
    - ERROR_UNSUPPORTED_FORMAT - if the image file contains an unrecognized format

Method Detail

### internal_new

    public static ImageData internal_new(int width,
                                         int height,
                                         int depth,
                                         PaletteData palette,
                                         int scanlinePad,
                                         byte[] data,
                                         int maskPad,
                                         byte[] maskData,
                                         byte[] alphaData,
                                         int alpha,
                                         int transparentPixel,
                                         int type,
                                         int x,
                                         int y,
                                         int disposalMethod,
                                         int delayTime)

  Invokes internal SWT functionality to create a new instance of this class.

  IMPORTANT: This method is not part of the public API for `ImageData`. It is marked public only so that it can be shared within the packages provided by SWT. It is subject to change without notice, and should never be called from application code.

  This method is for internal use, and is not described further.

### clone

    public java.lang.Object clone()

  Returns a new instance of the same class as the receiver, whose slots have been filled in with copies of the values in the slots of the receiver. That is, the returned object is a deep copy of the receiver.

  Overrides:
    `clone` in class `java.lang.Object`
  Returns:
    a copy of the receiver.

### getAlpha

    public int getAlpha(int x,
                        int y)

  Returns the alpha value at offset `x` in scanline `y` in the receiver's alpha data. The alpha value is between 0 (transparent) and 255 (opaque).

  Parameters:
    `x` - the x coordinate of the pixel to get the alpha value of
    `y` - the y coordinate of the pixel to get the alpha value of
  Returns:
    the alpha value at the given coordinates
  Throws:
    `java.lang.IllegalArgumentException` -
    - ERROR_INVALID_ARGUMENT - if either argument is out of range

### getAlphas

    public void getAlphas(int x,
                          int y,
                          int getWidth,
                          byte[] alphas,
                          int startIndex)

  Returns `getWidth` alpha values starting at offset `x` in scanline `y` in the receiver's alpha data starting at `startIndex`. The alpha values are unsigned, between `(byte)0` (transparent) and `(byte)255` (opaque).

  Parameters:
    `x` - the x position of the pixel to begin getting alpha values
    `y` - the y position of the pixel to begin getting alpha values
    `getWidth` - the width of the data to get
    `alphas` - the buffer in which to put the alpha values
    `startIndex` - the offset into the image to begin getting alpha values
  Throws:
    `java.lang.IndexOutOfBoundsException` - if getWidth is too large
    `java.lang.IllegalArgumentException` -
    - ERROR_NULL_ARGUMENT - if pixels is null
    - ERROR_INVALID_ARGUMENT - if x or y is out of bounds
    - ERROR_INVALID_ARGUMENT - if getWidth is negative

### getPixel

    public int getPixel(int x,
                        int y)

  Returns the pixel value at offset `x` in scanline `y` in the receiver's data.

  Parameters:
    `x` - the x position of the pixel to get
    `y` - the y position of the pixel to get
  Returns:
    the pixel at the given coordinates
  Throws:
    `java.lang.IllegalArgumentException` -
    - ERROR_INVALID_ARGUMENT - if either argument is out of bounds
    `SWTException` -
    - ERROR_UNSUPPORTED_DEPTH if the depth is not one of 1, 2, 4, 8, 16, 24 or 32

### getPixels

    public void getPixels(int x,
                          int y,
                          int getWidth,
                          byte[] pixels,
                          int startIndex)

  Returns `getWidth` pixel values starting at offset `x` in scanline `y` in the receiver's data starting at `startIndex`.

  Parameters:
    `x` - the x position of the first pixel to get
    `y` - the y position of the first pixel to get
    `getWidth` - the width of the data to get
    `pixels` - the buffer in which to put the pixels
    `startIndex` - the offset into the byte array to begin storing pixels
  Throws:
    `java.lang.IndexOutOfBoundsException` - if getWidth is too large
    `java.lang.IllegalArgumentException` -
    - ERROR_NULL_ARGUMENT - if pixels is null
    - ERROR_INVALID_ARGUMENT - if x or y is out of bounds
    - ERROR_INVALID_ARGUMENT - if getWidth is negative
    `SWTException` -
    - ERROR_UNSUPPORTED_DEPTH - if the depth is not one of 1, 2, 4 or 8 (For higher depths, use the int[] version of this method.)

### getPixels

    public void getPixels(int x,
                          int y,
                          int getWidth,
                          int[] pixels,
                          int startIndex)

  Returns `getWidth` pixel values starting at offset `x` in scanline `y` in the receiver's data starting at `startIndex`.

  Parameters:
    `x` - the x position of the first pixel to get
    `y` - the y position of the first pixel to get
    `getWidth` - the width of the data to get
    `pixels` - the buffer in which to put the pixels
    `startIndex` - the offset into the buffer to begin storing pixels
  Throws:
    `java.lang.IndexOutOfBoundsException` - if getWidth is too large
    `java.lang.IllegalArgumentException` -
    - ERROR_NULL_ARGUMENT - if pixels is null
    - ERROR_INVALID_ARGUMENT - if x or y is out of bounds
    - ERROR_INVALID_ARGUMENT - if getWidth is negative
    `SWTException` -
    - ERROR_UNSUPPORTED_DEPTH - if the depth is not one of 1, 2, 4, 8, 16, 24 or 32

### getRGBs

    public RGB[] getRGBs()

  Returns an array of `RGB`s which comprise the indexed color table of the receiver, or null if the receiver has a direct color model.

  Returns:
    the RGB values for the image or null if direct color
  See Also:
    `PaletteData.getRGBs()`

### getTransparencyMask

    public ImageData getTransparencyMask()

  Returns an `ImageData` which specifies the transparency mask information for the receiver. If the receiver has no transparency or is not an icon, returns an opaque mask.

  Returns:
    the transparency mask

### getTransparencyType

    public int getTransparencyType()

  Returns the image transparency type, which will be one of `SWT.TRANSPARENCY_NONE`, `SWT.TRANSPARENCY_MASK`, `SWT.TRANSPARENCY_PIXEL` or `SWT.TRANSPARENCY_ALPHA`.

  Returns:
    the receiver's transparency type

### scaledTo

    public ImageData scaledTo(int width,
                              int height)

  Returns a copy of the receiver which has been stretched or shrunk to the specified size. If either the width or height is negative, the resulting image will be inverted in the associated axis.

  Parameters:
    `width` - the width of the new ImageData
    `height` - the height of the new ImageData
  Returns:
    a scaled copy of the image

### setAlpha

    public void setAlpha(int x,
                         int y,
                         int alpha)

  Sets the alpha value at offset `x` in scanline `y` in the receiver's alpha data. The alpha value must be between 0 (transparent) and 255 (opaque).

  Parameters:
    `x` - the x coordinate of the alpha value to set
    `y` - the y coordinate of the alpha value to set
    `alpha` - the value to set the alpha to
  Throws:
    `java.lang.IllegalArgumentException` -
    - ERROR_INVALID_ARGUMENT - if x or y is out of bounds

### setAlphas

    public void setAlphas(int x,
                          int y,
                          int putWidth,
                          byte[] alphas,
                          int startIndex)

  Sets the alpha values starting at offset `x` in scanline `y` in the receiver's alpha data to the values from the array `alphas` starting at `startIndex`. The alpha values must be between `(byte)0` (transparent) and `(byte)255` (opaque)

  Parameters:
    `x` - the x coordinate of the pixel to being setting the alpha values
    `y` - the y coordinate of the pixel to being setting the alpha values
    `putWidth` - the width of the alpha values to set
    `alphas` - the alpha values to set
    `startIndex` - the index at which to begin setting
  Throws:
    `java.lang.IndexOutOfBoundsException` - if putWidth is too large
    `java.lang.IllegalArgumentException` -
    - ERROR_NULL_ARGUMENT - if pixels is null
    - ERROR_INVALID_ARGUMENT - if x or y is out of bounds
    - ERROR_INVALID_ARGUMENT - if putWidth is negative

### setPixel

    public void setPixel(int x,
                         int y,
                         int pixelValue)

  Sets the pixel value at offset `x` in scanline `y` in the receiver's data.

  Parameters:
    `x` - the x coordinate of the pixel to set
    `y` - the y coordinate of the pixel to set
    `pixelValue` - the value to set the pixel to
  Throws:
    `java.lang.IllegalArgumentException` -
    - ERROR_INVALID_ARGUMENT - if x or y is out of bounds
    `SWTException` -
    - ERROR_UNSUPPORTED_DEPTH if the depth is not one of 1, 2, 4, 8, 16, 24 or 32

### setPixels

    public void setPixels(int x,
                          int y,
                          int putWidth,
                          byte[] pixels,
                          int startIndex)

  Sets the pixel values starting at offset `x` in scanline `y` in the receiver's data to the values from the array `pixels` starting at `startIndex`.

  Parameters:
    `x` - the x position of the pixel to set
    `y` - the y position of the pixel to set
    `putWidth` - the width of the pixels to set
    `pixels` - the pixels to set
    `startIndex` - the index at which to begin setting
  Throws:
    `java.lang.IndexOutOfBoundsException` - if putWidth is too large
    `java.lang.IllegalArgumentException` -
    - ERROR_NULL_ARGUMENT - if pixels is null
    - ERROR_INVALID_ARGUMENT - if x or y is out of bounds
    - ERROR_INVALID_ARGUMENT - if putWidth is negative
    `SWTException` -
    - ERROR_UNSUPPORTED_DEPTH if the depth is not one of 1, 2, 4, 8 (For higher depths, use the int[] version of this method.)

### setPixels

    public void setPixels(int x,
                          int y,
                          int putWidth,
                          int[] pixels,
                          int startIndex)

  Sets the pixel values starting at offset `x` in scanline `y` in the receiver's data to the values from the array `pixels` starting at `startIndex`.

  Parameters:
    `x` - the x position of the pixel to set
    `y` - the y position of the pixel to set
    `putWidth` - the width of the pixels to set
    `pixels` - the pixels to set
    `startIndex` - the index at which to begin setting
  Throws:
    `java.lang.IndexOutOfBoundsException` - if putWidth is too large
    `java.lang.IllegalArgumentException` -
    - ERROR_NULL_ARGUMENT - if pixels is null
    - ERROR_INVALID_ARGUMENT - if x or y is out of bounds
    - ERROR_INVALID_ARGUMENT - if putWidth is negative
    `SWTException` -
    - ERROR_UNSUPPORTED_DEPTH if the depth is not one of 1, 2, 4, 8, 16, 24 or 32

Eclipse Remote Application Platform

Copyright (c) EclipseSource and others 2002, 2013. All rights reserved. This program and the accompanying materials are made available under the terms of the Eclipse Public License v1.0