[OpenJDK 2D-Dev] [8] Request for review: 8004859 Graphics.getClipBounds/getClip return difference nonequivalent bounds, depending from transform.
Sergey Bylokhov
Sergey.Bylokhov at oracle.com
Sat Dec 15 17:26:34 UTC 2012
Hi, Jim.
Could you please review the updated version of the fix:
http://cr.openjdk.java.net/~serb/8004859/webrev.01
14.12.2012 0:40, Jim Graham wrote:
> This fix breaks other behavior.
>
> You need to use setFrameFromDiagonal on the results of the transform
> because a flip or rotation can cause the transformed points to be
> unordered and setFFD will sort them as they need to be. It is the
> incoming rectangle that needs to be checked for being empty, not the
> results of the transform.
In the new version I restore coordinates relation, if it were changed
during transform.
Swap needed:
- If the user provide incorrect rectangle and after transformation we
get correct rectangle.
- If the user provide correct rectangle and after transformation we
get incorrect rectangle.
>
> The case that will fail with this fix is setting the clip to a valid
> rectangle in a coordinate system that is rotated by a multiple of 90
> degrees or is flipped horizontally or vertically. Those cases will
> result in an empty clip, but the clip was not empty coming in...
>
> ...jim
>
> On 12/13/2012 3:08 AM, Sergey Bylokhov wrote:
>> Hello,
>> Please review the fix for jdk 8.
>> Change description:
>> 1 transformShape now symmetric to untransformShape()
>> (setFrameFromDiagonal was removed).
>> 2 getClipBounds now always uses getBounds2D which does not return empty
>> Rectangle if the userclip has negative width or height.
>>
>> Note that if the userclip has negative width or height, our real graphic
>> clip will be empty/no-area. This wasn't true before the fix for the
>> scaled graphics.
>>
>> Bug: http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=8004859
>> Webrev can be found at:
>> http://cr.openjdk.java.net/~serb/8004859/webrev.00
>>
--
Best regards, Sergey.
More information about the 2d-dev
mailing list