[prev in list] [next in list] [prev in thread] [next in thread] 

List:       openjdk-2d-dev
Subject:    Re: RFR: 8282526: Default icon is not painted properly [v4]
From:       Alexander Zuev <kizune () openjdk ! java ! net>
Date:       2022-05-27 18:16:42
Message-ID: 8vrDNTJTPocLihty5ZMoBaqGEX23B4gXxis8TtBvuZ8=.5700255b-33a0-4b17-bbb2-523f5a19e9c8 () github ! com
[Download RAW message or body]

On Fri, 27 May 2022 18:02:51 GMT, Alexander Zuev <kizune@openjdk.org> wrote:

> > Detect the situation where we do need to perform interpolation during ImageIcon
> > painting and set a hint to the rendering to perform bicubic approximation so
> > image details are preserved during transition.
> 
> Alexander Zuev has updated the pull request incrementally with one additional \
> commit since the last revision: 
> Use small icon pointer for icons less than 24 pixels wide - this way we
> get the 16x16 icon which is better for scaling purposes.

I have fixed the 16x16 icon generation on Windows, but this will not help the generic \
problem that i demonstrated with the test case, on the magnification factors like \
125% or 175% without the proposed fix for the ImageIcon the result looks trashy - \
jagged lines, missing details. I have done testing with the modified regression test \
case to see how my change affects performance. Notice that this is the worst case \
scenario, when all of the paintings trigger the fix (which is only triggered for \
MultiResolutionImage based icons and only when this MRI does not have the exact match \
for the requested resolution and scaling is required - this is like 0.01% of overall \
cases because for majority of image icons they are either single image based or MRI \
has the variant requested ready for display. And even in this worst case scenario on \
1000 iterations test does not show any difference. On 10000 iterations the difference \
is measurable in tens of milliseconds between test runs. On 100000 iterati  ons test \
execution with BICUBIC approximation is noticeable (like test run takes more than a \
second longer).

We can limit the maximum size of icon we process by some reasonable number, like do \
not process icons bigger than 256 pixel wide or high so we do not cause any \
noticeable slowdown, but i still think this needs to be done - otherwise on these odd \
magnifications we look nothing alike the native applications (windows looks like \
using some sort of bicubic interpolation for their icons) and just plain bad.

-------------

PR: https://git.openjdk.java.net/jdk/pull/7805


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic