Class ImageData
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:
-
Field Summary
FieldsModifier and TypeFieldDescriptionintThe global alpha value to be used for every pixel.byte[]The alpha data of the image.intThe number of bytes per scanline.byte[]The pixel data of the image.intThe time to delay before displaying the next image in an animation (this field corresponds to the GIF89a Delay Time value).intThe color depth of the image, in bits per pixel.intA description of how to dispose of the current image before displaying the next.intThe height of the image, in pixels.byte[]An icon-specific field containing the data from the icon mask.intAn icon-specific field containing the scanline pad of the mask.The color table for the image.intThe scanline padding.intThe transparent pixel.intThe type of file from which the image was read.intThe width of the image, in pixels.intThe x coordinate of the top left corner of the image within the logical screen (this field corresponds to the GIF89a Image Left Position value).intThe 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
ConstructorsConstructorDescriptionImageData(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(InputStream stream) Constructs anImageDataloaded from the specified input stream.Constructs anImageDataloaded from a file with the specified name. -
Method Summary
Modifier and TypeMethodDescriptionclone()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.intgetAlpha(int x, int y) Returns the alpha value at offsetxin scanlineyin the receiver's alpha data.voidgetAlphas(int x, int y, int getWidth, byte[] alphas, int startIndex) ReturnsgetWidthalpha values starting at offsetxin scanlineyin the receiver's alpha data starting atstartIndex.intgetPixel(int x, int y) Returns the pixel value at offsetxin scanlineyin the receiver's data.voidgetPixels(int x, int y, int getWidth, byte[] pixels, int startIndex) ReturnsgetWidthpixel values starting at offsetxin scanlineyin the receiver's data starting atstartIndex.voidgetPixels(int x, int y, int getWidth, int[] pixels, int startIndex) ReturnsgetWidthpixel values starting at offsetxin scanlineyin the receiver's data starting atstartIndex.RGB[]getRGBs()Returns an array ofRGBs which comprise the indexed color table of the receiver, or null if the receiver has a direct color model.Returns anImageDatawhich specifies the transparency mask information for the receiver.intReturns the image transparency type, which will be one ofSWT.TRANSPARENCY_NONE,SWT.TRANSPARENCY_MASK,SWT.TRANSPARENCY_PIXELorSWT.TRANSPARENCY_ALPHA.static ImageDatainternal_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.scaledTo(int width, int height) Returns a copy of the receiver which has been stretched or shrunk to the specified size.voidsetAlpha(int x, int y, int alpha) Sets the alpha value at offsetxin scanlineyin the receiver's alpha data.voidsetAlphas(int x, int y, int putWidth, byte[] alphas, int startIndex) Sets the alpha values starting at offsetxin scanlineyin the receiver's alpha data to the values from the arrayalphasstarting atstartIndex.voidsetPixel(int x, int y, int pixelValue) Sets the pixel value at offsetxin scanlineyin the receiver's data.voidsetPixels(int x, int y, int putWidth, byte[] pixels, int startIndex) Sets the pixel values starting at offsetxin scanlineyin the receiver's data to the values from the arraypixelsstarting atstartIndex.voidsetPixels(int x, int y, int putWidth, int[] pixels, int startIndex) Sets the pixel values starting at offsetxin scanlineyin the receiver's data to the values from the arraypixelsstarting atstartIndex.
-
Field Details
-
width
public int widthThe width of the image, in pixels. -
height
public int heightThe height of the image, in pixels. -
depth
public int depthThe 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 scanlinePadThe 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 bytesPerLineThe number of bytes per scanline.This is a multiple of the scanline padding.
-
data
public byte[] dataThe 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
The color table for the image. -
transparentPixel
public int transparentPixelThe transparent pixel.Pixels with this value are transparent.
The default is -1 which means 'no transparent pixel'.
-
maskData
public byte[] maskDataAn 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 maskPadAn 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[] alphaDataThe 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 alphaThe global alpha value to be used for every pixel.If this value is set, the
alphaDatafield 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 typeThe 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 xThe 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 yThe 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 disposalMethodA 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
-
delayTime
public int delayTimeThe time to delay before displaying the next image in an animation (this field corresponds to the GIF89a Delay Time value).
-
-
Constructor Details
-
ImageData
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 imageheight- the height of the imagedepth- the depth of the imagepalette- the palette of the image (must not be null)- Throws:
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 imageheight- the height of the imagedepth- the depth of the imagepalette- the palette of the imagescanlinePad- the padding of each line, in bytesdata- the data of the image- Throws:
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
Constructs anImageDataloaded 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:
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:
-
ImageData
Constructs anImageDataloaded 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-- 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 Details
-
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
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. -
getAlpha
public int getAlpha(int x, int y) Returns the alpha value at offsetxin scanlineyin 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 ofy- 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) ReturnsgetWidthalpha values starting at offsetxin scanlineyin the receiver's alpha data starting atstartIndex. 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 valuesy- the y position of the pixel to begin getting alpha valuesgetWidth- the width of the data to getalphas- the buffer in which to put the alpha valuesstartIndex- the offset into the image to begin getting alpha values- Throws:
IndexOutOfBoundsException- if getWidth is too largeIllegalArgumentException-- 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 offsetxin scanlineyin the receiver's data.- Parameters:
x- the x position of the pixel to gety- 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) ReturnsgetWidthpixel values starting at offsetxin scanlineyin the receiver's data starting atstartIndex.- Parameters:
x- the x position of the first pixel to gety- the y position of the first pixel to getgetWidth- the width of the data to getpixels- the buffer in which to put the pixelsstartIndex- the offset into the byte array to begin storing pixels- Throws:
IndexOutOfBoundsException- if getWidth is too largeIllegalArgumentException-- 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) ReturnsgetWidthpixel values starting at offsetxin scanlineyin the receiver's data starting atstartIndex.- Parameters:
x- the x position of the first pixel to gety- the y position of the first pixel to getgetWidth- the width of the data to getpixels- the buffer in which to put the pixelsstartIndex- the offset into the buffer to begin storing pixels- Throws:
IndexOutOfBoundsException- if getWidth is too largeIllegalArgumentException-- 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
Returns an array ofRGBs 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:
-
getTransparencyMask
Returns anImageDatawhich 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 ofSWT.TRANSPARENCY_NONE,SWT.TRANSPARENCY_MASK,SWT.TRANSPARENCY_PIXELorSWT.TRANSPARENCY_ALPHA.- Returns:
- the receiver's transparency type
-
scaledTo
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 ImageDataheight- 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 offsetxin scanlineyin 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 sety- the y coordinate of the alpha value to setalpha- 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 offsetxin scanlineyin the receiver's alpha data to the values from the arrayalphasstarting atstartIndex. 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 valuesy- the y coordinate of the pixel to being setting the alpha valuesputWidth- the width of the alpha values to setalphas- the alpha values to setstartIndex- the index at which to begin setting- Throws:
IndexOutOfBoundsException- if putWidth is too largeIllegalArgumentException-- 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 offsetxin scanlineyin the receiver's data.- Parameters:
x- the x coordinate of the pixel to sety- the y coordinate of the pixel to setpixelValue- 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 offsetxin scanlineyin the receiver's data to the values from the arraypixelsstarting atstartIndex.- Parameters:
x- the x position of the pixel to sety- the y position of the pixel to setputWidth- the width of the pixels to setpixels- the pixels to setstartIndex- the index at which to begin setting- Throws:
IndexOutOfBoundsException- if putWidth is too largeIllegalArgumentException-- 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 offsetxin scanlineyin the receiver's data to the values from the arraypixelsstarting atstartIndex.- Parameters:
x- the x position of the pixel to sety- the y position of the pixel to setputWidth- the width of the pixels to setpixels- the pixels to setstartIndex- the index at which to begin setting- Throws:
IndexOutOfBoundsException- if putWidth is too largeIllegalArgumentException-- 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
-