A BufferedImage is a single always writable Tile.
The method that is most questionable is releaseWritableTile(int, int)
being a no-op.
It doesn't even throw an AAIOB if you pass in something other than (0,0)
It probably should have a clause
"This method is a no-op and immediately returns without checking the
passed values
since a BufferedImage has only a single tile which is always writable."
The observer methods could also benefit from doc that observers will
never be added or
removed (no-op methods) since there will never any events to dispatch.
So there's no point in adding real support for listeners.
I think the doc on isTileWritable is well-intentioned but not well-worded.
-phil
On 4/12/23 3:08 AM, Martin Desruisseaux wrote:
Hello all
BufferedImage implements WritableRenderedImage, but the javadoc of all
WritableRenderedImage methods are inconsistent with implementation:
* getWritableTile(…) said "All registered TileObservers are notified
when a tile goes from having no writers to having one writer" but
the implementation doesn't do that.
* releaseWritableTile(…) said "All registered TileObservers are
notified when a tile goes from having one writer to having no
writers" but the implementation does nothing.
* isTileWritable(…) said "throws ArrayIndexOutOfBoundsException if
both tileX and tileY are not equal to 0" but the implementation
throws IllegalArgumentException is *either* tileX or tileY is not 0.
* addTileObserver(…) and removeTileObserver(…) are no-op, but the
javadoc don't said that.
Should the javadoc be updated for saying that most methods are
actually no-op, or should the implementation be updated with real
support of listeners? Or should BufferedImage be considered as
permanently checkout out for writing, in which case the current
javadoc is not wrong (except above-cited throws clause) but a note
about the "permanently checkout-out" behavior would be helpfui?
Martin