On Sat, 10 Dec 2022 23:08:48 GMT, Rajat Mahajan <d...@openjdk.org> wrote:
>> In this fix, the common code required for scaled border rendering is unified >> and added to SwingUtilities3. This is achieved by adding a functional >> interface to SwingUtilities3 and calling the the respective paintBorder >> function passed as parameter to method. >> >> Following are the usual steps for any border scaling - >> >> - Resetting transform. >> - Calculating new width, height, x & y-translations. >> - Perform the required border rendering. >> - And at the end restore the previous transform. >> >> To test the refactored code, 3 separate border scaling instances were taken >> (details below) and the SwingUtilities3.paintBorder, (containing the common >> functionality) was applied. All the tests associated with the respective >> border changes pass. >> >> 1. EtchedBorder - [PR#7449](https://github.com/openjdk/jdk/pull/7449) - >> Test: ScaledEtchedBorderTest.java >> 2. LineBorder - [PR#10681](https://github.com/openjdk/jdk/pull/10681) - >> Test: ScaledLineBorderTest & ScaledTextFieldBorderTest.java >> 3. JInternalFrame Border - >> [PR#10274](https://github.com/openjdk/jdk/pull/10274) - Test: >> InternalFrameBorderTest.java >> >> The advantage of this solution is - it avoids code repetition and can be >> reused across all the border classes requiring border scaling fix. > > src/java.desktop/share/classes/com/sun/java/swing/SwingUtilities3.java line > 174: > >> 172: >> 173: if (resetTransform) { >> 174: g2d.setTransform(new AffineTransform()); > > Can we keep the original comment about this: > /* Deactivate the HiDPI scaling transform, > * so we can do paint operations in the device > * pixel coordinate system instead of the logical coordinate > system. > */ Sure. I can add it. > src/java.desktop/share/classes/com/sun/java/swing/SwingUtilities3.java line > 190: > >> 188: >> 189: if (resetTransform) { >> 190: double xx = at.getScaleX() * x + at.getTranslateX(); > > Can we combine this code block with the above if (resetTransform) at line 173 > ? or did you keep it separate for a reason? @rajamah In-order to paint the border even when g is not a Graphics2D object I have added the `resetTransform` check here again and additionally to keep the if & else block close-by, which is easier to understand rather than having the blocks separated. ------------- PR: https://git.openjdk.org/jdk/pull/11571