<Swing Dev> [13] RFR JDK-8213781:web page background renders blue in JEditorPane

Shashidhara Veerabhadraiah shashidhara.veerabhadraiah at oracle.com
Thu Feb 21 16:00:14 UTC 2019


The rest of the changes should be fine.

Thanks and regards,
Shashi

-----Original Message-----
From: Prasanta Sadhukhan 
Sent: Thursday, February 21, 2019 9:26 PM
To: Shashidhara Veerabhadraiah <shashidhara.veerabhadraiah at oracle.com>; swing-dev at openjdk.java.net
Subject: Re: <Swing Dev> [13] RFR JDK-8213781:web page background renders blue in JEditorPane



On 21-Feb-19 9:21 PM, Shashidhara Veerabhadraiah wrote:
> Hi Prashanta, Thank you for pointing that information. It was useful. But then again  what we actually use is CSS-1, not CSS-2 and here is the link per CSS.java: http://www.w3.org/TR/REC-CSS1. So for the color attribute, here is the link for it: https://www.w3.org/TR/REC-CSS1/#color-units.
>
> The comments for this function needs to be changed to "The three-digit RGB notation (#rgb) is converted into six-digit form (#rrggbb) by replicating digits, not by adding zeros." to be more clear.
The fn comment was generic "an attempt will be made to fix it up"..so I guess it is correct. I will add the above line to my comment where I add the code, when I push. Any other objection?

Regards
Prasanta
> Thanks and regards,
> Shashi
>
> -----Original Message-----
> From: Prasanta Sadhukhan
> Sent: Thursday, February 21, 2019 8:20 PM
> To: Shashidhara Veerabhadraiah 
> <shashidhara.veerabhadraiah at oracle.com>; swing-dev at openjdk.java.net
> Subject: Re: <Swing Dev> [13] RFR JDK-8213781:web page background 
> renders blue in JEditorPane
>
> Also, as per https://www.w3.org/TR/CSS2/syndata.html#value-def-color, 
> we have
>
> The three-digit RGB notation (#rgb) is converted into six-digit form
> (#rrggbb) by replicating digits, not by adding zeros. For example, #fb0 expands to #ffbb00. This ensures that white (#ffffff) can be specified with the short notation (#fff) and removes any dependencies on the color depth of the display.
>
> Regards
> Prasanta
> On 21-Feb-19 7:45 PM, Prasanta Sadhukhan wrote:
>> Hi Shashi,
>>
>> As you can see, Color.decode() called from hexToColor() accepts an 
>> opaque 24 bit integer which is what returns the actual color that 
>> will be rendered. Normally, it's 2D api's (ie Color.java) job to use 
>> ColorSpace/ColorModel to give back the correct color and hexToColor's 
>> job is to give a 6 digit string. The basic premise of the issue is 
>> CSS parser gets a 3-digit string #fff instead of 6digit string #ffffff.
>> Please do not get confused by r,g,b variable name, it can as well be 
>> a, b, c variables.
>>
>> Regarding doing the logic at hexToColor(), it's because the comment 
>> of that fn itself says "If the color specification is bad, an attempt 
>> will be made to fix it up" so I made the attempt to fix it in that 
>> function as expected by that comment.
>>
>> Hope this clarifies.
>>
>> Regards
>> Prasanta
>> On 21-Feb-19 3:46 PM, Shashidhara Veerabhadraiah wrote:
>>> Hi Prashanta, I have a question on the proposed solution. Shouldn’t 
>>> one check for the color depth of the system like true color(24 bit) 
>>> or high color system(12 bit or non-true color system) before 
>>> applying this logic? Assuming 24 bit color system isn't the right 
>>> thing to do I think but again that may be mostly default these days. 
>>> I also think we should receive the expanded form at the hexToColor() 
>>> rather than expanding at this function. We should simply apply the 
>>> received color at this lower function level I think.
>>>
>>> Thanks and regards,
>>> Shashi
>>>
>>> -----Original Message-----
>>> From: Prasanta Sadhukhan
>>> Sent: Thursday, February 21, 2019 2:04 PM
>>> To: swing-dev at openjdk.java.net
>>> Subject: <Swing Dev> [13] RFR JDK-8213781:web page background 
>>> renders blue in JEditorPane
>>>
>>> Hi All,
>>>
>>> Please review a fix for an issue where it is seen that some webpage 
>>> shows wrong background color when displayed in JEditorPane.
>>>
>>> It seems that some webpage can have #rgb [as in #fff] as CSS 
>>> attributes which when parsed and passed to hexToColor() it is 
>>> decoded as 0x000fff resulting in primarily blue background instead 
>>> of white as desired.
>>> Now, hexToColor() is only able to handle 24 bit hex string as in 
>>> #FFFFFF but not 12bit hexstring. So, fix is to make it recognize 
>>> #fff and use
>>> Color.decode() to decode it correctly to 0xffffff.
>>>
>>> Bug: https://bugs.openjdk.java.net/browse/JDK-8213781
>>> webrev: http://cr.openjdk.java.net/~psadhukhan/8213781/webrev.0/
>>>
>>> Regards
>>> Prasanta



More information about the swing-dev mailing list