<Swing Dev> RFR: [12] JDK-8208638: Instead of circle rendered in appl window, but ellipse is produced JEditor Pane

Krishna Addepalli krishna.addepalli at oracle.com
Fri Sep 7 15:30:31 UTC 2018


Hi Prasanta,

 

I think you are confused by the same name of the variables. newHeight/newWidth are in "updateImage" and also "ImageHandler::imageUpdate".

imageUpdate can be called from a background thread, with new information from the image being loaded, that contains the newHeight and newWidth. Along with this, the "flags" variable lets us know what properties of the image are updated. For example, ImageObserver.HEIHGT and ImageObserver.WIDTH flags being set indicates, that this update call has fetched the image properties from the file.

Based on this, I cache these values, and then update them once the image load is complete.

 

Thanks,

Krishna

 

From: Prasanta Sadhukhan 
Sent: Friday, September 7, 2018 7:04 PM
To: Krishna Addepalli <krishna.addepalli at oracle.com>; swing-dev at openjdk.java.net
Subject: Re: <Swing Dev> RFR: [12] JDK-8208638: Instead of circle rendered in appl window, but ellipse is produced JEditor Pane

 

Hi Krishna,

We obtain newHeight and specifiedHeight by same method



newHeight = getIntAttr(HTML.Attribute.HEIGHT, -1);

and 



specifiedHeight = getIntAttr(HTML.Attribute.HEIGHT, -1);

so I assume both will return the same value. So,



968                         if (specifiedHeight <= 0) {
 969                             proportion = specifiedWidth / ((double)newWidth);
 970                             newHeight = (int)(proportion * newHeight);
 971                         }

if specifiedHeight is <=0 then newHeight * proportion will also be -ve or 0, isn't it? Will it not cause problem? Am I missing something?

Regards
Prasanta
On 9/5/2018 4:25 PM, Krishna Addepalli wrote:

Hi All,

 

The testfix turned out to be simpler than I thought. I just had to query the preferred size before making the frame visible, so that the image is rendered on screen properly, and now Robot is able to pick the color.

Here is the modified webrev: HYPERLINK "http://cr.openjdk.java.net/%7Ekaddepalli/8208638/webrev01/"http://cr.openjdk.java.net/~kaddepalli/8208638/webrev01/

 

Thanks,

Krishna

 

From: Krishna Addepalli 
Sent: Wednesday, September 5, 2018 9:41 AM
To: HYPERLINK "mailto:swing-dev at openjdk.java.net"swing-dev at openjdk.java.net
Subject: Re: <Swing Dev> RFR: [12] JDK-8208638: Instead of circle rendered in appl window, but ellipse is produced JEditor Pane

 

Hi All,

 

I found an issue with the test, and am working on it to make it pass reliably. I was setting the size of the frame and then querying the preferred size, which makes it a non-test. 

I'm working to address it, meanwhile you could still review the fix itself.

 

Thanks,

Krishna

 

From: Krishna Addepalli 
Sent: Wednesday, September 5, 2018 12:10 AM
To: HYPERLINK "mailto:swing-dev at openjdk.java.net"swing-dev at openjdk.java.net
Subject: RFR: [12] JDK-8208638: Instead of circle rendered in appl window, but ellipse is produced JEditor Pane

 

Hi All, 

Please review a fix for JDK-8208638: https://bugs.openjdk.java.net/browse/JDK-8208638

Webrev: HYPERLINK "http://cr.openjdk.java.net/%7Ekaddepalli/8208638/webrev00/"http://cr.openjdk.java.net/~kaddepalli/8208638/webrev00/

 

JEditorPane supports loading HTML content, including images, and this bug is about image scaling when either of the width/height attributes are not specified in the HTML text.

The problem is that scaling of the images in all cases was not handled properly. Here is the behavior that is observed in other browsers:

1.       If both width and height are specified in html, then use them instead.

2.       If both are not specified, then use the image dimensions.

3.       If either one is specified, then proportionately adjust the other dimension to preserve the aspect ratio of the image.

ImageView.java implementation was not handling the last case, which is added in the fix.

 

The test is also fixed now, which was earlier relying on Robot.getPixelColor, which does not work reliably. A happy alternative was found, where in the "RootView" that is rendering the html content is retrieved from the JEditorPane,  and its preferred span is queried, which should match the case specific width/height. 

Tested it on all platforms (Windows, Linux(Ubuntu) and Mac) and now it reliably passes.

 

Thanks,

Krishna

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


More information about the swing-dev mailing list