Hi Sergey,

I have created the BufferedImage of correct size considering the window 
dimension and graphics context scale. 

I changed BufferedImage just to store graphicsConfig, so that it can be used by 
BufImgSurfaceManager while creating BufImgSurfaceData. The scale in 
BufImgSurfaceData is used to create config while creating the SunGraphics2D 
through getDefaultTransform function. Now when the TranslucentWindowPainter 
create scaled BufferedImage and then creates Graphics2D using that, the 
Graphics2D has transform scale as (1,1) as the BufImgSurfaceData has scale 
(1,1). Then this Graphics2D is used to update the Window in  updateWindow in 
TranslucentWindowPainter. As the transform is identity, none of the Swing 
Components which are added to the window are scaled.
So I modified the BufferedImage to store graphicsConfig which can then be used 
by BugImgSurfaceManager to create BugImgSurfaceData with correct scale values 
and hence correct transform value in SunGraphics2D.

If this is not the correct way, I have one more way of doing this by 
transforming the SunGraphics2D object with transform of peer. So the 
SunGraphics2D will have correct transform  and objects are properly scaled. I 
have updated the webrev for the same. Please have a look. Also if this is also 
not the correct way, can you please suggest a way I can do this?

Webrev:
http://cr.openjdk.java.net/~pbansal/8164811/webrev.01/


Regards,
Pankaj Bansal



-----Original Message-----
From: Sergey Bylokhov 
Sent: Friday, November 3, 2017 5:34 AM
To: Pankaj Bansal; Prem Kumar Balakrishnan (prem.balakrish...@oracle.com); 
swing-...@openjdk.java.net; 2d-dev@openjdk.java.net
Subject: Re: [10] Review Request JDK - 8164811 : [hidpi]Tests fail with OpenGL 
Rendering

Hi, Pankaj.
The BufferedImage class is a raster in the memory which should be unrelated to 
any grpahics config on the system. So this class should not be changed, but 
instead you should create a correct BI-as a back buffer which takes into 
account the size of the window and the scale of the GC.

On 31/10/2017 04:59, Pankaj Bansal wrote:
> Hi All,
> 
> Please review the fix for JDK 10.
> 
> Bug:
> 
> https://bugs.openjdk.java.net/browse/JDK-8164811
> 
> Webrev:
> 
> http://cr.openjdk.java.net/~pbansal/8164811/webrev.00/
> 
> Issue:
> 
> The tests given in the bug were failing when run with OpenGL and GDI.  
> This bug is related to 
> https://bugs.openjdk.java.net/browse/JDK-8189257
> which states that that HIDPI does not work with swing components when 
> Translucent window is used. Because of which all the tests in the bug 
> were failing.
> 
> Fix:
> 
> The TranslucentWindowPainter class was creating BufferedImage for 
> OpenGL (when /forceOpt/ is false) and GDI pipeline, but it is not 
> considering the device HiDPI scale. There is no way to create a scaled 
> BufferedImage because of which the scale value in BufImgSurfaceData is 
> always 1. Made changes to store graphics config in Buffered image, so 
> that the BufImgSurfaceManager can create BufImgSurfaceData with scale set 
> properly.
> 
> This fix also fixes https://bugs.openjdk.java.net/browse/JDK-8189257
> 
> Regards,
> 
> Pankaj Bansal
> 


--
Best regards, Sergey.

Reply via email to