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 <[email protected]>; [email protected] 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 > <[email protected]>; [email protected] > 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: [email protected] >>> 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
