Re: [9] Review Request JDK-8147648 [hidpi] multiresolution image: wrong resolution variant is used as icon in the Unity panel

2016-07-25 Thread Alexandr Scherbatiy

The fix looks good to me.

Thanks,
Alexandr.

On 7/22/2016 12:14 PM, Rajeev Chamyal wrote:


Hello Semyon,

Your suggestion regarding _NET_WM_ICON requires some investigation and 
can be implemented as separate bug.


Could you please review the webrev.

http://cr.openjdk.java.net/~rchamyal/8147648/webrev.03/ 



Regards,

Rajeev Chamyal

*From:*Alexandr Scherbatiy
*Sent:* 21 July 2016 20:42
*To:* Rajeev Chamyal; Semyon Sadetsky; swing-dev@openjdk.java.net; 
Sergey Bylokhov
*Subject:* Re: [9] Review Request JDK-8147648 [hidpi] 
multiresolution image: wrong resolution variant is used as icon in the 
Unity panel


On 7/21/2016 5:25 PM, Rajeev Chamyal wrote:

Hello Semyon,

The resolution variant image returned is based on the
implementation of BaseMultiResolutionImage::getResolutionVariant API.

Current implementation of
BaseMultiResolutionImage::getResolutionVariant returns a
resolution variant image which has width and height greater than
or equal to the passed width and height.

  There is a known issue on it:
JDK-8148619 Select the closest resolution variant in 
BaseMultiResolutionImage

https://bugs.openjdk.java.net/browse/JDK-8148619

  Thanks,
  Alexandr.

In the case you have suggested dimensions of RED and BLUE images
are 32 and  80 respectively.

Width and height passed to getResolutionVariant is 64  i.e. scaled
width and height of base image(RED) (GDK_SCALE=2) and blue image
is getting returned.

The width and height passed to this  API is that of base image not
of the spot.

Applications can control this behaviour by overriding this API in
derived classes.

Regards,

Rajeev Chamyal

*From:*Alexandr Scherbatiy
*Sent:* 21 July 2016 15:09
*To:* Semyon Sadetsky; Rajeev Chamyal; swing-dev@openjdk.java.net
; Sergey Bylokhov
*Subject:* Re: [9] Review Request JDK-8147648 [hidpi]
multiresolution image: wrong resolution variant is used as icon in
the Unity panel

On 7/21/2016 11:49 AM, Semyon Sadetsky wrote:


Hello Rajeev,

The taskbar icon is ok now.

I change the resolution variants from the test a bit:

final BaseMultiResolutionImage IMG = new
BaseMultiResolutionImage(
new BufferedImage[]{generateImage(4,
Color.RED), generateImage(10, Color.BLUE)});

And the icon I see in the taskbar and in the button is blue.
It seems to me the first resolution variant (red) is more
appropriate in this case because its size is closer to the
spot. I'm not sure if this is an issue.

I have an extra question to you and Alexander.
Most native apps on Linux set an array of icons with
_NET_WM_ICON. Usually they are [16x16, 32x32, 64x64].
So, desktop environment may select icon of appropriate size.
In this fix we are preselecting icon of a specific size in the
app and send it to WM.
Why not to send array of the resolution variants images and
let the desktop environment to select the appropriate one,
like native apps do?

  This sounds as good idea. MultiResolutionImage has the special
method for this "List getResolutionVariants()". We do the
similar on Mac OS X where NSImage with several representations is
created from a MultiResolutionImage:

http://cr.openjdk.java.net/~alexsch/8028212/webrev.01/src/macosx/classes/sun/lwawt/macosx/CImage.java.udiff.html



 It has sense to try the same approach on Linux.

  Thanks,
  Alexandr.




--Semyon

On 19.07.2016 23:26, Rajeev Chamyal wrote:

Hello Semyon,

Please review the updated webrev.

http://cr.openjdk.java.net/~rchamyal/8147648/webrev.03/


Regards,

Rajeev Chamyal

