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.