[OpenJDK 2D-Dev] Review Request: (JDK-8048782) OpenJDK: PiscesCache : xmax/ymax rounding up can cause RasterFormatException.
philip.race at oracle.com
Fri Feb 27 23:35:47 UTC 2015
On 02/25/2015 02:27 AM, prasanta sadhukhan wrote:
> Thanks Jim,Phil for review.
> Updated webrev contains the changes -
> On 2/21/2015 2:57 AM, Jim Graham wrote:
>> Hi Prasanta,
>> 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 suggestions:
>> - 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