## javax.media.j3d
Class ImageComponent2D

    java.lang.Object
      javax.media.j3d.SceneGraphObject
          javax.media.j3d.NodeComponent
              javax.media.j3d.ImageComponent
                  javax.media.j3d.ImageComponent2D

    public class ImageComponent2D

extends ImageComponent

This class defines a 2D image component. This is used for texture images, background images and raster components of Shape3D nodes. Prior to Java 3D 1.2, only BufferedImage objects could be used as the input to an ImageComponent2D object. As of Java 3D 1.2, an ImageComponent2D accepts any RenderedImage object (BufferedImage is an implementation of the RenderedImage interface). The methods that set/get a BufferedImage object are left in for compatibility. The new methods that set/get a RenderedImage are a superset of the old methods. In particular, the two set methods in the following example are equivalent:

`BufferedImage bi;
RenderedImage ri = bi;
ImageComponent2D ic;

// Set the image to the specified BufferedImage
ic.set(bi);

// Set the image to the specified RenderedImage
ic.set(ri);

`

As of Java 3D 1.5, an ImageComponent2D accepts an NioImageBuffer object as an alternative to a RenderedImage.

Nested Class Summary
`static interface` `ImageComponent2D.Updater` The ImageComponent2D.Updater interface is used in updating image data that is accessed by reference from a live or compiled ImageComponent object.

Nested classes/interfaces inherited from class javax.media.j3d.ImageComponent
`ImageComponent.ImageClass`

Field Summary

Fields inherited from class javax.media.j3d.ImageComponent
`ALLOW_FORMAT_READ, ALLOW_IMAGE_READ, ALLOW_IMAGE_WRITE, ALLOW_SIZE_READ, FORMAT_CHANNEL8, FORMAT_LUM4_ALPHA4, FORMAT_LUM8_ALPHA8, FORMAT_R3_G3_B2, FORMAT_RGB, FORMAT_RGB4, FORMAT_RGB5, FORMAT_RGB5_A1, FORMAT_RGB8, FORMAT_RGBA, FORMAT_RGBA4, FORMAT_RGBA8`

Constructor Summary
`ImageComponent2D(int format, java.awt.image.BufferedImage image)` Constructs a 2D image component object using the specified format and BufferedImage.
`ImageComponent2D(int format, java.awt.image.BufferedImage image, boolean byReference, boolean yUp)` Constructs a 2D image component object using the specified format, BufferedImage, byReference flag, and yUp flag.
`ImageComponent2D(int format, int width, int height)` Constructs a 2D image component object using the specified format, width, and height.
`ImageComponent2D(int format, int width, int height, boolean byReference, boolean yUp)` Constructs a 2D image component object using the specified format, width, height, byReference flag, and yUp flag.
`ImageComponent2D(int format, NioImageBuffer image, boolean byReference, boolean yUp)` Constructs a 2D image component object using the specified format, NioImageBuffer, byReference flag, and yUp flag.
`ImageComponent2D(int format, java.awt.image.RenderedImage image)` Constructs a 2D image component object using the specified format and RenderedImage.
`ImageComponent2D(int format, java.awt.image.RenderedImage image, boolean byReference, boolean yUp)` Constructs a 2D image component object using the specified format, RenderedImage, byReference flag, and yUp flag.

Method Summary
`NodeComponent` `cloneNodeComponent()` Deprecated. replaced with cloneNodeComponent(boolean forceDuplicate)
`java.awt.image.BufferedImage` `getImage()` Retrieves the image from this ImageComponent2D object.
`NioImageBuffer` `getNioImage()` Retrieves the image from this ImageComponent2D object.
`java.awt.image.RenderedImage` `getRenderedImage()` Retrieves the image from this ImageComponent2D object.
`void` `set(java.awt.image.BufferedImage image)` Sets this image component to the specified BufferedImage object.
`void` `set(NioImageBuffer image)` Sets this image component to the specified NioImageBuffer object.
`void` `set(java.awt.image.RenderedImage image)` Sets this image component to the specified RenderedImage object.
`void` `setSubImage(java.awt.image.RenderedImage image, int width, int height, int srcX, int srcY, int dstX, int dstY)` Modifies a contiguous subregion of the image component.
`void` `updateData(ImageComponent2D.Updater updater, int x, int y, int width, int height)` Updates image data that is accessed by reference.

Methods inherited from class javax.media.j3d.ImageComponent
`getFormat, getHeight, getImageClass, getWidth, isByReference, isYUp, setYUp`

Methods inherited from class javax.media.j3d.NodeComponent
`cloneNodeComponent, duplicateNodeComponent, duplicateNodeComponent, getDuplicateOnCloneTree, setDuplicateOnCloneTree`

