<AWT Dev> [8] Review request for 8011059 [macosx] Make JDK demos look perfect on retina displays

Alexander Scherbatiy alexandr.scherbatiy at oracle.com
Tue Oct 29 09:45:48 PDT 2013


   Could you review the updated fix:
     http://cr.openjdk.java.net/~alexsch/8011059/webrev.03

On 10/28/2013 2:33 PM, Artem Ananiev wrote:
> Hi, Alexander,
>
> a few comments:
>
> 1. SunGraphics2D.java:3076 - should isHiDPIImage() be used here?
      The isHiDPIImage() method is used to check that the drawHiDPIImage 
should be called like:
         if (isHiDPIImage(img)) {
             return drawHiDPIImage(...);
         }

> 2. I'm not sure that the proposed getScaledImageName() implementation 
> in ScalableToolkitImage works perfectly for URLs like this:
>
>   http://www.exampmle.com/dir/image
>
> In this case it will try to find 2x image here:
>
>   http://www.example@2x.com/dir/image
>
> which doesn't look correct.
        Fixed. Only path part of a URL is converted to path2x.

> 3. RenderingHints spec references Retina or non-Retina displays, which 
> should be removed.
        Fixed.

     - devScale is used instead of transform parsing in the 
drawHiDPIImage() method just to not have performance regression more 
than 2 times on HiDPI displays
     - LWCToolkit.ScalableToolkitImage is made public for the fix 
8024926 [macosx] AquaIcon HiDPI support.

     Thanks,
     Alexandr.

>
> Thanks,
>
> Artem
>
> On 10/25/2013 5:18 PM, Alexander Scherbatiy wrote:
>>
>>    Could you review the updated fix:
>>        http://cr.openjdk.java.net/~alexsch/8011059/webrev.02/
>>
>>    - Scaled image width and height are transformed according to the
>> AffineTransform type.
>>    - ToolkitImage subclass is used to hold @2x image instance.
>>
>>   Thanks,
>>   Alexandr.
>>
>> On 10/23/2013 7:24 PM, Alexander Scherbatiy wrote:
>>>
>>>   Could you review the updated fix:
>>>      http://cr.openjdk.java.net/~alexsch/8011059/webrev.01/
>>>
>>>   The JCK failures has been resolved:
>>>     - Some tests tries to draw an image with Integer.MAX_VALUE width
>>> or height. Passing large values to image.getScaledImage(width, height,
>>> hints).
>>>        leads that an Image filter is not able to create necessary
>>> arrays.  The fix uses the original image if width or height are equal
>>> to Integer.MAX_VALUE.
>>>     - Using Image.SCALE_DEFAULT hint for the getScaledImage(width,
>>> height, hints) method to get the high resolution image interferes with
>>>        JCK tests that expect that the scaled image by certain
>>> algorithm is returned. This is fixed by invoking the
>>> super.getScaledImage(width, height, hints)
>>>        method in ToolkitImage in case if a high resolution image is
>>> not set.
>>>
>>>     Thanks,
>>>     Alexandr.
>>>
>>>
>>>
>>> On 10/22/2013 1:31 PM, Alexander Scherbatiy wrote:
>>>>
>>>> Hello,
>>>>
>>>> Could you review the fix:
>>>>
>>>>   bug: https://bugs.openjdk.java.net/browse/JDK-8011059
>>>>   webrev: http://cr.openjdk.java.net/~alexsch/8011059/webrev.00
>>>>
>>>>   The IMAGE_SCALING rendering hint is added to the RenderingHints 
>>>> class.
>>>>   Enabling the image scaling rendering hint forces the SunGraphics2D
>>>> to use getScaledInstance(width, height, hints) method
>>>>   from Image class with SCALE_DEFAULT hint.
>>>>
>>>>   By default the image scaling rendering hint is enabled on HiDPI
>>>> display and disabled for standard displays.
>>>>
>>>>   User can override the getScaledInstance(width, height, hints)
>>>> method and return necessary high resolution image
>>>>   according to the given image width and height.
>>>>
>>>>   For example:
>>>>   ---------------------
>>>>         final Image highResolutionImage =
>>>>                 new BufferedImage(2 * WIDTH, 2 * HEIGHT,
>>>> BufferedImage.TYPE_INT_RGB);
>>>>         Image image = new BufferedImage(WIDTH, HEIGHT,
>>>> BufferedImage.TYPE_INT_RGB) {
>>>>
>>>>             @Override
>>>>             public Image getScaledInstance(int width, int height, int
>>>> hints) {
>>>>                 if ((hints & Image.SCALE_DEFAULT) != 0) {
>>>>                     return (width <= WIDTH && height <= HEIGHT)
>>>>                             ? this : highResolutionImage;
>>>>                 }
>>>>                 return super.getScaledInstance(width, height, hints);
>>>>             }
>>>>         };
>>>>   ---------------------
>>>>
>>>>   The LWCToolkit and ToolkitImage classes are patched to
>>>> automatically get provided image at 2x.ext images on MacOSX.
>>>>
>>>>   There are no significant changes in the Java2D demo to make it look
>>>> perfect on Retina displays.
>>>>   It needs only to put necessary images with the @2x postfix and they
>>>> will be automatically drawn.
>>>>
>>>> Thanks,
>>>> Alexandr.
>>>>
>>>
>>



More information about the macosx-port-dev mailing list