On 3/16/2017 9:16 PM, Phil Race wrote:
Hi,

What I was referring to regarding "draws using G2D calls" was that paintIcon(..) looks like this


1335 Object aaHint = getAndSetAntialisingHintForScaledGraphics(g);
1336
1337             if (MetalLookAndFeel.usingOcean()) {
1338                 paintOceanIcon(c, g, x, y);
1339 setAntialiasingHintForScaledGraphics(g, aaHint);
1340                 return;
1341             }
...
..
1386                 g.setColor(dotColor);
1387                 g.fillOval(2, 2, 7, 7);          << Why does 
Graphics.fillOval (etc) need to be A-Aed here ?
   The graphics has floating point scale on HiDPI display with 150% scale.
The given oval is the center circle in the radio button. It is not painted smooth with the UI scale 1.5. I prepared the screenshot with a radio button (top is before the fix and bottom is after the fix with AA rendering hint enabled)
http://cr.openjdk.java.net/~alexsch/8176883/screenshots/00/metal-radio-button-150pcs.png

  Thanks,
  Alexandr.
1388             }
1389
1390             g.translate(-x, -y);
1391 setAntialiasingHintForScaledGraphics(g, aaHint);
1392         }

-phil.

On 03/16/2017 11:04 AM, Alexandr Scherbatiy wrote:

  Hello,

  Could you review the updated fix:
http://cr.openjdk.java.net/~alexsch/8176883/webrev.01

- The SwingUtilities2.getAndSetAntialisingHintForScaledGraphics() sets the AA rendering hint only for local display. - The SwingUtilities2.setAntialiasingHintForScaledGraphics() method javadoc is updated to mention that the null AA rendering hint means that the passed graphics is not instance of Graphics2D.

On 3/16/2017 7:47 PM, Phil Race wrote:

Hi,

It looks to me as if this applies AA rendering even when you
are drawing using G2D calls. Why ?
I updated the methods javadoc. The passed aaHint to the method setAntialiasingHintForScaledGraphics() must be null for the non Graphics2D.

Also this clearly only helps Metal. Is that because only Metal has such problems ?
I would doubt that.

FWIW Motif L&F probably should not get this treatment.
   The The Windows L&F already uses the AA hints by the fix JDK-8165594.
   The GTK L&F uses only integer UI scale factor.
Also if the desktop is "remote" we should avoid AA. I believe we do that
for text with Metal so there should be example of how to detect that
somewhere.
  I updated the fix.

  Thanks,
  Alexandr.

-phil.

On 03/16/2017 09:03 AM, Alexandr Scherbatiy wrote:

Hello,

Could you review the fix:
  bug: https://bugs.openjdk.java.net/browse/JDK-8176883
  webrev: http://cr.openjdk.java.net/~alexsch/8176883/webrev.00

Metal RadioButton and RadioButtonMenuItem icons are not drawn smoothly on HiDPI displays especially with floating point scales like 1.25 and 1.5. The fix enables the antialiasing rendering hint for the radio button and radio button menu item if the passed graphics is scaled.

The [1] folder contains screenshots how icons are drawn before the fix (on the left side) and after the fix (on the right side).

  [1] http://cr.openjdk.java.net/~alexsch/8176883/screenshots/00

Thanks,
Alexandr.





Reply via email to