<AWT Dev> Review Request JDK:-8162959 [HiDPI] screenshot artifacts using AWT Robot

Alexandr Scherbatiy alexandr.scherbatiy at oracle.com
Mon Jan 23 17:04:41 UTC 2017


The fix looks good to me.

Thanks,
Alexandr.

On 1/23/2017 9:04 AM, Prem Balakrishnan wrote:
>
> Hi Alex,
>
> Please review updated patch as per review comments.
>
> http://cr.openjdk.java.net/~pkbalakr/8162959/webrev.07/ 
> <http://cr.openjdk.java.net/%7Epkbalakr/8162959/webrev.07/>
>
> Regards,
>
> Prem
>
> *From:*Alexandr Scherbatiy
> *Sent:* Friday, January 20, 2017 4:50 PM
> *To:* Prem Balakrishnan; Sergey Bylokhov; awt-dev at openjdk.java.net; 
> Philip Race
> *Subject:* Re: Review Request JDK:-8162959 [HiDPI] screenshot 
> artifacts using AWT Robot
>
> On 1/19/2017 3:57 PM, Prem Balakrishnan wrote:
>
>     Hi Alex,
>
>     Please review updated patch as per review comments.
>
>     http://cr.openjdk.java.net/~pkbalakr/8162959/webrev.06/
>     <http://cr.openjdk.java.net/%7Epkbalakr/8162959/webrev.06/>
>
>     Automated test validates both Robot.getPixelColor() and output of
>     Robot.createScreenCapture() API's.
>
>     Jtreg and JCK tests passed on build with fix across all the
>     platforms(Mac, Windows and Linux) without causing any regression.
>
> src/java.desktop/share/classes/java/awt/Robot.java
>   > 421      * @param   isHiDPI     Indicates if HiDPI Display
>
>   There should be mention that this argument value is ignored when a 
> screenshot is taken on non-HiDPI display
>
>   Thanks,
>   Alexandr.
>
>
> Regards,
>
> Prem
>
> *From:*Alexandr Scherbatiy
> *Sent:* Thursday, January 12, 2017 2:39 PM
> *To:* Prem Balakrishnan; Sergey Bylokhov; awt-dev at openjdk.java.net 
> <mailto:awt-dev at openjdk.java.net>; Philip Race
> *Subject:* Re: Review Request JDK:-8162959 [HiDPI] screenshot 
> artifacts using AWT Robot
>
>
> > 421      * @param   isHiDPI     Indicates if HiDPI Display
>
>   There should be mention that this argument value is ignored when a 
> screenshot is taken on non-HiDPI display
>
> Please also check the the method Robot.getPixelColor(int x, int y) 
> also correctly works on Mac OS X, Windows and Linux after the fix.
>
> Thanks,
> Alexandr.
>
> On 1/10/2017 11:54 AM, Prem Balakrishnan wrote:
>
>     Hi Alex,
>
>     Please review updated patch,
>
>     http://cr.openjdk.java.net/~pkbalakr/8162959/webrev.05/
>     <http://cr.openjdk.java.net/%7Epkbalakr/8162959/webrev.05/>
>
>     updated imageOption to kCGWindowImageBestResolution  which returns
>     Best Resolution Image while capturing screen using
>     CGWindowListCreateImage() method.
>
>     Regards,
>
>     Prem
>
>     *From:*Alexandr Scherbatiy
>     *Sent:* Tuesday, January 10, 2017 1:08 AM
>     *To:* Prem Balakrishnan; Sergey Bylokhov; awt-dev at openjdk.java.net
>     <mailto:awt-dev at openjdk.java.net>; Philip Race
>     *Subject:* Re: Review Request JDK:-8162959 [HiDPI] screenshot
>     artifacts using AWT Robot
>
>
>       CGWindowListCreateImage() method which is used to capture a
>     screenshot on Mac OS X by Robot has imageOption argument which can
>     have value: kCGWindowImageBestResolution
>     https://developer.apple.com/reference/coregraphics/1666230-quartz_window_services/window_image_types?language=objc
>        "When capturing the window, return the best image resolution.
>     The returned image size may be different than the screen size."
>
>       Could this option help to get a high-resolution CGImageRef on
>     HiDPI display?
>
>       Thanks,
>       Alexandr.
>
>     On 12/27/2016 12:14 PM, Prem Balakrishnan wrote:
>
>         Hi Alexander,
>
>         Please review updated patch,
>
>         http://cr.openjdk.java.net/~pkbalakr/8162959/webrev.04/
>         <http://cr.openjdk.java.net/%7Epkbalakr/8162959/webrev.04/>
>
>         I used  wrong bounds while creating images, correct it in this
>         patch.
>
>         Regards,
>
>         Prem
>
>         *From:*Alexander Scherbatiy
>         *Sent:* Wednesday, December 14, 2016 5:18 PM
>         *To:* Prem Balakrishnan; Sergey Bylokhov;
>         awt-dev at openjdk.java.net <mailto:awt-dev at openjdk.java.net>;
>         Philip Race
>         *Subject:* Re: Review Request JDK:-8162959 [HiDPI] screenshot
>         artifacts using AWT Robot
>
>         On 07/12/16 10:24, Prem Balakrishnan wrote:
>
>
>
>
>         Hi Alexander,
>
>         Please review updated patch as per review comments.
>
>         http://cr.openjdk.java.net/~pkbalakr/8162959/webrev.03/
>         <http://cr.openjdk.java.net/%7Epkbalakr/8162959/webrev.03/>
>
>           I used a simple app [1] to create a screenshot of a frame on
>         Mac OS X:
>                 Rectangle rect = frame.getBounds();
>                 rect.setLocation(frame.getLocationOnScreen());
>                 BufferedImage img = robot.createScreenCapture(rect);
>
>           It takes only bottom right quarter of the frame [2].
>
>           Is it possible to use some API that makes a screenshot and
>         returns an NSImage on Mac OS X?
>           In this case it would be possible to get a high resolution
>         representation from the NSImage and return it in the same way
>         as it is updated on Windows and Linux.
>
>           [1]
>         http://cr.openjdk.java.net/~alexsch/8162959/screenshot/RobotScreenshot.java
>         <http://cr.openjdk.java.net/%7Ealexsch/8162959/screenshot/RobotScreenshot.java>
>           [2]
>         http://cr.openjdk.java.net/~alexsch/8162959/screenshot/screenshot.png
>         <http://cr.openjdk.java.net/%7Ealexsch/8162959/screenshot/screenshot.png>
>
>           Thanks,
>           Alexandr.
>
>
>
>
>         Regards,
>
>         Prem
>
>         *From:*Alexandr Scherbatiy
>         *Sent:* Monday, November 21, 2016 8:10 PM
>         *To:* Prem Balakrishnan; Sergey Bylokhov;
>         awt-dev at openjdk.java.net <mailto:awt-dev at openjdk.java.net>;
>         Phil Race
>         *Subject:* Re: Review Request JDK:-8162959 [HiDPI] screenshot
>         artifacts using AWT Robot
>
>         On 11/16/2016 8:46 AM, Prem Balakrishnan wrote:
>
>
>
>
>
>         Hi Alexander,
>
>         Please review update patch as per review comments.
>
>         http://cr.openjdk.java.net/~pkbalakr/8162959/webrev.02/
>         <http://cr.openjdk.java.net/%7Epkbalakr/8162959/webrev.02/>
>
>         With this patch, Robot.createScreenCapture(Rectangle) method
>         returns a scaled down image on the HiDPI display.
>
>
>         - The native part on Mac OS X and Linux should be updated as well.
>
>         - 416      * Returns BufferedImage for Non-HiDPI display and
>         MultiResolutionImage
>           417      * for HiDPI display with two resolution variants.
>
>         There should be added an explanation what is the content of
>         the first and the second resolution variant.
>
>         Thanks,
>         Alexandr.
>
>
>
>
>
>
>         Regards,
>
>         Prem
>
>         *From:*Alexandr Scherbatiy
>         *Sent:* Thursday, November 03, 2016 4:05 PM
>         *To:* Prem Balakrishnan; Sergey Bylokhov;
>         awt-dev at openjdk.java.net <mailto:awt-dev at openjdk.java.net>
>         *Subject:* Re: Review Request JDK:-8162959 [HiDPI] screenshot
>         artifacts using AWT Robot
>
>         On 11/2/2016 1:57 PM, Prem Balakrishnan wrote:
>
>
>
>
>
>
>         Hi Alexander,
>
>         Please review updated patch.
>
>         http://cr.openjdk.java.net/~pkbalakr/8162959/webrev.01/
>         <http://cr.openjdk.java.net/%7Epkbalakr/8162959/webrev.01/>
>
>         Added a new public API “*Image
>         createHiDPIScreenCapture(Rectangle screenRect)”.*
>
>         Returns an ordinary screenshot(BufferedImage) if the UI scale
>         is 1.
>
>         Returns MultiResolutionImage for HiDPI display with two
>         resolution variants,
>
>         1.Low Resolution/base image with user input width and height,
>          I have used interpolation algorithm for scaling , adapted
>         from JavaFX Robot
>         (http://hg.openjdk.java.net/openjfx/9-dev/rt/rev/89a5de54b7dc),
>
>         2.High Resolution image with scaled width and height .
>
>           - Please, check that the
>         Robot.createScreenCapture(Rectangle) method returns a scaled
>         down image on the HiDPI display
>           - Probably existing Java methods can be used for an image
>         scaling.
>           For example, there is the Image.getScaledInstance(int width,
>         int height, int hints) method.
>           Or may be it is better just to create an image with required
>         size and draw the high-resolution image into it using a
>         specific scale and rendering hints.
>
>           Thanks,
>           Alexandr.
>
>
>
>
>
>
>
>         Regards,
>
>         Prem
>
>         *From:*Alexander Scherbatiy
>         *Sent:* Thursday, October 13, 2016 3:21 PM
>         *To:* Prem Balakrishnan; Sergey Bylokhov;
>         awt-dev at openjdk.java.net <mailto:awt-dev at openjdk.java.net>
>         *Subject:* Re: Review Request JDK:-8162959 [HiDPI] screenshot
>         artifacts using AWT Robot
>
>         On 06/10/16 15:28, Prem Balakrishnan wrote:
>
>             Hi*,*
>
>             **
>
>             Please review fix for JDK 9,
>
>             *Bug:*https://bugs.openjdk.java.net/browse/JDK-8162959
>
>             *Webrev:*http://cr.openjdk.java.net/~pkbalakr/8162959/webrev.00/
>             <http://cr.openjdk.java.net/%7Epkbalakr/8162959/webrev.00/>
>
>             I have adapted the same fix as used for JavaFX Robot
>
>             *Bug: *JDK-8162783
>             <https://bugs.openjdk.java.net/browse/JDK-8162783>.
>
>             *Patch:
>             *http://hg.openjdk.java.net/openjfx/9-dev/rt/rev/89a5de54b7dc
>
>             New Public API ” BufferedImage
>             createScreenCapture(Rectangle screenRect, boolean
>             isHiDPI)”is added,
>
>             Which will have a parameter to specify if HiDPI.
>
>           It is better to a add public method which returns
>         MultiResolution image on HiDPI display and  consists of two
>         resoltion variants
>            - base image which has size requested by a user
>            - high-resolution image which creates an original screen
>         capture
>
>           The proposed by your algorithm can be applied to the base
>         image.
>           For more details see JDK-8020618 [macosx] java.awt.Robot
>         makes blurry screen captures on Retina
>
>           Thanks,
>           Alexandr.
>
>
>
>
>
>
>
>           
>
>         Regards,
>
>         Prem
>
>           
>

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.openjdk.java.net/pipermail/awt-dev/attachments/20170123/ebfb2a6c/attachment-0001.html>


More information about the awt-dev mailing list