RFR: 8332895: Support interpolation for backgrounds and borders [v2]

Andy Goryachev angorya at openjdk.org
Fri Aug 2 16:13:39 UTC 2024


On Fri, 2 Aug 2024 01:24:59 GMT, Michael Strauß <mstrauss at openjdk.org> wrote:

>> modules/javafx.graphics/src/main/java/javafx/css/StyleableDoubleProperty.java line 157:
>> 
>>> 155:         @Override
>>> 156:         public boolean updateReversingAdjustedStartValue(TransitionMediator existingMediator) {
>>> 157:             var mediator = (TransitionMediatorImpl)existingMediator;
>> 
>> minor: should we use an instanceof pattern here, or do we want to throw ClassCastException?
>> (here and elsewhere)
>> 
>> example:
>> 
>> if(existingMediator instanceof TransitionMediatorImpl mediator) {
>> ...
>> }
>
> A reversing mediator must be the same type, otherwise something is seriously broken. I prefer a `ClassCastException` to highlight that this is very unexpected.

that's what I thought, thanks for clarification.

>> modules/javafx.graphics/src/main/java/javafx/scene/layout/BackgroundFill.java line 157:
>> 
>>> 155:         return this.fill == fill
>>> 156:             && this.radii == radii
>>> 157:             && this.insets == insets;
>> 
>> are you sure these don't need equals()?
>
> This is an internal optimization, see the comment at L135. Since we control the implementation of all types here, we _know_ that these types will return the existing instance if the intermediate value is equal to either the start value or the end value. Using `equals()` here is not necessary, and is not required for correctness.

I see, so it only checks for hitting the start/end point.  thanks for clarification!

>> modules/javafx.graphics/src/main/java/javafx/scene/layout/BorderConverter.java line 270:
>> 
>>> 268:             case ROUND -> BackgroundRepeat.ROUND;
>>> 269:             case SPACE -> BackgroundRepeat.SPACE;
>>> 270:             case STRETCH -> BackgroundRepeat.NO_REPEAT;
>> 
>> what do you think of adding default: case?
>> this code will not compile if BorderRepeat ever acquires a new value.
>
> Yes, I think that's good, as it will alert us to the impact of adding a new enum value. We would probably need to account for the new value here (there's no good default we can choose).

IllegalArgumentException?

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

PR Review Comment: https://git.openjdk.org/jfx/pull/1522#discussion_r1701991167
PR Review Comment: https://git.openjdk.org/jfx/pull/1522#discussion_r1702001112
PR Review Comment: https://git.openjdk.org/jfx/pull/1522#discussion_r1702004500


More information about the openjfx-dev mailing list