This page describes the goals and means of the Paf Animation Framework (aka PAF). As of now (2008-04-14) no code is written yet, but the API is getting shaped.
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.
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 Modifiers, 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, nothing is implemented yet, it is only a code skeleton. You are welcome to help feel the blanks
Interesting References
GtkTimeline bug http://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
