Hi Rajeev,
I have added 1px border to the icon in your test:
private static BufferedImage generateImage(int scale, Color c) {
int x = SZ * scale;
BufferedImage img = new BufferedImage(x, x,
BufferedImage.TYPE_INT_RGB);
Graphics g = img.getGraphics();
if (g != null) {
g.setColor(c);
g.fillRect(0, 0, x, x);
g.setColor(Color.YELLOW);
g.drawRect(0, 0, x-1, x-1);
}
return img;
}
It seems the icon in the taskbar is not correct for UI scale > 1.
By the way, graphics object should be disposed using g.dispose() when it
is not needed anymore.
--Semyon
On 14.07.2016 10:08, Rajeev Chamyal wrote:
Hello All,
Gentle reminder. Please review the updated webrev.
http://cr.openjdk.java.net/~rchamyal/8147648/webrev.02/
<http://cr.openjdk.java.net/%7Erchamyal/8147648/webrev.02/>
Update: simplified the test.
Regards,
Rajeev Chamyal
*From:*Alexandr Scherbatiy
*Sent:* 22 June 2016 15:46
*To:* Rajeev Chamyal; Sergey Bylokhov; swing-dev@openjdk.java.net
<mailto:swing-dev@openjdk.java.net>
*Subject:* Re: <Swing Dev>[9] Review Request JDK-8147648 [hidpi]
multiresolution image: wrong resolution variant is used as icon in the
Unity panel
The fix looks good to me.
Thanks,
Alexandr.
On 6/22/2016 10:49 AM, Rajeev Chamyal wrote:
Hello Alexandr,
Thanks for the review. I have updated webrev as per comments.
http://cr.openjdk.java.net/~rchamyal/8147648/webrev.01/
<http://cr.openjdk.java.net/%7Erchamyal/8147648/webrev.01/>
Regards,
Rajeev Chamyal
*From:*Alexandr Scherbatiy
*Sent:* 21 June 2016 17:37
*To:* Rajeev Chamyal; Sergey Bylokhov; swing-dev@openjdk.java.net
<mailto:swing-dev@openjdk.java.net>
*Subject:* Re: <Swing Dev>[9] Review Request JDK-8147648 [hidpi]
multiresolution image: wrong resolution variant is used as icon in
the Unity panel
On 6/21/2016 12:16 PM, Rajeev Chamyal wrote:
Hello All,
Please review the following webrev.
Webrev:
http://cr.openjdk.java.net/~rchamyal/8147648/webrev.00/
<http://cr.openjdk.java.net/%7Erchamyal/8147648/webrev.00/>
Bug: https://bugs.openjdk.java.net/browse/JDK-8147648
Issue: Wrong resolution variant is used as icon in the Unity
panel.
Cause: The screen transforms are not applied to find the
correct resolution variant image in current implementation.
Fix: Applied the screen transforms to graphics object.
222 int scaleX = (int)tx.getScaleX();
223 int scaleY = (int)tx.getScaleY();
224 DataBufferInt buffer = new DataBufferInt(scaleX *
width * scaleY * height);
The fix is in the shared code and the scale factor can have
floating point value on Windows. (for example 1.5).
It is better to round the final width and height after scaling them.
Thanks,
Alexandr.
Regards,
Rajeev Chamyal