[OpenJDK 2D-Dev] Review Request: (JDK-8048782) OpenJDK: PiscesCache : xmax/ymax rounding up can cause RasterFormatException.
james.graham at oracle.com
Fri Feb 20 21:27:49 UTC 2015
This fixes the symptom without fixing the underlying issue which is that
there is poor sharing of information between the objects in the Pisces
package. The cache adds 1 to bboxX1 and bboxY1 for its own internal
purposes - and it seems extremely questionable that it should do so as
reading through the code it isn't clear that it should - and then
another object grabs its bbox data, making assumptions about how those
fields are managed, and gets it wrong. Filtering the answer for
"rightness" does not fix the underlying problem of how PTG gets its
data. I'd recommend a solution that brings us closer to having the code
make sense, though we should look for a minimal solution since Marlin
may patch much of this code when that project gets integrated. Some
- Add PiscesCache.getBBox() which does the proper "- 1"s
- Adjust PiscesCache to not need to add one. This is probably the best
overall solution since it gets rid of "voodoo" code in PiscesCaceh, but
it would require a lot more testing. This could get risky, so the first
solution above, though it might add more code, is probably better for
now. Note that in PiscesCache, allocating the rowAARLE array already
adds one to the number of rows allocated which seems odd because now we
allocate 2 additional rows due to the bbox+1 adjustment. Also, bboxX1
is never even used so adding 1 to it just seems pointless other than to
confuse code that reads the values.
On 2/19/2015 8:39 PM, prasanta sadhukhan wrote:
> I would like a review for a solution of this bug.
> In OpenJDK9, "java.awt.image.RasterFormatException: (x + width) is
> outside raster" is thrown when the bounding box width outgrows original
> raster. This is because PiscesRenderingEngine does not take care of
> clipping the bounding box correctly.
> webrev: http://cr.openjdk.java.net/~serb/prasanta/8048782/webrev.00
More information about the 2d-dev