On Tue, 25 Nov 2025 01:42:42 GMT, Michael Strauß <[email protected]> wrote:
>> Implementation of the >> [linear](https://www.w3.org/TR/css-easing-2/#the-linear-easing-function) >> easing function, which is now widely supported by all browsers, but still >> missing in JavaFX. >> >> It allows developers to approximate arbitrary easing functions with linear >> segments: >> >> >> linear( >> /* Start to 1st bounce */ >> 0, 0.063, 0.25, 0.563, 1 36.4%, >> /* 1st to 2nd bounce */ >> 0.812, 0.75, 0.813, 1 72.7%, >> /* 2nd to 3rd bounce */ >> 0.953, 0.938, 0.953, 1 90.9%, >> /* 3rd bounce to end */ >> 0.984, 1 100% 100% >> ) >> >> >> <img >> src="https://github.com/user-attachments/assets/73aac0d4-0185-47c5-8791-bdb247eb69c8" >> width="400"/> > > Michael Strauß has updated the pull request incrementally with one additional > commit since the last revision: > > rename LINEAR() to ofLinear() The API and docs look good. I left a couple questions on the `ofLinear` method. modules/javafx.graphics/src/main/java/javafx/animation/Interpolator.java line 105: > 103: * the first or last control point is unspecified, it is set to 0 or > 1, respectively. > 104: * > 105: * @param controlPoints the control points Do the control points need to be sorted by their X values (excluding NaN)? The treatment of NaN values regarding of "neighboring control points" suggests that it should be in order for it to be sensible, but perhaps the algorithm doesn't require it? modules/javafx.graphics/src/main/java/javafx/animation/Interpolator.java line 107: > 105: * @param controlPoints the control points > 106: * @throws NullPointerException if {@code controlPoints} is {@code > null} > 107: * @throws IllegalArgumentException if {@code controlPoints} is empty Should it throw IAE if length < 2? ------------- PR Review: https://git.openjdk.org/jfx/pull/1977#pullrequestreview-3512841991 PR Review Comment: https://git.openjdk.org/jfx/pull/1977#discussion_r2566572800 PR Review Comment: https://git.openjdk.org/jfx/pull/1977#discussion_r2566583991
