On Fri, 9 Feb 2024 14:29:18 GMT, Kevin Rushforth <k...@openjdk.org> wrote:

>> JavaFX LCD text rendering (aka sub-pixel antialiasing) uses a pixel shader 
>> and alpha blending. The alpha channel is used is ways that interfere with 
>> its use for transparency. The existing logic checks that the current blend 
>> equation is SRC_OVER and that the surface is opaque, and that we are 
>> rendering using a Paint of type Color. It fails to check that the text color 
>> is opaque. When it isn't, the resulting alpha value is not preserved, even 
>> in the middle of the filled portion of the text, resulting in a visually 
>> noticeable difference in color.
>> 
>> ![transparent-lcd-text](https://github.com/openjdk/jfx/assets/34689748/81f9503c-c706-44d8-b4db-6b47f0eb5fea)
>> 
>> The solution is to add the missing check for alpha == 1 to the test that 
>> checks whether we can use LCD text rendering. I note that Java2D falls back 
>> to gray scale when the text color is transparent for a similar reason.
>> 
>> I added a robot test that checks the color in the middle of the filled 
>> portion of a rendered text character and also checks that we use LCD for 
>> opaque colors and GRAY scale for transparent colors.
>
> Kevin Rushforth has updated the pull request incrementally with one 
> additional commit since the last revision:
> 
>   Address review feedback

looks good, some minor comments.

tests/system/src/test/java/test/robot/javafx/scene/TransparentLCDTest.java line 
69:

> 67:  * @bug 8311492
> 68:  */
> 69: public class TransparentLCDTest {

Was there a reason you did not use `VisualTestBase` class?
The code is fine the way it is, I am just curious.

-------------

PR Review: https://git.openjdk.org/jfx/pull/1361#pullrequestreview-1872732167
PR Review Comment: https://git.openjdk.org/jfx/pull/1361#discussion_r1484517970

Reply via email to