RFR: 8279614: The left line of the TitledBorder is not painted on 150 scale factor

Alisen Chung achung at openjdk.java.net
Mon Feb 14 17:13:38 UTC 2022


On Sat, 12 Feb 2022 01:10:49 GMT, Sergey Bylokhov <serb at openjdk.org> wrote:

>> Changed the drawing area to be increased by 0.5 on the left side to prevent clipping
>
> src/java.desktop/share/classes/javax/swing/border/TitledBorder.java line 354:
> 
>> 352:                         Graphics2D g2d = (Graphics2D) g2;
>> 353:                         Path2D path = new Path2D.Float();
>> 354:                         path.append(new Rectangle2D.Float((float) borderX, borderY, borderW, labelY - borderY), false);
> 
> Why the current coordinates do not work, is it because we calculate them in the wrong way or probably the insets are wrong?

I think there's a rounding error when doing x.5 scalings causing the drawing area to be one pixel too small on the left side

> test/jdk/java/awt/TitledBorder/TitledBorderTest.java line 51:
> 
>> 49:       saveImage(buff, "test.png");
>> 50:       throw new RuntimeException("Border was clipped or overdrawn.");
>> 51:     }
> 
> Can we draw directly to the buffered image using the scaled graphics to reproduce the bug?

Yea, the test fails before the fix, and when inspecting the saved image it looks identical to the actual frame.

-------------

PR: https://git.openjdk.java.net/jdk/pull/7449



More information about the client-libs-dev mailing list