RFR: 8242523: Update the animation and clip envelope classes

Nir Lisker nlisker at openjdk.java.net
Wed May 13 15:41:41 UTC 2020


On Thu, 7 May 2020 08:50:23 GMT, Ambarish Rapte <arapte at openjdk.org> wrote:

>> Mostly refactoring in preparation of the upcoming fixes. The changes might look like a lot, but it's mostly rearranging
>> of methods. Summery of changes:
>> ### Animation
>> * Added `isNearZero` and `areNearEqual` methods that deal with `EPSILON` checks.
>> * Added `isStopped`, `isRunning` and `isPaused` convenience methods.
>> * Added `runHandler` method to deal with running the handler.
>> * Moved methods to be grouped closer to where they are used rather than by visibility.
>> * Removed the static import for `TickCalculation`.
>> * Various small subjective readability changes.
>> * Behavioral changes: switching `autoReverse` and `onFinished` properties from "Simple" to "Base" properties; and lazily
>>   initializing the `cuePoints` map.
>> 
>> ### Clip Envelopes
>> * Added `MultiLoopClipEnvelope` as an intermediate parent for infinite and finite clip envelopes.
>> * Rearranged methods order to be consistent.
>> * Replaced the `checkBounds` method with a new overload of `Utils.clamp`.
>> * Renamed `pos` to `cyclePos`.
>> * Extracted common methods: `changedDirection` and `ticksRateChange`
>> * Added internal documentation.
>> 
>> Also corrected a typo in `TicksCalculation` and added an explanation for an animation test.
>
> modules/javafx.graphics/src/main/java/com/sun/scenario/animation/shared/SingleLoopClipEnvelope.java line 102:
> 
>> 101:             long ticksChange = Math.round(currentTick * currentRate);
>> 102:             ticks = Utils.clamp(0, deltaTicks + ticksChange, cycleTicks);
>> 103:             AnimationAccessor.getDefault().playTo(animation, ticks, cycleTicks);
> 
> This could remain unchanged. The `ticksChange` value is not really used elsewhere here.

This change was made with extracting similar code from the other clip envelopes in mind, though there would need to be
some future discussion about it. I think it also makes the code more readable anyway.

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

PR: https://git.openjdk.java.net/jfx/pull/196


More information about the openjfx-dev mailing list