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

Alexander Scherbatiy alexandr.scherbatiy at oracle.com
Fri Oct 25 06:18:47 PDT 2013


   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