Methods inherited from class javax.media.j3d.SceneGraphObject
`clearCapability, clearCapabilityIsFrequent, duplicateSceneGraphObject, getCapability, getCapabilityIsFrequent, getName, getUserData, isCompiled, isLive, setCapability, setCapabilityIsFrequent, setName, setUserData, toString, updateNodeReferences`

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

Constructor Detail

### ImageComponent2D

    public ImageComponent2D(int format,
                            int width,
                            int height)

  Constructs a 2D image component object using the specified format, width, and height. Default values are used for all other parameters. The default values are as follows:
  image : null
  imageClass : ImageClass.BUFFERED_IMAGE

  Parameters:
    `format` - the image component format, one of: FORMAT_RGB, FORMAT_RGBA, etc.
    `width` - the number of columns of pixels in this image component object
    `height` - the number of rows of pixels in this image component object
  Throws:
    `java.lang.IllegalArgumentException` - if format is invalid, or if width or height are not positive.

### ImageComponent2D

    public ImageComponent2D(int format,
                            java.awt.image.BufferedImage image)

  Constructs a 2D image component object using the specified format and BufferedImage. A copy of the BufferedImage is made. The image class is set to ImageClass.BUFFERED_IMAGE. Default values are used for all other parameters.

  Parameters:
    `format` - the image component format, one of: FORMAT_RGB, FORMAT_RGBA, etc.
    `image` - the BufferedImage used to create this 2D image component.
  Throws:
    `java.lang.IllegalArgumentException` - if format is invalid, or if the width or height of the image are not positive.

### ImageComponent2D

    public ImageComponent2D(int format,
                            java.awt.image.RenderedImage image)

  Constructs a 2D image component object using the specified format and RenderedImage. A copy of the RenderedImage is made. The image class is set to ImageClass.BUFFERED_IMAGE. Default values are used for all other parameters.

  Parameters:
    `format` - the image component format, one of: FORMAT_RGB, FORMAT_RGBA, etc.
    `image` - the RenderedImage used to create this 2D image component
  Throws:
    `java.lang.IllegalArgumentException` - if format is invalid, or if the width or height of the image are not positive.
  Since:
    Java 3D 1.2

### ImageComponent2D

    public ImageComponent2D(int format,
                            int width,
                            int height,
                            boolean byReference,
                            boolean yUp)

  Constructs a 2D image component object using the specified format, width, height, byReference flag, and yUp flag. Default values are used for all other parameters.

  Parameters:
    `format` - the image component format, one of: FORMAT_RGB, FORMAT_RGBA, etc.
    `width` - the number of columns of pixels in this image component object
    `height` - the number of rows of pixels in this image component object
    `byReference` - a flag that indicates whether the data is copied into this image component object or is accessed by reference.
    `yUp` - a flag that indicates the y-orientation of this image component. If yUp is set to true, the origin of the image is the lower left; otherwise, the origin of the image is the upper left.
  Throws:
    `java.lang.IllegalArgumentException` - if format is invalid, or if width or height are not positive.
  Since:
    Java 3D 1.2

### ImageComponent2D

    public ImageComponent2D(int format,
                            java.awt.image.BufferedImage image,
                            boolean byReference,
                            boolean yUp)

  Constructs a 2D image component object using the specified format, BufferedImage, byReference flag, and yUp flag. The image class is set to ImageClass.BUFFERED_IMAGE.

  Parameters:
    `format` - the image component format, one of: FORMAT_RGB, FORMAT_RGBA, etc.
    `image` - the BufferedImage used to create this 2D image component
    `byReference` - a flag that indicates whether the data is copied into this image component object or is accessed by reference
    `yUp` - a flag that indicates the y-orientation of this image component. If yUp is set to true, the origin of the image is the lower left; otherwise, the origin of the image is the upper left.
  Throws:
    `java.lang.IllegalArgumentException` - if format is invalid, or if the width or height of the image are not positive.
  Since:
    Java 3D 1.2

### ImageComponent2D

    public ImageComponent2D(int format,
                            java.awt.image.RenderedImage image,
                            boolean byReference,
                            boolean yUp)

  Constructs a 2D image component object using the specified format, RenderedImage, byReference flag, and yUp flag. The image class is set to ImageClass.RENDERED_IMAGE if the byReferece flag is true and the specified RenderedImage is not an instance of BufferedImage. In all other cases, the image class is set to ImageClass.BUFFERED_IMAGE.

  Parameters:
    `format` - the image component format, one of: FORMAT_RGB, FORMAT_RGBA, etc.
    `image` - the RenderedImage used to create this 2D image component
    `byReference` - a flag that indicates whether the data is copied into this image component object or is accessed by reference.
    `yUp` - a flag that indicates the y-orientation of this image component. If yUp is set to true, the origin of the image is the lower left; otherwise, the origin of the image is the upper left.
  Throws:
    `java.lang.IllegalArgumentException` - if format is invalid, or if the width or height of the image are not positive.
  Since:
    Java 3D 1.2

### ImageComponent2D

    public ImageComponent2D(int format,
                            NioImageBuffer image,
                            boolean byReference,
                            boolean yUp)

  Constructs a 2D image component object using the specified format, NioImageBuffer, byReference flag, and yUp flag. The image class is set to ImageClass.NIO_IMAGE_BUFFER.

  Parameters:
    `format` - the image component format, one of: FORMAT_RGB, FORMAT_RGBA, etc.
    `image` - the NioImageBuffer used to create this 2D image component
    `byReference` - a flag that indicates whether the data is copied into this image component object or is accessed by reference.
    `yUp` - a flag that indicates the y-orientation of this image component. If yUp is set to true, the origin of the image is the lower left; otherwise, the origin of the image is the upper left.
  Throws:
    `java.lang.IllegalArgumentException` - if format is invalid, or if the width or height of the image are not positive.
    `java.lang.IllegalArgumentException` - if the byReference flag is false.
    `java.lang.IllegalArgumentException` - if the yUp flag is false.
    `java.lang.IllegalArgumentException` - if the number of components in format does not match the number of components in image.
  Since:
    Java 3D 1.5

Method Detail

### set

    public void set(java.awt.image.BufferedImage image)

  Sets this image component to the specified BufferedImage object. If the data access mode is not by-reference, then the BufferedImage data is copied into this object. If the data access mode is by-reference, then a reference to the BufferedImage is saved, but the data is not necessarily copied.

  The image class is set to ImageClass.BUFFERED_IMAGE.

  Parameters:
    `image` - BufferedImage object containing the image. Its size must be the same as the current size of this ImageComponent2D object.
  Throws:
    `CapabilityNotSetException` - if appropriate capability is not set and this object is part of live or compiled scene graph
    `java.lang.IllegalArgumentException` - if the width and height of the specified image is not equal to the width and height of this ImageComponent object.

### set

    public void set(java.awt.image.RenderedImage image)

  Sets this image component to the specified RenderedImage object. If the data access mode is not by-reference, the RenderedImage data is copied into this object. If the data access mode is by-reference, a reference to the RenderedImage is saved, but the data is not necessarily copied.

  The image class is set to ImageClass.RENDERED_IMAGE if the the data access mode is by-reference and the specified RenderedImage is not an instance of BufferedImage. In all other cases, the image class is set to ImageClass.BUFFERED_IMAGE.

  Parameters:
    `image` - RenderedImage object containing the image. Its size must be the same as the current size of this ImageComponent2D object.
  Throws:
    `CapabilityNotSetException` - if appropriate capability is not set and this object is part of live or compiled scene graph
    `java.lang.IllegalArgumentException` - if the width and height of the specified image is not equal to the width and height of this ImageComponent object.
  Since:
    Java 3D 1.2

### set

    public void set(NioImageBuffer image)

  Sets this image component to the specified NioImageBuffer object. If the data access mode is not by-reference, the NioImageBuffer data is copied into this object. If the data access mode is by-reference, a reference to the NioImageBuffer is saved, but the data is not necessarily copied.

  The image class is set to ImageClass.NIO_IMAGE_BUFFER.

  Parameters:
    `image` - NioImageBuffer object containing the image. Its size must be the same as the current size of this ImageComponent2D object.
  Throws:
    `CapabilityNotSetException` - if appropriate capability is not set and this object is part of live or compiled scene graph
    `java.lang.IllegalStateException` - if this ImageComponent object is not yUp.
    `java.lang.IllegalArgumentException` - if the width and height of the specified image is not equal to the width and height of this ImageComponent object.
    `java.lang.IllegalArgumentException` - if the number of components in format does not match the number of components in image.
  Since:
    Java 3D 1.5

### getImage

    public java.awt.image.BufferedImage getImage()

  Retrieves the image from this ImageComponent2D object. If the data access mode is not by-reference, a copy of the image is made. If the data access mode is by-reference, the reference is returned.

  Returns:
    either a new BufferedImage object created from the data in this image component, or the BufferedImage object referenced by this image component.
  Throws:
    `CapabilityNotSetException` - if appropriate capability is not set and this object is part of live or compiled scene graph
    `java.lang.IllegalStateException` - if the image class is not ImageClass.BUFFERED_IMAGE.

