This page describes the goals and means of the Paf Animation Framework (aka PAF). This project is supported by Fluendo Embedded.
The API is getting stable, and implementation has started (to see the advancement of things, please have a look at the task list below).
Why?
For the moment, Gnome (and other) applications have to handle themselves all aspects of animations. There is a bug (#444659) open to handle part of this problem, but it is (I think) Gtk specific and somewhat limited (no support for interpolation or implicit animations for instance).
What?
Here is a (not necessarily exhaustive nor fixed) list of stuff that should be in PAF:
PafClock: a timeline, similar to what is implemented in QTimeline or GtkTimeline.
PafModifier: an object that handles the modification of a value.
PafTransformation: an abstract class, for objects to define how a variable should evolve. It uses a PafModifier to update the variable.
PafInterpolation: an abstract object, inheriting from PafTransformation, but being less generic in that it uses a list of (time, value) couples and interpolate between them. Implementations would include things such as a PafStepInterpolation, a PafLinearInterpolation or a PafHermiteInterpolation.
PafAnimation: An object linking a Clock to a list of PafTransformation, which is the part that should be manipulated most by the programmer, unless he uses a...
PafImplicitAnimator: A proxy object to a destination object, that animates a property of the destination object when a property of that name is set on the ImplicitAnimator.
The API is almost complete (it lacks things like getters and setters for properties) and can be seen, partly documented, at http://emont.org/paf/api/.
How?
There is a bzr branch on launchpad. Just do
bzr branch lp:paf
For now, far from feature complete. You are welcome to help fill in the blanks
Task List
Task |
Owner |
Status |
Timing |
||
Clock |
Almost done (running) |
|
Ticker |
Almost done (running) |
|
Transformation |
||
Transformation object |
Almost done (running) |
|
Modifier |
Almost done (running) |
|
EaseIn/Out/InOut |
- |
- |
Interpolation |
||
Operators |
Almost done (running, interpolation branch) |
|
Interpolation object |
in progress (interpolation branch) |
|
Step Interpolation |
in progress (interpolation branch) |
|
Linear Interpolation |
in progress (interpolation branch) |
|
Hermite/Cardinal Interpolation |
- |
- |
Animation |
||
Animation object |
- |
- |
Implicit Animation |
- |
- |
Interesting References
GtkTimeline bug https://bugzilla.gnome.org/show_bug.cgi?id=444659
Pigment Animation bug https://code.fluendo.com/pigment/trac/ticket/125
Blog article explaining PAF https://guij.emont.org/blog/2008/03/10/paf-animation-framework/
Quick study of existing animation systems https://code.fluendo.com/pigment/trac/wiki/ExistingTimingFrameworks
Launchpad project https://launchpad.net/paf