• Immutable Page
  • Info
  • Attachments

Proposal

  • Modularise lots of animation code, add function pointers everywhere to allow for more hooks for extensions
    • We shouldn't see any animation-specific stuff in generic functions, all that should be moved into hooks
    • We also shouldn't see animation-specific stuff in generic plugin structures, that needs to become part of an extension as well
  • Rework the 'AnimEffect' struct, add elements to specify exact position from / to, width / height time and extra properties as defined in CompOption *'s

  • Split animation into 2 (or even 3!) plugins, event-animations, animation-core, (animation-animations)
    • animation-core does the bulk of the animating
    • event-animation just calls animations on window events
    • (animation-animations would provide the base engines and effects)
  • Modifications to libcompizconfig to allow importing of restricted string info from other metadata

Use Cases

  • A lot of the plugins have to use their own animation code. A good example of such plugins would be group, tile, fadedesktop, squeeze etc. This means that we can integrate their animations into animation extensions and also expand the list of all their possible animations. Also, developers who want to write plugins which have an animation in-between two states can re-use all existing animations
  • With more and more people crying out for a compiz API for windows to animate themselves, we can easily create a plugin that would work with DBUS to facilitate that (or even a library)

Implementation

  1. Decide which bits of animation code need to be modularised out // Half-done - SmSpillaz

  2. AnimEffect struct needs info on each bit of an animation and it's properties as well as a CompOption * for extra options

  3. libcompizconfig patch to allow plugins to import restricted strings from other plugins. This could be done with
    1. <option foo type="list"> <extension import base_plugin="bar" screen=true base_option="foobar"> b. <whitelist> for only allowing certain restricted strings </whitelist> c. <blacklist> for allowing all restricted strings but blacklisting the rest </blacklist>

  4. Make the extension plugins internal to animation and it's extension plugins, not something we want plugins extended by animation to modify
  5. Add a scene-graph like system to animation, specifying animation start, end type, options etc
  6. Split the event handling away from animation into it's own plugin and have it call animation specific functions

Problems

  • The focus (specifically dodge and focus fade) animations are rather complex, due to the fact that they mess with window stacking and whatnot.
  • Notification on animation begin/end.

Development/AnimationRework (last edited 2008-12-21 13:45:02 by d220-238-155-171)