[OpenJDK 2D-Dev] [9] Review request for 8151303 [macosx] [hidpi] JButton's low-res. icon is visible when clicking on it

Sergey Bylokhov Sergey.Bylokhov at oracle.com
Tue Mar 15 14:06:33 UTC 2016

On 15.03.16 17:01, Alexander Scherbatiy wrote:

>   One update will be that FilteredImageSource should implement
> MultiResolutionImageProducer even it is used for non multi-resolution
> images.
>    The MRI can be created using two general ways: using fixed number of
> resolution variants or generating a resolution variant with necessary
> quality on demand.
>   The current implementation is rely on that MRToolkitImage contains a
> fixed number of resolution variants. In this case MediaTracker can
> iterate over resolution variants and load them all.
>   Using MultiResolutionImageProducer leads that MRToolkitImage will not
> know about number of resolution variants in case when they are generated
> on the fly and there will be no way to load all of them by MediaTracker.

Just an idea to thinking about, can we save this filter to the MRI 
itself and apply it after some resolution variant will be created on the 

> As I see, the way to solve it is only using MRI.getResolutionVariants()
> method for the MultiResolutionImageProducer creation. So the result of
> the call
>     toolkit.createImage(new FilteredImageSource(mrImage.getSource(),
> filter));
>   will be a MRToolkitImage which is based on fixed number of filtered
> resolution variants from the original MRI.
>   Thanks,
>   Alexandr.
>> ...jim
>> On 3/11/16 5:42 AM, Alexander Scherbatiy wrote:
>>> On 09/03/16 16:58, Sergey Bylokhov wrote:
>>>> Probably we should enhance ImageProducer/Tk.createImage/ImageFilter to
>>>> support this functionality? It seems that the number of usage of this
>>>> check "image instanceof MultiResolutionImage" will grow over time.
>>>     ImageProducer produces pixels for an image and is not able to take
>>> an information about the image resolution variants.
>>>   May be we can add Toolkit.createImage(Image image, ImageFilter
>>> imageFilter) method which takes MultiResolutionImage into account to
>>> cover the common case where filtered image is created.
>>>   Thanks,
>>>   Alexandr.
>>>> I think that at least our own API should support MultiResolutionImage
>>>> w/o such checks, otherwise the user will need to do the same.
>>>> cc 2d-dev
>>>> On 09.03.16 15:30, Alexander Scherbatiy wrote:
>>>>> Hello,
>>>>> Could you review the fix:
>>>>>    bug: https://bugs.openjdk.java.net/browse/JDK-8151303
>>>>>    webrev: http://cr.openjdk.java.net/~alexsch/8151303/webrev.00
>>>>>    The AquaUtils does not take into account MultiResolutionImage for
>>>>> selected/disabled/lightened images generation.
>>>>>    The fix also leaves the MultiResolutionCachedImage check because
>>>>> the
>>>>> base system icon size can be differ from the requested painted size.
>>>>>    Thanks,
>>>>>    Alexandr.

Best regards, Sergey.

More information about the 2d-dev mailing list