### getRenderedImage

    public java.awt.image.RenderedImage getRenderedImage()

  Retrieves the image from this ImageComponent2D object. If the data access mode is not by-reference, a copy of the image is made. If the data access mode is by-reference, the reference is returned.

  Returns:
    either a new RenderedImage object created from the data in this image component, or the RenderedImage object referenced by this image component.
  Throws:
    `CapabilityNotSetException` - if appropriate capability is not set and this object is part of live or compiled scene graph
    `java.lang.IllegalStateException` - if the image class is not one of: ImageClass.BUFFERED_IMAGE or ImageClass.RENDERED_IMAGE.
  Since:
    Java 3D 1.2

### getNioImage

    public NioImageBuffer getNioImage()

  Retrieves the image from this ImageComponent2D object. If the data access mode is not by-reference, a copy of the image is made. If the data access mode is by-reference, the reference is returned.

  Returns:
    either a new NioImageBuffer object created from the data in this image component, or the NioImageBuffer object referenced by this image component.
  Throws:
    `CapabilityNotSetException` - if appropriate capability is not set and this object is part of live or compiled scene graph
    `java.lang.IllegalStateException` - if the image class is not ImageClass.NIO_IMAGE_BUFFER.
  Since:
    Java 3D 1.5

### setSubImage

    public void setSubImage(java.awt.image.RenderedImage image,
                            int width,
                            int height,
                            int srcX,
                            int srcY,
                            int dstX,
                            int dstY)

  Modifies a contiguous subregion of the image component. Block of data of dimension (width * height) starting at the offset (srcX, srcY) of the specified RenderedImage object will be copied into the image component starting at the offset (dstX, dstY) of the ImageComponent2D object. The specified RenderedImage object must be of the same format as the current RenderedImage object in this image component. This method can only be used if the data access mode is by-copy. If it is by-reference, see updateData().

  Parameters:
    `image` - RenderedImage object containing the subimage.
    `width` - width of the subregion.
    `height` - height of the subregion.
    `srcX` - starting X offset of the subregion in the specified image.
    `srcY` - starting Y offset of the subregion in the specified image.
    `dstX` - starting X offset of the subregion in the image component of this object.
    `dstY` - starting Y offset of the subregion in the image component of this object.
  Throws:
    `CapabilityNotSetException` - if appropriate capability is not set and this object is part of live or compiled scene graph
    `java.lang.IllegalStateException` - if the data access mode is `BY_REFERENCE`.
    `java.lang.IllegalArgumentException` - if `width` or `height` of the subregion exceeds the dimension of the image of this object.
    `java.lang.IllegalArgumentException` - if `dstX` < 0, or (`dstX` + `width`) > width of this object, or `dstY` < 0, or (`dstY` + `height`) > height of this object.
    `java.lang.IllegalArgumentException` - if `srcX` < 0, or (`srcX` + `width`) > width of the RenderedImage object containing the subimage, or `srcY` < 0, or (`srcY` + `height`) > height of the RenderedImage object containing the subimage.
    `java.lang.IllegalArgumentException` - if the specified RenderedImage is not compatible with the existing RenderedImage.
    `java.lang.IllegalStateException` - if the image class is not one of: ImageClass.BUFFERED_IMAGE or ImageClass.RENDERED_IMAGE.
  Since:
    Java 3D 1.3

### updateData

    public void updateData(ImageComponent2D.Updater updater,
                           int x,
                           int y,
                           int width,
                           int height)

  Updates image data that is accessed by reference. This method calls the updateData method of the specified ImageComponent2D.Updater object to synchronize updates to the image data that is referenced by this ImageComponent2D object. Applications that wish to modify such data must perform all updates via this method.

  The data to be modified has to be within the boundary of the subregion specified by the offset (x, y) and the dimension (width*height). It is illegal to modify data outside this boundary. If any referenced data is modified outisde the updateData method, or any data outside the specified boundary is modified, the results are undefined.

  Parameters:
    `updater` - object whose updateData callback method will be called to update the data referenced by this ImageComponent2D object.
    `x` - starting X offset of the subregion.
    `y` - starting Y offset of the subregion.
    `width` - width of the subregion.
    `height` - height of the subregion.
  Throws:
    `CapabilityNotSetException` - if the appropriate capability is not set, and this object is part of a live or compiled scene graph
    `java.lang.IllegalStateException` - if the data access mode is `BY_COPY`.
    `java.lang.IllegalArgumentException` - if `width` or `height` of the subregion exceeds the dimension of the image of this object.
    `java.lang.IllegalArgumentException` - if `x` < 0, or (`x` + `width`) > width of this object, or `y` < 0, or (`y` + `height`) > height of this object.
  Since:
    Java 3D 1.3

### cloneNodeComponent

    public NodeComponent cloneNodeComponent()

  Deprecated. replaced with cloneNodeComponent(boolean forceDuplicate)

  Overrides:
    `cloneNodeComponent` in class `NodeComponent`

Copyright 1996-2008 Sun Microsystems, Inc. All Rights Reserved. Use is subject to license terms.