Eclipse Platform
2.0

org.eclipse.swt.graphics
Class ImageData

java.lang.Object
  |
  +--org.eclipse.swt.graphics.ImageData
All Implemented Interfaces:
Cloneable, org.eclipse.swt.internal.CloneableCompatibility

public final class ImageData
extends Object
implements org.eclipse.swt.internal.CloneableCompatibility

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.

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, 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)
 int height
          the height of the image, in pixels
 byte[] maskData
          icon-specific field containing the data from the icon mask
 int maskPad
          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 that the image was read in from, 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
 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(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(String filename)
          Constructs an ImageData loaded from a file with the specified name.
 
Method Summary
 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 RGBs 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, or null if the receiver has no transparency and is not an icon.
 int getTransparencyType()
          Returns the image transparency type.
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 necessary 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
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
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 that the image was read in from, 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, 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:
IllegalArgumentException -
SWTException -

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:
IllegalArgumentException -
SWTException -

ImageData

public ImageData(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.

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().

Parameters:
stream - the input stream to load the image from (must not be null)
Throws:
IllegalArgumentException -
SWTException -
See Also:
ImageLoader.load(java.io.InputStream)

ImageData

public ImageData(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:
IllegalArgumentException -
SWTException -
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 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 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.

Parameters:
x - the x coodinate 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:
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.

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:
IndexOutOfBoundsException - if getWidth is too large
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:
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:
IndexOutOfBoundsException - if getWidth is too large
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:
IndexOutOfBoundsException - if getWidth is too large
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 RGBs 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, or null if the receiver has no transparency and is not an icon.

Returns:
the transparency mask or null if none exists

getTransparencyType

public int getTransparencyType()
Returns the image transparency type.

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.

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:
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.

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:
IndexOutOfBoundsException - if putWidth is too large
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:
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:
IndexOutOfBoundsException - if putWidth is too large
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:
IndexOutOfBoundsException - if putWidth is too large
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 Platform
2.0

Copyright (c) IBM Corp. and others 2000, 2002. All Rights Reserved.