Hi Martin,

There was no need for creating separate test case to override BufferedImage and 
see what happens but its good that we know the behaviour now.
I had already approved webrev.01 and still +1 for webrev.01.

And I think we should conclude the thread with Phil’s question about just 
returning 0 in these methods.

Thanks,
Jay

> On 25-Jun-2020, at 8:33 PM, Martin Desruisseaux 
> <martin.desruisse...@geomatys.com> wrote:
> 
> Hello
> 
> Following up on JDK-8166038 [1], in case it may help to justify the proposed 
> fix, attached is another test case demonstrating the bug. Attempt to draw a 
> BufferedImage subimage with Graphics2D causes an exception to be thrown if we 
> hide the fact that the image is a BufferedImage instance, for preventing 
> SunGraphics2D to use its special cases for BufferedImage. Stack trace is:
> 
> Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 
> BufferedImages only have one tile with index 0,0
>       at 
> java.desktop/java.awt.image.BufferedImage.getTile(BufferedImage.java:1401)
>       at SubimageDrawingTest$Wrapper.getTile(SubimageDrawingTest.java:136)
>       at 
> java.desktop/sun.java2d.SunGraphics2D.drawTranslatedRenderedImage(SunGraphics2D.java:2821)
>       at 
> java.desktop/sun.java2d.SunGraphics2D.drawRenderedImage(SunGraphics2D.java:2708)
>       at SubimageDrawingTest.main(SubimageDrawingTest.java:31)
> Replacing getTileGridXOffset() and getTileGridYOffset() return values by 0 
> (as expected and as requested by method contract) fix the bug.
> 
> This bug happens with any code that try to handle RenderedImage tiles in a 
> generic way, without making special case for BufferedImage (we have encounter 
> this issue today in Apache Spatial Information System).
> 
>     Regards,
> 
>         Martin
> 
> [1] https://bugs.openjdk.java.net/browse/JDK-8166038 
> <https://bugs.openjdk.java.net/browse/JDK-8166038>
> 
> <SubimageDrawingTest.java>

Reply via email to