javax.media.jai
Class WritableRenderedImageAdapter

java.lang.Object
  extended byjavax.media.jai.PlanarImage
      extended byjavax.media.jai.RenderedImageAdapter
          extended byjavax.media.jai.WritableRenderedImageAdapter
All Implemented Interfaces:
ImageJAI, PropertyChangeEmitter, PropertySource, RenderedImage, WritablePropertySource, WritableRenderedImage

public final class WritableRenderedImageAdapter
extends RenderedImageAdapter
implements WritableRenderedImage

A PlanarImage wrapper for a WritableRenderedImage. The tile layout, sample model, and so forth are preserved. Calls to getTile() and so forth are forwarded.

From JAI's point of view, this image is a PlanarImage of unknown type, with no sources, and additionally an implementer of the WritableRenderedImage interface. The image's pixel data appear to be variable.

The class and all its methods are marked final in order to allow dynamic inlining to take place. This should eliminate any performance penalty associated with the use of an adapter class.

See Also:
PlanarImage, RenderedImageAdapter, RenderedImage, WritableRenderedImage

Field Summary
 
Fields inherited from class javax.media.jai.RenderedImageAdapter
theImage
 
Fields inherited from class javax.media.jai.PlanarImage
colorModel, eventManager, height, minX, minY, properties, sampleModel, tileFactory, tileGridXOffset, tileGridYOffset, tileHeight, tileWidth, width
 
Constructor Summary
WritableRenderedImageAdapter(WritableRenderedImage im)
          Constructs a WritableRenderedImageAdapter.
 
Method Summary
 void addTileObserver(TileObserver tileObserver)
          Adds an observer.
 WritableRaster getWritableTile(int tileX, int tileY)
          Checks out a tile for writing.
 Point[] getWritableTileIndices()
          Returns an array of Point objects indicating which tiles are checked out for writing.
 boolean hasTileWriters()
          Returns whether any tile is checked out for writing.
 boolean isTileWritable(int tileX, int tileY)
          Returns whether a tile is currently checked out for writing.
 void releaseWritableTile(int tileX, int tileY)
          Relinquishes the right to write to a tile.
 void removeTileObserver(TileObserver tileObserver)
          Removes an observer.
 void setData(Raster raster)
          Sets a rectangular region of the image to the contents of raster.
 
Methods inherited from class javax.media.jai.RenderedImageAdapter
copyData, getData, getData, getProperty, getPropertyClass, getPropertyNames, getTile, getWrappedImage
 
Methods inherited from class javax.media.jai.PlanarImage
addPropertyChangeListener, addPropertyChangeListener, addSink, addSink, addSource, addTileComputationListener, cancelTiles, copyData, copyExtendedData, createColorModel, createSnapshot, createWritableRaster, dispose, finalize, getAsBufferedImage, getAsBufferedImage, getBounds, getColorModel, getDefaultColorModel, getExtendedData, getGraphics, getHeight, getImageID, getMaxTileX, getMaxTileY, getMaxX, getMaxY, getMinTileX, getMinTileY, getMinX, getMinY, getNumBands, getNumSources, getNumXTiles, getNumYTiles, getProperties, getPropertyNames, getSampleModel, getSinks, getSource, getSourceImage, getSourceObject, getSources, getSplits, getTileComputationListeners, getTileFactory, getTileGridXOffset, getTileGridYOffset, getTileHeight, getTileIndices, getTileRect, getTiles, getTiles, getTileWidth, getWidth, overlapsMultipleTiles, prefetchTiles, queueTiles, removeProperty, removePropertyChangeListener, removePropertyChangeListener, removeSink, removeSink, removeSinks, removeSource, removeSources, removeTileComputationListener, setImageLayout, setProperties, setProperty, setSource, setSources, tileXToX, tileXToX, tileYToY, tileYToY, toString, wrapRenderedImage, XToTileX, XToTileX, YToTileY, YToTileY
 
Methods inherited from class java.lang.Object
clone, equals, getClass, hashCode, notify, notifyAll, wait, wait, wait
 
Methods inherited from interface java.awt.image.RenderedImage
copyData, getColorModel, getData, getData, getHeight, getMinTileX, getMinTileY, getMinX, getMinY, getNumXTiles, getNumYTiles, getProperty, getPropertyNames, getSampleModel, getSources, getTile, getTileGridXOffset, getTileGridYOffset, getTileHeight, getTileWidth, getWidth
 

Constructor Detail

WritableRenderedImageAdapter

public WritableRenderedImageAdapter(WritableRenderedImage im)
Constructs a WritableRenderedImageAdapter.

Parameters:
im - A WritableRenderedImage to be `wrapped' as a PlanarImage.
Throws:
IllegalArgumentException - if im is null.
Method Detail

addTileObserver

public final void addTileObserver(TileObserver tileObserver)
Adds an observer. If the observer is already present, it will receive multiple notifications.

Specified by:
addTileObserver in interface WritableRenderedImage
Parameters:
tileObserver - The TileObserver to be added.
Throws:
IllegalArgumentException - if tileObserver is null.

removeTileObserver

public final void removeTileObserver(TileObserver tileObserver)
Removes an observer. If the observer was not registered, nothing happens. If the observer was registered for multiple notifications, it will now be registered for one fewer.

Specified by:
removeTileObserver in interface WritableRenderedImage
Parameters:
tileObserver - The TileObserver to be removed.
Throws:
IllegalArgumentException - if tileObserver is null.

getWritableTile

public final WritableRaster getWritableTile(int tileX,
                                            int tileY)
Checks out a tile for writing.

The WritableRenderedImage is responsible for notifying all of its TileObservers when a tile goes from having no writers to having one writer.

Specified by:
getWritableTile in interface WritableRenderedImage
Parameters:
tileX - The X index of the tile.
tileY - The Y index of the tile.
Returns:
The tile as a WritableRaster.

releaseWritableTile

public final void releaseWritableTile(int tileX,
                                      int tileY)
Relinquishes the right to write to a tile. If the caller continues to write to the tile, the results are undefined. Calls to this method should only appear in matching pairs with calls to getWritableTile(); any other use will lead to undefined results.

The WritableRenderedImage is responsible for notifying all of its TileObservers when a tile goes from having one writer to having no writers.

Specified by:
releaseWritableTile in interface WritableRenderedImage
Parameters:
tileX - The X index of the tile.
tileY - The Y index of the tile.

isTileWritable

public final boolean isTileWritable(int tileX,
                                    int tileY)
Returns whether a tile is currently checked out for writing.

Specified by:
isTileWritable in interface WritableRenderedImage
Parameters:
tileX - The X index of the tile.
tileY - The Y index of the tile.
Returns:
true if the tile currently has writers.

getWritableTileIndices

public final Point[] getWritableTileIndices()
Returns an array of Point objects indicating which tiles are checked out for writing.

Specified by:
getWritableTileIndices in interface WritableRenderedImage
Returns:
an array of Points or null if no tiles are checked out for writing.

hasTileWriters

public final boolean hasTileWriters()
Returns whether any tile is checked out for writing. Semantically equivalent to (getWritableTiles().size() != 0).

Specified by:
hasTileWriters in interface WritableRenderedImage
Returns:
true if any tile currently has writers.

setData

public final void setData(Raster raster)
Sets a rectangular region of the image to the contents of raster.

Specified by:
setData in interface WritableRenderedImage
Parameters:
raster - A Raster.
Throws:
IllegalArgumentException - if raster is null.