*From:*Semyon Sadetsky
*Sent:* 14 July 2016 16:58
*To:* Rajeev Chamyal; swing-dev@openjdk.java.net
; Sergey Bylokhov;
Alexander Scherbatiy
*Subject:* Re: [9] Review Request JDK-8147648
[hidpi] multiresolution image: wrong resolution variant is
used as icon in the Unity panel

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) {
  

Re: [9] Review Request JDK-8147648 [hidpi] multiresolution image: wrong resolution variant is used as icon in the Unity panel

2016-07-22 Thread Rajeev Chamyal
Linked to 8147648, added prefix Hidpi.

 

Regards,

Rajeev Chamyal

 

From: Semyon Sadetsky 
Sent: 22 July 2016 15:51
To: Rajeev Chamyal; Alexander Scherbatiy; swing-dev@openjdk.java.net; Sergey 
Bylokhov
Subject: Re: [9] Review Request JDK-8147648 [hidpi] multiresolution 
image: wrong resolution variant is used as icon in the Unity panel

 

On 7/22/2016 1:04 PM, Rajeev Chamyal wrote:

Hello Semyon,

 

Below is the bug id.

https://bugs.openjdk.java.net/browse/JDK-8162387

Please add [hidpi] prefix to the title. Also link it to the JDK-8147648.

--Semyon



 

Regards,

Rajeev Chamyal

 

From: Semyon Sadetsky 
Sent: 22 July 2016 15:21
To: Rajeev Chamyal; Alexander Scherbatiy; HYPERLINK 
"mailto:swing-dev@openjdk.java.net"swing-dev@openjdk.java.net; Sergey Bylokhov
Subject: Re: [9] Review Request JDK-8147648 [hidpi] multiresolution 
image: wrong resolution variant is used as icon in the Unity panel

 

On 7/22/2016 12:14 PM, Rajeev Chamyal wrote:

Hello Semyon,

 

Your suggestion regarding _NET_WM_ICON requires some investigation and can be 
implemented as separate bug.

Ok. Please create this bug.

--Semyon




Could you please review the webrev.

HYPERLINK 
"http://cr.openjdk.java.net/%7Erchamyal/8147648/webrev.03/"http://cr.openjdk.java.net/~rchamyal/8147648/webrev.03/

Regards,

Rajeev Chamyal

 

From: Alexandr Scherbatiy 
Sent: 21 July 2016 20:42
To: Rajeev Chamyal; Semyon Sadetsky; HYPERLINK 
"mailto:swing-dev@openjdk.java.net"swing-dev@openjdk.java.net; Sergey Bylokhov
Subject: Re: [9] Review Request JDK-8147648 [hidpi] multiresolution 
image: wrong resolution variant is used as icon in the Unity panel

 

On 7/21/2016 5:25 PM, Rajeev Chamyal wrote:





Hello Semyon,

 

The resolution variant image returned is based on the implementation of 
BaseMultiResolutionImage::getResolutionVariant API.

Current implementation of BaseMultiResolutionImage::getResolutionVariant 
returns a resolution variant image which has width and height greater than or 
equal to the passed width and height.

  There is a known issue on it:
JDK-8148619 Select the closest resolution variant in 
BaseMultiResolutionImage
  https://bugs.openjdk.java.net/browse/JDK-8148619

  Thanks,
  Alexandr.





In the case you have suggested dimensions of RED and BLUE images are 32 and  80 
respectively.

Width and height passed to getResolutionVariant is 64  i.e. scaled width and 
height of base image(RED) (GDK_SCALE=2) and blue image is getting returned.

The width and height passed to this  API is that of base image not of the spot.

Applications can control this behaviour by overriding this API in derived 
classes.

 

Regards,

Rajeev Chamyal 

 

From: Alexandr Scherbatiy 
Sent: 21 July 2016 15:09
To: Semyon Sadetsky; Rajeev Chamyal; HYPERLINK 
"mailto:swing-dev@openjdk.java.net"swing-dev@openjdk.java.net; Sergey Bylokhov
Subject: Re: [9] Review Request JDK-8147648 [hidpi] multiresolution 
image: wrong resolution variant is used as icon in the Unity panel

 

On 7/21/2016 11:49 AM, Semyon Sadetsky wrote:






Hello Rajeev,

The taskbar icon is ok now.

I change the resolution variants from the test a bit:

final BaseMultiResolutionImage IMG = new 
BaseMultiResolutionImage(
new BufferedImage[]{generateImage(4, Color.RED), 
generateImage(10, Color.BLUE)});

And the icon I see in the taskbar and in the button is blue. It seems to me the 
first resolution variant (red) is more appropriate in this case because its 
size is closer to the spot. I'm not sure if this is an issue.

I have an extra question to you and Alexander.
Most native apps on Linux set an array of icons with _NET_WM_ICON. Usually they 
are [16x16, 32x32, 64x64].
So, desktop environment may select icon of appropriate size.
In this fix we are preselecting icon of a specific size in the app and send it 
to WM. 
Why not to send array of the resolution variants images and let the desktop 
environment to select the appropriate one, like native apps do?

  This sounds as good idea. MultiResolutionImage has the special method for 
this "List getResolutionVariants()". We do the similar on Mac OS X where 
NSImage with several representations is created from a MultiResolutionImage:
HYPERLINK 
"http://cr.openjdk.java.net/%7Ealexsch/8028212/webrev.01/src/macosx/classes/sun/lwawt/macosx/CImage.java.udiff.html"http://cr.openjdk.java.net/~alexsch/8028212/webrev.01/src/macosx/classes/sun/lwawt/macosx/CImage.java.udiff.html

 It has sense to try the same approach on Linux.

  Thanks,
  Alexandr.








--Semyon

On 19.07.2016 23:26, Rajeev Chamyal wrote:

Hello Semyon,

 

Please review the updated webrev.

HYPERLINK 
"http://cr.openjdk.java.net/%7Erchamyal/8147648/webrev.03/"http://cr.openjdk.java.net/~rchamyal/8147648/webrev.03/

 

Regards,

Rajeev Chamyal

 

From: Semyon Sadetsky 
Sent: 14 July 2016 16:58
To: Rajeev Chamyal; HYPERLINK 
"mailto:swing-dev@openjdk.java.net"swing-dev@openjdk.java.net; Sergey Bylokhov; 
Alexander 

Re: [9] Review Request JDK-8147648 [hidpi] multiresolution image: wrong resolution variant is used as icon in the Unity panel

2016-07-22 Thread Semyon Sadetsky

On 7/22/2016 1:04 PM, Rajeev Chamyal wrote:


Hello Semyon,

Below is the bug id.

https://bugs.openjdk.java.net/browse/JDK-8162387


Please add [hidpi] prefix to the title. Also link it to the JDK-8147648.

--Semyon


Regards,

Rajeev Chamyal

*From:*Semyon Sadetsky
*Sent:* 22 July 2016 15:21
*To:* Rajeev Chamyal; Alexander Scherbatiy; 
swing-dev@openjdk.java.net; Sergey Bylokhov
*Subject:* Re: [9] Review Request JDK-8147648 [hidpi] 
multiresolution image: wrong resolution variant is used as icon in the 
Unity panel


On 7/22/2016 12:14 PM, Rajeev Chamyal wrote:

Hello Semyon,

Your suggestion regarding _NET_WM_ICON requires some investigation
and can be implemented as separate bug.

Ok. Please create this bug.

--Semyon

Could you please review the webrev.

http://cr.openjdk.java.net/~rchamyal/8147648/webrev.03/


Regards,

Rajeev Chamyal

*From:*Alexandr Scherbatiy
*Sent:* 21 July 2016 20:42
*To:* Rajeev Chamyal; Semyon Sadetsky; swing-dev@openjdk.java.net
; Sergey Bylokhov
*Subject:* Re: [9] Review Request JDK-8147648 [hidpi]
multiresolution image: wrong resolution variant is used as icon in
the Unity panel

On 7/21/2016 5:25 PM, Rajeev Chamyal wrote:


Hello Semyon,

The resolution variant image returned is based on the
implementation of
BaseMultiResolutionImage::getResolutionVariant API.

Current implementation of
BaseMultiResolutionImage::getResolutionVariant returns a
resolution variant image which has width and height greater
than or equal to the passed width and height.

  There is a known issue on it:
JDK-8148619 Select the closest resolution variant in
BaseMultiResolutionImage
https://bugs.openjdk.java.net/browse/JDK-8148619

  Thanks,
  Alexandr.


In the case you have suggested dimensions of RED and BLUE
images are 32 and  80 respectively.

Width and height passed to getResolutionVariant is 64  i.e.
scaled width and height of base image(RED) (GDK_SCALE=2) and
blue image is getting returned.

The width and height passed to this  API is that of base image
not of the spot.

Applications can control this behaviour by overriding this API
in derived classes.

Regards,

Rajeev Chamyal

*From:*Alexandr Scherbatiy
*Sent:* 21 July 2016 15:09
*To:* Semyon Sadetsky; Rajeev Chamyal;
swing-dev@openjdk.java.net
; Sergey Bylokhov
*Subject:* Re: [9] Review Request JDK-8147648
[hidpi] multiresolution image: wrong resolution variant is
used as icon in the Unity panel

On 7/21/2016 11:49 AM, Semyon Sadetsky wrote:



Hello Rajeev,

The taskbar icon is ok now.

I change the resolution variants from the test a bit:

final BaseMultiResolutionImage IMG = new
BaseMultiResolutionImage(
new
BufferedImage[]{generateImage(4, Color.RED),
generateImage(10, Color.BLUE)});

And the icon I see in the taskbar and in the button is
blue. It seems to me the first resolution variant (red) is
more appropriate in this case because its size is closer
to the spot. I'm not sure if this is an issue.

I have an extra question to you and Alexander.
Most native apps on Linux set an array of icons with
_NET_WM_ICON. Usually they are [16x16, 32x32, 64x64].
So, desktop environment may select icon of appropriate size.
In this fix we are preselecting icon of a specific size in
the app and send it to WM.
Why not to send array of the resolution variants images
and let the desktop environment to select the appropriate
one, like native apps do?

  This sounds as good idea. MultiResolutionImage has the
special method for this "List getResolutionVariants()".
We do the similar on Mac OS X where NSImage with several
representations is created from a MultiResolutionImage:

http://cr.openjdk.java.net/~alexsch/8028212/webrev.01/src/macosx/classes/sun/lwawt/macosx/CImage.java.udiff.html



 It has sense to try the same approach on Linux.

  Thanks,
  Alexandr.





--Semyon

On 19.07.2016 23:26, Rajeev Chamyal wrote:

Hello Semyon,

Please review the updated webrev.

http://cr.openjdk.java.net/~rchamyal/8147648/webrev.03/

Re: [9] Review Request JDK-8147648 [hidpi] multiresolution image: wrong resolution variant is used as icon in the Unity panel

2016-07-22 Thread Rajeev Chamyal
Hello Semyon,

 

Below is the bug id.

https://bugs.openjdk.java.net/browse/JDK-8162387

 

Regards,

Rajeev Chamyal

 

From: Semyon Sadetsky 
Sent: 22 July 2016 15:21
To: Rajeev Chamyal; Alexander Scherbatiy; swing-dev@openjdk.java.net; Sergey 
Bylokhov
Subject: Re: [9] Review Request JDK-8147648 [hidpi] multiresolution 
image: wrong resolution variant is used as icon in the Unity panel

 

On 7/22/2016 12:14 PM, Rajeev Chamyal wrote:

Hello Semyon,

 

Your suggestion regarding _NET_WM_ICON requires some investigation and can be 
implemented as separate bug.

Ok. Please create this bug.

--Semyon



Could you please review the webrev.

HYPERLINK 
"http://cr.openjdk.java.net/%7Erchamyal/8147648/webrev.03/"http://cr.openjdk.java.net/~rchamyal/8147648/webrev.03/

Regards,

Rajeev Chamyal

 

From: Alexandr Scherbatiy 
Sent: 21 July 2016 20:42
To: Rajeev Chamyal; Semyon Sadetsky; HYPERLINK 
"mailto:swing-dev@openjdk.java.net"swing-dev@openjdk.java.net; Sergey Bylokhov
Subject: Re: [9] Review Request JDK-8147648 [hidpi] multiresolution 
image: wrong resolution variant is used as icon in the Unity panel

 

On 7/21/2016 5:25 PM, Rajeev Chamyal wrote:




Hello Semyon,

 

The resolution variant image returned is based on the implementation of 
BaseMultiResolutionImage::getResolutionVariant API.

Current implementation of BaseMultiResolutionImage::getResolutionVariant 
returns a resolution variant image which has width and height greater than or 
equal to the passed width and height.

  There is a known issue on it:
JDK-8148619 Select the closest resolution variant in 
BaseMultiResolutionImage
  https://bugs.openjdk.java.net/browse/JDK-8148619

  Thanks,
  Alexandr.




In the case you have suggested dimensions of RED and BLUE images are 32 and  80 
respectively.

Width and height passed to getResolutionVariant is 64  i.e. scaled width and 
height of base image(RED) (GDK_SCALE=2) and blue image is getting returned.

The width and height passed to this  API is that of base image not of the spot.

Applications can control this behaviour by overriding this API in derived 
classes.

 

Regards,

Rajeev Chamyal 

 

From: Alexandr Scherbatiy 
Sent: 21 July 2016 15:09
To: Semyon Sadetsky; Rajeev Chamyal; HYPERLINK 
"mailto:swing-dev@openjdk.java.net"swing-dev@openjdk.java.net; Sergey Bylokhov
Subject: Re: [9] Review Request JDK-8147648 [hidpi] multiresolution 
image: wrong resolution variant is used as icon in the Unity panel

 

On 7/21/2016 11:49 AM, Semyon Sadetsky wrote:





Hello Rajeev,

The taskbar icon is ok now.

I change the resolution variants from the test a bit:

final BaseMultiResolutionImage IMG = new 
BaseMultiResolutionImage(
new BufferedImage[]{generateImage(4, Color.RED), 
generateImage(10, Color.BLUE)});

And the icon I see in the taskbar and in the button is blue. It seems to me the 
first resolution variant (red) is more appropriate in this case because its 
size is closer to the spot. I'm not sure if this is an issue.

I have an extra question to you and Alexander.
Most native apps on Linux set an array of icons with _NET_WM_ICON. Usually they 
are [16x16, 32x32, 64x64].
So, desktop environment may select icon of appropriate size.
In this fix we are preselecting icon of a specific size in the app and send it 
to WM. 
Why not to send array of the resolution variants images and let the desktop 
environment to select the appropriate one, like native apps do?

  This sounds as good idea. MultiResolutionImage has the special method for 
this "List getResolutionVariants()". We do the similar on Mac OS X where 
NSImage with several representations is created from a MultiResolutionImage:
HYPERLINK 
"http://cr.openjdk.java.net/%7Ealexsch/8028212/webrev.01/src/macosx/classes/sun/lwawt/macosx/CImage.java.udiff.html"http://cr.openjdk.java.net/~alexsch/8028212/webrev.01/src/macosx/classes/sun/lwawt/macosx/CImage.java.udiff.html

 It has sense to try the same approach on Linux.

  Thanks,
  Alexandr.







--Semyon

On 19.07.2016 23:26, Rajeev Chamyal wrote:

Hello Semyon,

 

Please review the updated webrev.

HYPERLINK 
"http://cr.openjdk.java.net/%7Erchamyal/8147648/webrev.03/"http://cr.openjdk.java.net/~rchamyal/8147648/webrev.03/

 

Regards,

Rajeev Chamyal

 

From: Semyon Sadetsky 
Sent: 14 July 2016 16:58
To: Rajeev Chamyal; HYPERLINK 
"mailto:swing-dev@openjdk.java.net"swing-dev@openjdk.java.net; Sergey Bylokhov; 
Alexander Scherbatiy
Subject: Re: [9] Review Request JDK-8147648 [hidpi] multiresolution 
image: wrong resolution variant is used as icon in the Unity panel

 

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);
 

