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

Semyon Sadetsky semyon.sadetsky at oracle.com
Fri Jul 22 10:39:46 UTC 2016


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

> Linked to 8147648, added prefix Hidpi.
>
Thanks.

The fix looks good to me.

--Semyon
>
> Regards,
>
> Rajeev Chamyal
>
> *From:*Semyon Sadetsky
> *Sent:* 22 July 2016 15:51
> *To:* Rajeev Chamyal; Alexander Scherbatiy; 
> swing-dev at openjdk.java.net; Sergey Bylokhov
> *Subject:* Re: <Swing Dev>[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;
>     swing-dev at openjdk.java.net <mailto:swing-dev at openjdk.java.net>;
>     Sergey Bylokhov
>     *Subject:* Re: <Swing Dev>[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/
>         <http://cr.openjdk.java.net/%7Erchamyal/8147648/webrev.03/>
>
>         Regards,
>
>         Rajeev Chamyal
>
>         *From:*Alexandr Scherbatiy
>         *Sent:* 21 July 2016 20:42
>         *To:* Rajeev Chamyal; Semyon Sadetsky;
>         swing-dev at openjdk.java.net
>         <mailto:swing-dev at openjdk.java.net>; Sergey Bylokhov
>         *Subject:* Re: <Swing Dev>[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 at openjdk.java.net
>             <mailto:swing-dev at openjdk.java.net>; Sergey Bylokhov
>             *Subject:* Re: <Swing Dev>[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<Image>
>             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
>             <http://cr.openjdk.java.net/%7Ealexsch/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/
>                     <http://cr.openjdk.java.net/%7Erchamyal/8147648/webrev.03/>
>
>                     Regards,
>
>                     Rajeev Chamyal
>
>                     *From:*Semyon Sadetsky
>                     *Sent:* 14 July 2016 16:58
>                     *To:* Rajeev Chamyal; swing-dev at openjdk.java.net
>                     <mailto:swing-dev at openjdk.java.net>; Sergey
>                     Bylokhov; Alexander Scherbatiy
>                     *Subject:* Re: <Swing Dev>[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/
>                         <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 at openjdk.java.net
>                         <mailto:swing-dev at 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 at openjdk.java.net
>                             <mailto:swing-dev at 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
>

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.openjdk.java.net/pipermail/swing-dev/attachments/20160722/36d81f34/attachment.html>


More information about the swing-dev mailing list