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@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@openjdk.java.net
    <mailto:awt-dev@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@openjdk.java.net <mailto:awt-dev@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@openjdk.java.net <mailto:awt-dev@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@openjdk.java.net <mailto:awt-dev@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@openjdk.java.net <mailto:awt-dev@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


Reply via email to