@hackage clutterhs0.1

Bindings to the Clutter animation library

=== Clutterhs README ==

Bindings for the Clutter (http://clutter-project.org/) animation library for Haskell.

This currently depends on Gtk2hs from darcs, mostly using the Glib/GObject bindings.

git: http://jayne.hortont.com/git/cgit.cgi/clutterhs.git/

The closest things to examples are in clutter/demo in the git repo, the most useful of which is probably ClutterGame.

This library is currently incomplete. Most of the core parts of Clutter are bound. Basic actors and animations should all be bound (however incompletely tested). Documentation is partially complete. It is mostly copied from the Clutter C documentation, and some parts have not been Haskellified yet. There's also quite a bit of mess internally that will be cleaned up eventually.

If you have any comments, complaints, or suggestions on the API or anything, feel free to email me (arsenm2@rpi.edu).

The only major components that are somewhere between entirely unbound or effectively so are ClutterUnits, ClutterModel related things, and perhaps ClutterScriptable and Animatable. Also many random lower level functions, and things involving threads or timeouts are unbound. Also I haven't started binding COGL yet, but that's also planned.

I've only tested on Linux, and only partially have the X11 backend specific stuff bound (which you also can't yet disable, so this is more or less X11-backend-only for right now). Clutter-gtk is in the source tree, but pretend it doesn't exist since nothing is actually there right now.

As another GObject based GUI library, use should be similar to gtk2hs in many ways. As a simple example of animations, you do something like

animate rectangle EaseOutBounce 3000 [ actorX :-> rnd1 * w, actorY :-> rnd2 * h / 2 + h / 2, actorRotationAngleZ :-> ang, actorOpacity :-> 0 ]

where the last argument to the animate function is a list of attributes and their ending values in the animation. Any writable property of the Clutter Actor you are animating should work, paired with it's ending value with ':->'. The best example currently would be ClutterGame.hs in the demo folder. Better examples and a tutorial are planned.

In general, anything in the Clutter C API that takes a string name of a property and a Gvalue uses an Attribute.