[OpenJDK 2D-Dev] [9] Review request for 8160124 SunGraphics2D.hitClip() can give wrong result for floating point scale

Phil Race philip.race at oracle.com
Thu Jun 23 22:14:34 UTC 2016


So .. question to Alexandr :
JComponent.paintChildren() is the only place in the JDK that consumes 
this API.
Is this causing a particular problem with Swing hi-dpi - other than 
repainting in cases that maybe didn't need it ?

-phil.



On 6/23/2016 3:00 PM, Jim Graham wrote:
> Since "return true" would be a compliant implementation of 
> Graphics.hitClip(), this is not a bug...
>
> Read the documentation, it is allowed to use fast math that can return 
> true when technically the answer is false...
>
>             ...jim
>
> On 6/23/16 5:04 AM, Alexandr Scherbatiy wrote:
>>
>> Hello,
>>
>> Could you review the fix:
>>   bug: https://bugs.openjdk.java.net/browse/JDK-8160124
>>   webrev: http://cr.openjdk.java.net/~alexsch/8160124/webrev.00
>>
>>   Let's set the clip [x=5, y=5, width=5, height=5] to a graphics and 
>> call the hitClip() with the passed rectangle [x=0,
>> y=0, width=5, height=5].
>>
>>   The result is false for the graphics with scale 1 and true if the 
>> scale is floating point 1.5.
>>
>>   This is because the transformed clip which has floating point 
>> bounds [7.5, 7.5, 7.5, 7.5] for the scale 1.5 has bounds
>> with rounded down upper-left  and rounded up lower-right corners [7, 
>> 7, 8, 8] which now intersects with the transformed
>> rectangle [0, 0, 7.5, 7.5].
>>
>>   The proposed fix adds additional check for the user clip and the 
>> user rectangle intersection if the intersection with
>> the region clip passes.
>>
>>  Thanks,
>>  Alexandr.
>>
>>




More information about the 2d-dev mailing list