Re: [9] Review Request JDK-8147648 [hidpi] multiresolution image: wrong resolution variant is used as icon in the Unity panel

2016-07-22 Thread Semyon Sadetsky

On 7/22/2016 12:14 PM, Rajeev Chamyal wrote:


Hello Semyon,

Your suggestion regarding _NET_WM_ICON requires some investigation and 
can be implemented as separate bug.



Ok. Please create this bug.

--Semyon


Could you please review the webrev.

http://cr.openjdk.java.net/~rchamyal/8147648/webrev.03/ 



Regards,

Rajeev Chamyal

*From:*Alexandr Scherbatiy
*Sent:* 21 July 2016 20:42
*To:* Rajeev Chamyal; Semyon Sadetsky; swing-dev@openjdk.java.net; 
Sergey Bylokhov
*Subject:* Re: [9] Review Request JDK-8147648 [hidpi] 
multiresolution image: wrong resolution variant is used as icon in the 
Unity panel


On 7/21/2016 5:25 PM, Rajeev Chamyal wrote:

Hello Semyon,

The resolution variant image returned is based on the
implementation of BaseMultiResolutionImage::getResolutionVariant API.

Current implementation of
BaseMultiResolutionImage::getResolutionVariant returns a
resolution variant image which has width and height greater than
or equal to the passed width and height.

  There is a known issue on it:
