RFR: JDK-8015739: Background of JInternalFrame is located out of JInternalFrame [v9]

Harshitha Onkar honkar at openjdk.org
Sat Oct 8 15:37:18 UTC 2022


On Fri, 7 Oct 2022 21:43:44 GMT, Sergey Bylokhov <serb at openjdk.org> wrote:

>> Harshitha Onkar has updated the pull request incrementally with one additional commit since the last revision:
>> 
>>   fix for pixel color at edge, outermost border lines drawn as part of bulk of border
>
> src/java.desktop/share/classes/javax/swing/plaf/metal/MetalBorders.java line 277:
> 
>> 275:             resetTransform = (at.getShearX() == 0) && (at.getShearY() == 0);
>> 276: 
>> 277:             if (resetTransform) {
> 
> Please clarify why we should reset the current transform? How it will work if the user sets a transform and render this to the BufferedImage.

On fractional scaling, painting of lines and borders have issues (lines seem to be separated or look uneven) as shown above, https://github.com/openjdk/jdk/pull/10274#issue-1373421530. In order to paint them uniformly and next to each other, the idea is to render at 1x scaling, apply the required thickness/scaling to the lines at this point (when transform is reset) and then the original (old) transform is restored at the end. 

This idea was referenced from a similar issue https://github.com/openjdk/jdk/pull/7449#issuecomment-1068218648.

> src/java.desktop/share/classes/javax/swing/plaf/metal/MetalBorders.java line 292:
> 
>> 290:                 height = Region.clipRound(at.getScaleY() * h);
>> 291:                 xtranslation = Region.clipRound(at.getScaleX() * x + at.getTranslateX());
>> 292:                 ytranslation = Region.clipRound(at.getScaleY() * y + at.getTranslateY());
> 
> This probably should be refactored to something like this:
> https://github.com/openjdk/jdk/blob/ec4fb47b90c9737dfdc285ebe98367a221c90c79/src/java.desktop/share/classes/sun/java2d/SunGraphics2D.java#L375

@mrserb Thank for the suggestion. Are you suggesting that same transformations be applied for width, height and additionally to x&y translations? 
https://github.com/openjdk/jdk/blob/ec4fb47b90c9737dfdc285ebe98367a221c90c79/src/java.desktop/share/classes/sun/java2d/SunGraphics2D.java#L373

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

PR: https://git.openjdk.org/jdk/pull/10274



More information about the client-libs-dev mailing list