<Swing Dev> [13] RFR JDK-8213781:web page background renders blue in JEditorPane
Shashidhara Veerabhadraiah
shashidhara.veerabhadraiah at oracle.com
Thu Feb 21 15:51:07 UTC 2019
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.
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