JDK-8148619 Select the closest resolution variant in 
BaseMultiResolutionImage

https://bugs.openjdk.java.net/browse/JDK-8148619

  Thanks,
  Alexandr.

In the case you have suggested dimensions of RED and BLUE images
are 32 and  80 respectively.

Width and height passed to getResolutionVariant is 64  i.e. scaled
width and height of base image(RED) (GDK_SCALE=2) and blue image
is getting returned.

The width and height passed to this  API is that of base image not
of the spot.

Applications can control this behaviour by overriding this API in
derived classes.

Regards,

Rajeev Chamyal

*From:*Alexandr Scherbatiy
*Sent:* 21 July 2016 15:09
*To:* Semyon Sadetsky; Rajeev Chamyal; swing-dev@openjdk.java.net
; Sergey Bylokhov
*Subject:* Re: [9] Review Request JDK-8147648 [hidpi]
multiresolution image: wrong resolution variant is used as icon in
the Unity panel

On 7/21/2016 11:49 AM, Semyon Sadetsky wrote:


Hello Rajeev,

The taskbar icon is ok now.

I change the resolution variants from the test a bit:

final BaseMultiResolutionImage IMG = new
BaseMultiResolutionImage(
new BufferedImage[]{generateImage(4,
Color.RED), generateImage(10, Color.BLUE)});

And the icon I see in the taskbar and in the button is blue.
It seems to me the first resolution variant (red) is more
appropriate in this case because its size is closer to the
spot. I'm not sure if this is an issue.

I have an extra question to you and Alexander.
Most native apps on Linux set an array of icons with
_NET_WM_ICON. Usually they are [16x16, 32x32, 64x64].
So, desktop environment may select icon of appropriate size.
In this fix we are preselecting icon of a specific size in the
app and send it to WM.
Why not to send array of the resolution variants images and
let the desktop environment to select the appropriate one,
like native apps do?

  This sounds as good idea. MultiResolutionImage has the special
method for this "List getResolutionVariants()". We do the
similar on Mac OS X where NSImage with several representations is
created from a MultiResolutionImage:

http://cr.openjdk.java.net/~alexsch/8028212/webrev.01/src/macosx/classes/sun/lwawt/macosx/CImage.java.udiff.html



 It has sense to try the same approach on Linux.

  Thanks,
  Alexandr.




--Semyon

On 19.07.2016 23:26, Rajeev Chamyal wrote:

Hello Semyon,

Please review the updated webrev.

http://cr.openjdk.java.net/~rchamyal/8147648/webrev.03/


Regards,

Rajeev Chamyal

*From:*Semyon Sadetsky
*Sent:* 14 July 2016 16:58
*To:* Rajeev Chamyal; swing-dev@openjdk.java.net
; Sergey Bylokhov;
Alexander Scherbatiy
*Subject:* Re: [9] Review Request JDK-8147648
[hidpi] multiresolution image: wrong resolution variant is
used as icon in the Unity panel

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) {
   

Re: [9] Review Request JDK-8147648 [hidpi] multiresolution image: wrong resolution variant is used as icon in the Unity panel

2016-07-22 Thread Rajeev Chamyal
Hello Semyon,

 

Your suggestion regarding _NET_WM_ICON requires some investigation and can be 
implemented as separate bug.

Could you please review the webrev.

HYPERLINK 
"http://cr.openjdk.java.net/%7Erchamyal/8147648/webrev.03/"http://cr.openjdk.java.net/~rchamyal/8147648/webrev.03/

Regards,

Rajeev Chamyal

 

From: Alexandr Scherbatiy 
Sent: 21 July 2016 20:42
To: Rajeev Chamyal; Semyon Sadetsky; swing-dev@openjdk.java.net; Sergey Bylokhov
Subject: Re: [9] Review Request JDK-8147648 [hidpi] multiresolution 
image: wrong resolution variant is used as icon in the Unity panel

 

On 7/21/2016 5:25 PM, Rajeev Chamyal wrote:



Hello Semyon,

 

The resolution variant image returned is based on the implementation of 
BaseMultiResolutionImage::getResolutionVariant API.

Current implementation of BaseMultiResolutionImage::getResolutionVariant 
returns a resolution variant image which has width and height greater than or 
equal to the passed width and height.

  There is a known issue on it:
JDK-8148619 Select the closest resolution variant in 
BaseMultiResolutionImage
  https://bugs.openjdk.java.net/browse/JDK-8148619

  Thanks,
  Alexandr.



In the case you have suggested dimensions of RED and BLUE images are 32 and  80 
respectively.

Width and height passed to getResolutionVariant is 64  i.e. scaled width and 
height of base image(RED) (GDK_SCALE=2) and blue image is getting returned.

The width and height passed to this  API is that of base image not of the spot.

Applications can control this behaviour by overriding this API in derived 
classes.

 

Regards,

Rajeev Chamyal 

 

From: Alexandr Scherbatiy 
Sent: 21 July 2016 15:09
To: Semyon Sadetsky; Rajeev Chamyal; HYPERLINK 
"mailto:swing-dev@openjdk.java.net"swing-dev@openjdk.java.net; Sergey Bylokhov
Subject: Re: [9] Review Request JDK-8147648 [hidpi] multiresolution 
image: wrong resolution variant is used as icon in the Unity panel

 

On 7/21/2016 11:49 AM, Semyon Sadetsky wrote:




Hello Rajeev,

The taskbar icon is ok now.

I change the resolution variants from the test a bit:

final BaseMultiResolutionImage IMG = new 
BaseMultiResolutionImage(
new BufferedImage[]{generateImage(4, Color.RED), 
generateImage(10, Color.BLUE)});

And the icon I see in the taskbar and in the button is blue. It seems to me the 
first resolution variant (red) is more appropriate in this case because its 
size is closer to the spot. I'm not sure if this is an issue.

I have an extra question to you and Alexander.
Most native apps on Linux set an array of icons with _NET_WM_ICON. Usually they 
are [16x16, 32x32, 64x64].
So, desktop environment may select icon of appropriate size.
In this fix we are preselecting icon of a specific size in the app and send it 
to WM. 
Why not to send array of the resolution variants images and let the desktop 
environment to select the appropriate one, like native apps do?

  This sounds as good idea. MultiResolutionImage has the special method for 
this "List getResolutionVariants()". We do the similar on Mac OS X where 
NSImage with several representations is created from a MultiResolutionImage:
HYPERLINK 
"http://cr.openjdk.java.net/%7Ealexsch/8028212/webrev.01/src/macosx/classes/sun/lwawt/macosx/CImage.java.udiff.html"http://cr.openjdk.java.net/~alexsch/8028212/webrev.01/src/macosx/classes/sun/lwawt/macosx/CImage.java.udiff.html

 It has sense to try the same approach on Linux.

  Thanks,
  Alexandr.






--Semyon

On 19.07.2016 23:26, Rajeev Chamyal wrote:

Hello Semyon,

 

Please review the updated webrev.

HYPERLINK 
"http://cr.openjdk.java.net/%7Erchamyal/8147648/webrev.03/"http://cr.openjdk.java.net/~rchamyal/8147648/webrev.03/

 

Regards,

Rajeev Chamyal

 

From: Semyon Sadetsky 
Sent: 14 July 2016 16:58
To: Rajeev Chamyal; HYPERLINK 
"mailto:swing-dev@openjdk.java.net"swing-dev@openjdk.java.net; Sergey Bylokhov; 
Alexander Scherbatiy
Subject: Re: [9] Review Request JDK-8147648 [hidpi] multiresolution 
image: wrong resolution variant is used as icon in the Unity panel

 

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.

HYPERLINK 
"http://cr.openjdk.java.net/%7Erchamyal/8147648/webrev.02/"http://cr.openjdk.java.net/~rchamyal/8147648/webrev.02/

 

Update: 

Re: [9] Review Request JDK-8147648 [hidpi] multiresolution image: wrong resolution variant is used as icon in the Unity panel

2016-07-21 Thread Alexandr Scherbatiy

On 7/21/2016 5:25 PM, Rajeev Chamyal wrote:


Hello Semyon,

The resolution variant image returned is based on the implementation 
of BaseMultiResolutionImage::getResolutionVariant API.


Current implementation of 
BaseMultiResolutionImage::getResolutionVariant returns a resolution 
variant image which has width and height greater than or equal to the 
passed width and height.



  There is a known issue on it:
JDK-8148619 Select the closest resolution variant in 
BaseMultiResolutionImage

  https://bugs.openjdk.java.net/browse/JDK-8148619

  Thanks,
  Alexandr.


In the case you have suggested dimensions of RED and BLUE images are 
32 and  80 respectively.


Width and height passed to getResolutionVariant is 64  i.e. scaled 
width and height of base image(RED) (GDK_SCALE=2) and blue image is 
getting returned.


The width and height passed to this  API is that of base image not of 
the spot.


Applications can control this behaviour by overriding this API in 
derived classes.


Regards,

Rajeev Chamyal

*From:*Alexandr Scherbatiy
*Sent:* 21 July 2016 15:09
*To:* Semyon Sadetsky; Rajeev Chamyal; swing-dev@openjdk.java.net; 
Sergey Bylokhov
*Subject:* Re: [9] Review Request JDK-8147648 [hidpi] 
multiresolution image: wrong resolution variant is used as icon in the 
Unity panel


On 7/21/2016 11:49 AM, Semyon Sadetsky wrote:

Hello Rajeev,

The taskbar icon is ok now.

I change the resolution variants from the test a bit:

final BaseMultiResolutionImage IMG = new
BaseMultiResolutionImage(
new BufferedImage[]{generateImage(4,
Color.RED), generateImage(10, Color.BLUE)});

And the icon I see in the taskbar and in the button is blue. It
seems to me the first resolution variant (red) is more appropriate
in this case because its size is closer to the spot. I'm not sure
if this is an issue.

I have an extra question to you and Alexander.
Most native apps on Linux set an array of icons with _NET_WM_ICON.
Usually they are [16x16, 32x32, 64x64].
So, desktop environment may select icon of appropriate size.
In this fix we are preselecting icon of a specific size in the app
and send it to WM.
Why not to send array of the resolution variants images and let
the desktop environment to select the appropriate one, like native
apps do?

  This sounds as good idea. MultiResolutionImage has the special 
method for this "List getResolutionVariants()". We do the 
similar on Mac OS X where NSImage with several representations is 
created from a MultiResolutionImage:
http://cr.openjdk.java.net/~alexsch/8028212/webrev.01/src/macosx/classes/sun/lwawt/macosx/CImage.java.udiff.html 



 It has sense to try the same approach on Linux.

  Thanks,
  Alexandr.



--Semyon

On 19.07.2016 23:26, Rajeev Chamyal wrote:

Hello Semyon,

Please review the updated webrev.

http://cr.openjdk.java.net/~rchamyal/8147648/webrev.03/


Regards,

Rajeev Chamyal

*From:*Semyon Sadetsky
*Sent:* 14 July 2016 16:58
*To:* Rajeev Chamyal; swing-dev@openjdk.java.net
; Sergey Bylokhov;
Alexander Scherbatiy
*Subject:* Re: [9] Review Request JDK-8147648
[hidpi] multiresolution image: wrong resolution variant is
used as icon in the Unity panel

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/


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 
  

Re: [9] Review Request JDK-8147648 [hidpi] multiresolution image: wrong resolution variant is used as icon in the Unity panel

2016-07-21 Thread Rajeev Chamyal
Hello Semyon,

 

The resolution variant image returned is based on the implementation of 
BaseMultiResolutionImage::getResolutionVariant API.

Current implementation of BaseMultiResolutionImage::getResolutionVariant 
returns a resolution variant image which has width and height greater than or 
equal to the passed width and height.

In the case you have suggested dimensions of RED and BLUE images are 32 and  80 
respectively.

Width and height passed to getResolutionVariant is 64  i.e. scaled width and 
height of base image(RED) (GDK_SCALE=2) and blue image is getting returned.

The width and height passed to this  API is that of base image not of the spot.

Applications can control this behaviour by overriding this API in derived 
classes.

 

Regards,

Rajeev Chamyal 

 

From: Alexandr Scherbatiy 
Sent: 21 July 2016 15:09
To: Semyon Sadetsky; Rajeev Chamyal; swing-dev@openjdk.java.net; Sergey Bylokhov
Subject: Re: [9] Review Request JDK-8147648 [hidpi] multiresolution 
image: wrong resolution variant is used as icon in the Unity panel

 

On 7/21/2016 11:49 AM, Semyon Sadetsky wrote:



Hello Rajeev,

The taskbar icon is ok now.

I change the resolution variants from the test a bit:

final BaseMultiResolutionImage IMG = new 
BaseMultiResolutionImage(
new BufferedImage[]{generateImage(4, Color.RED), 
generateImage(10, Color.BLUE)});

And the icon I see in the taskbar and in the button is blue. It seems to me the 
first resolution variant (red) is more appropriate in this case because its 
size is closer to the spot. I'm not sure if this is an issue.

I have an extra question to you and Alexander.
Most native apps on Linux set an array of icons with _NET_WM_ICON. Usually they 
are [16x16, 32x32, 64x64].
So, desktop environment may select icon of appropriate size.
In this fix we are preselecting icon of a specific size in the app and send it 
to WM. 
Why not to send array of the resolution variants images and let the desktop 
environment to select the appropriate one, like native apps do?

  This sounds as good idea. MultiResolutionImage has the special method for 
this "List getResolutionVariants()". We do the similar on Mac OS X where 
NSImage with several representations is created from a MultiResolutionImage:

http://cr.openjdk.java.net/~alexsch/8028212/webrev.01/src/macosx/classes/sun/lwawt/macosx/CImage.java.udiff.html

 It has sense to try the same approach on Linux.

  Thanks,
  Alexandr.





--Semyon

On 19.07.2016 23:26, Rajeev Chamyal wrote:

Hello Semyon,

 

Please review the updated webrev.

HYPERLINK 
"http://cr.openjdk.java.net/%7Erchamyal/8147648/webrev.03/"http://cr.openjdk.java.net/~rchamyal/8147648/webrev.03/

 

Regards,

Rajeev Chamyal

 

From: Semyon Sadetsky 
Sent: 14 July 2016 16:58
To: Rajeev Chamyal; HYPERLINK 
"mailto:swing-dev@openjdk.java.net"swing-dev@openjdk.java.net; Sergey Bylokhov; 
Alexander Scherbatiy
Subject: Re: [9] Review Request JDK-8147648 [hidpi] multiresolution 
image: wrong resolution variant is used as icon in the Unity panel

 

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.

HYPERLINK 
"http://cr.openjdk.java.net/%7Erchamyal/8147648/webrev.02/"http://cr.openjdk.java.net/~rchamyal/8147648/webrev.02/

 

Update: simplified the test.

 

Regards,

Rajeev Chamyal

 

From: Alexandr Scherbatiy 
Sent: 22 June 2016 15:46
To: Rajeev Chamyal; Sergey Bylokhov; HYPERLINK 
"mailto:swing-dev@openjdk.java.net"swing-dev@openjdk.java.net
Subject: Re: [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.

HYPERLINK 
"http://cr.openjdk.java.net/%7Erchamyal/8147648/webrev.01/"http://cr.openjdk.java.net/~rchamyal/8147648/webrev.01/

 

Regards,

Rajeev Chamyal

 

From: Alexandr Scherbatiy 
Sent: 21 June 2016 17:37
To: Rajeev Chamyal; Sergey Bylokhov; HYPERLINK 
"mailto:swing-dev@openjdk.java.net"swing-dev@openjdk.java.net
Subject: Re: [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 

Re: [9] Review Request JDK-8147648 [hidpi] multiresolution image: wrong resolution variant is used as icon in the Unity panel

2016-07-21 Thread Alexandr Scherbatiy

On 7/21/2016 11:49 AM, Semyon Sadetsky wrote:

Hello Rajeev,

The taskbar icon is ok now.

I change the resolution variants from the test a bit:

final BaseMultiResolutionImage IMG = new 
BaseMultiResolutionImage(
new BufferedImage[]{generateImage(4, 
Color.RED), generateImage(10, Color.BLUE)});


And the icon I see in the taskbar and in the button is blue. It seems 
to me the first resolution variant (red) is more appropriate in this 
case because its size is closer to the spot. I'm not sure if this is 
an issue.


I have an extra question to you and Alexander.
Most native apps on Linux set an array of icons with _NET_WM_ICON. 
Usually they are [16x16, 32x32, 64x64].

So, desktop environment may select icon of appropriate size.
In this fix we are preselecting icon of a specific size in the app and 
send it to WM.
Why not to send array of the resolution variants images and let the 
desktop environment to select the appropriate one, like native apps do?
  This sounds as good idea. MultiResolutionImage has the special method 
for this "List getResolutionVariants()". We do the similar on Mac 
OS X where NSImage with several representations is created from a 
MultiResolutionImage:

http://cr.openjdk.java.net/~alexsch/8028212/webrev.01/src/macosx/classes/sun/lwawt/macosx/CImage.java.udiff.html

 It has sense to try the same approach on Linux.

  Thanks,
  Alexandr.



--Semyon

On 19.07.2016 23:26, Rajeev Chamyal wrote:


Hello Semyon,

Please review the updated webrev.

http://cr.openjdk.java.net/~rchamyal/8147648/webrev.03/

Regards,

Rajeev Chamyal

*From:*Semyon Sadetsky
*Sent:* 14 July 2016 16:58
*To:* Rajeev Chamyal; swing-dev@openjdk.java.net; Sergey Bylokhov; 
Alexander Scherbatiy
*Subject:* Re: [9] Review Request JDK-8147648 [hidpi] 
multiresolution image: wrong resolution variant is used as icon in 
the Unity panel


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/

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
*Subject:* Re: [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/

Regards,

Rajeev Chamyal

*From:*Alexandr Scherbatiy
*Sent:* 21 June 2016 17:37
*To:* Rajeev Chamyal; Sergey Bylokhov; swing-dev@openjdk.java.net
*Subject:* Re: [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/


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







Re: [9] Review Request JDK-8147648 [hidpi] multiresolution image: wrong resolution variant is used as icon in the Unity panel

2016-07-21 Thread Semyon Sadetsky

Hello Rajeev,

The taskbar icon is ok now.

I change the resolution variants from the test a bit:

final BaseMultiResolutionImage IMG = new 
BaseMultiResolutionImage(
new BufferedImage[]{generateImage(4, 
Color.RED), generateImage(10, Color.BLUE)});


And the icon I see in the taskbar and in the button is blue. It seems to 
me the first resolution variant (red) is more appropriate in this case 
because its size is closer to the spot. I'm not sure if this is an issue.


I have an extra question to you and Alexander.
Most native apps on Linux set an array of icons with _NET_WM_ICON. 
Usually they are [16x16, 32x32, 64x64].

So, desktop environment may select icon of appropriate size.
In this fix we are preselecting icon of a specific size in the app and 
send it to WM.
Why not to send array of the resolution variants images and let the 
desktop environment to select the appropriate one, like native apps do?



--Semyon

On 19.07.2016 23:26, Rajeev Chamyal wrote:


Hello Semyon,

Please review the updated webrev.

http://cr.openjdk.java.net/~rchamyal/8147648/webrev.03/ 



Regards,

Rajeev Chamyal

*From:*Semyon Sadetsky
*Sent:* 14 July 2016 16:58
*To:* Rajeev Chamyal; swing-dev@openjdk.java.net; Sergey Bylokhov; 
Alexander Scherbatiy
*Subject:* Re: [9] Review Request JDK-8147648 [hidpi] 
multiresolution image: wrong resolution variant is used as icon in the 
Unity panel


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/


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

*Subject:* Re: [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/


Regards,

Rajeev Chamyal

*From:*Alexandr Scherbatiy
*Sent:* 21 June 2016 17:37
*To:* Rajeev Chamyal; Sergey Bylokhov;
swing-dev@openjdk.java.net 
*Subject:* Re: [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/


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





Re: [9] Review Request JDK-8147648 [hidpi] multiresolution image: wrong resolution variant is used as icon in the Unity panel

2016-07-19 Thread Rajeev Chamyal
Hello Semyon,

 

Please review the updated webrev.

http://cr.openjdk.java.net/~rchamyal/8147648/webrev.03/

 

Regards,

Rajeev Chamyal

 

From: Semyon Sadetsky 
Sent: 14 July 2016 16:58
To: Rajeev Chamyal; swing-dev@openjdk.java.net; Sergey Bylokhov; Alexander 
Scherbatiy
Subject: Re: [9] Review Request JDK-8147648 [hidpi] multiresolution 
image: wrong resolution variant is used as icon in the Unity panel

 

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/

 

Update: simplified the test.

 

Regards,

Rajeev Chamyal

 

From: Alexandr Scherbatiy 
Sent: 22 June 2016 15:46
To: Rajeev Chamyal; Sergey Bylokhov; HYPERLINK 
"mailto:swing-dev@openjdk.java.net"swing-dev@openjdk.java.net
Subject: Re: [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/

 

Regards,

Rajeev Chamyal

 

From: Alexandr Scherbatiy 
Sent: 21 June 2016 17:37
To: Rajeev Chamyal; Sergey Bylokhov; HYPERLINK 
"mailto:swing-dev@openjdk.java.net"swing-dev@openjdk.java.net
Subject: Re: [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: HYPERLINK 
"http://cr.openjdk.java.net/%7Erchamyal/8147648/webrev.00/"http://cr.openjdk.java.net/~rchamyal/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

 

 

 


Re: [9] Review Request JDK-8147648 [hidpi] multiresolution image: wrong resolution variant is used as icon in the Unity panel

2016-07-14 Thread Semyon Sadetsky

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/ 



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 

*Subject:* Re: [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/


Regards,

Rajeev Chamyal

*From:*Alexandr Scherbatiy
*Sent:* 21 June 2016 17:37
*To:* Rajeev Chamyal; Sergey Bylokhov; swing-dev@openjdk.java.net

*Subject:* Re: [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/


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





Re: [9] Review Request JDK-8147648 [hidpi] multiresolution image: wrong resolution variant is used as icon in the Unity panel

2016-06-27 Thread Rajeev Chamyal
Hello Sergey,

 

Could you please review this fix.

http://cr.openjdk.java.net/~rchamyal/8147648/webrev.01/

 

Regards,

Rajeev Chamyal

 

From: Alexandr Scherbatiy 
Sent: 22 June 2016 15:46
To: Rajeev Chamyal; Sergey Bylokhov; swing-dev@openjdk.java.net
Subject: Re: [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/

 

Regards,

Rajeev Chamyal

 

From: Alexandr Scherbatiy 
Sent: 21 June 2016 17:37
To: Rajeev Chamyal; Sergey Bylokhov; HYPERLINK 
"mailto:swing-dev@openjdk.java.net"swing-dev@openjdk.java.net
Subject: Re: [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: HYPERLINK 
"http://cr.openjdk.java.net/%7Erchamyal/8147648/webrev.00/"http://cr.openjdk.java.net/~rchamyal/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

 

 


Re: [9] Review Request JDK-8147648 [hidpi] multiresolution image: wrong resolution variant is used as icon in the Unity panel

2016-06-22 Thread Alexandr Scherbatiy

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/ 



Regards,

Rajeev Chamyal

*From:*Alexandr Scherbatiy
*Sent:* 21 June 2016 17:37
*To:* Rajeev Chamyal; Sergey Bylokhov; swing-dev@openjdk.java.net
*Subject:* Re: [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/


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





Re: [9] Review Request JDK-8147648 [hidpi] multiresolution image: wrong resolution variant is used as icon in the Unity panel

2016-06-22 Thread Rajeev Chamyal
Hello Alexandr,

 

Thanks for the review. I have updated webrev as per comments.

http://cr.openjdk.java.net/~rchamyal/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
Subject: Re: [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: HYPERLINK 
"http://cr.openjdk.java.net/%7Erchamyal/8147648/webrev.00/"http://cr.openjdk.java.net/~rchamyal/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

 


Re: [9] Review Request JDK-8147648 [hidpi] multiresolution image: wrong resolution variant is used as icon in the Unity panel

2016-06-21 Thread Alexandr Scherbatiy

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/ 



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





[9] Review Request JDK-8147648 [hidpi] multiresolution image: wrong resolution variant is used as icon in the Unity panel

2016-06-21 Thread Rajeev Chamyal
Hello All,

 

Please review the following webrev.

 

Webrev: http://cr.openjdk.java.net/~rchamyal/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.

 

Regards,

Rajeev Chamyal