Bring order in Clutter

I've just sent this to the Clutter mailing list, but I guess that more exposure is fine

As some of you might already know, we have started working on a reference "toolkit" based on Clutter called Tidy.

Tidy is a simple library containing some useful actors and interfaces which can be used by applications developers; it aims to be simple and yet provide some high-level classes that Clutter won't provide.

It is by no means complete, or aiming to replace other toolkits; you can think of it as a reference implementation for a toolkit based on Clutter.

Tidy works as a standalone toolkit, but it can also be used as a copy-and-paste repository, like libegg for the GTK+ stack; because of this, it doesn't provide any kind of API or ABI guarantee, and it probably won't be released in form of tarballs. It can be seen as a constant work in progress.

Right now, Tidy is composed of these classes:

  • TidyActor - a base actor class, implementing stylable actors, with padding and alignment
  • TidyButton - a simple button class
  • TidyFrame - a container capable of aligning its only child
  • TidyListView - a list view using ClutterModel to introspect its structure and contents
    • TidyCellRenderer - base cell renderer class
    • TidyCellRendererDefault - default cell renderer
    • TidyListColumn - base column class
    • TidyListColumnDefault - default column
  • TidyTextureFrame - a texture that efficiently clones a background image so that it can stretch the entire size allocation
  • TidyProxyTexture - a texture class that efficiently caches the source file
    • TidyTextureCache - a cache for textures loaded from on-disk data
  • TidyTextureReflection - an actor using GL to compute a reflection of the parent texture (imported from the toys)
  • TidyStylable - base interface for stylable objects
    • TidyStyle - storage class for a style
  • TidyScrollable - base interface for scrollable actors
    • TidyAdjustment - object for clamping a value between two boundaries (with quantum increments support)
    • TidyScrollBar - scroll bar actor controlling an adjustment
    • TidyViewport - scrollable viewport controlled by a pair of adjustments

There are examples for basically every class and functionality under the tests/ directory.

You can check out Tidy from SVN using:

  svn co http://svn.o-hand.com/repos/tidy/trunk tidy

or browse the repository from your web browser via:

  http://svn.o-hand.com/repos/tidy/trunk/ (raw)
  http://svn.o-hand.com/view/tidy/trunk/ (viewcvs)

Screencasts:

Tidy is still in the prototyping stage; meaning: if it breaks (and it will break) you get to keep both the pieces. There are also rough edges and missing functionality. We'll keep working on it and adding new classes between now and Clutter 0.6 (and after), and also use Tidy as a testing ground for Clutter functionality and staging ground for actors/data structures/interfaces.

In other, Clutter-related news:

  • Iain has been working on a Clutter and WebKit-based browser actor; you'll find a very cool screencast of it on Iain's blog.
  • In Clutter trunk we landed initial support for FBOs and we're fixing bugs/updating bindings/updating documentation toward the 0.6.0 release.
  • It's a bit old, but I've been updating the Vala bindings for Clutter and Clutter-GTK, so you can now use all the bling with Vala; you'll need Vala trunk, but it's worth it.

Have fun!

Comments (12 total)

I observered Clutter's

I observered Clutter's graphic effect. But I think it's poorer compared with TAT. Do you think Clutter will be the competitive mobile UI tool in the future?

@Simon: "poorer" in which

@Simon: "poorer" in which sense? have you tried writing a demo like TAT's? have you tried using shaders? a physics engine? Clutter is already a competitive mobile UI tool.

how can I download the source

how can I download the source codes?
the SVN command seems not workable.

@Lei Y: the SVN checkout

@Lei Y: the SVN checkout works fine here.

I want to start working with

I want to start working with clutter. But i have too many doubts. I don't know where to put them, so I am just shooting them here.
a) Where can I get details documentation/help for beginning my clutter work? [ I can't find any :( ]
b) More info on how clutter can be used in "mobile devices"? Not just MIDs, but smartphones? Windows Mobile?
c) Most of the docs/blogs/discussions here surround Clutter+linux, what about the windows developer?

@Codevalley: a) the "docs"

@Codevalley: a) the "docs" section of the site links to the API reference. you can find examples in the Clutter repository. b) every platform with OpenGL, OpenGLES drivers and for which GLib has support is also supported by Clutter. c) Clutter has a native win32 backend; you can compile on win32 using mingw and oabuild.

I have been using tidy for a

I have been using tidy for a photo viewer application. is there some way to remove the scroll bar which appears automatically..?

clutter has been updated to

clutter has been updated to 0.9.X,but the tidy still need clutter 0.8,how can I make tidy at clutter 0.9 ?need help.

when will you update "tidy"?
Look forward to your reply as soon as possible. :)

@adqi: imho just change the

@adqi: imho just change the version check in tidy to accept 0.9, it should be API/ABI compatible with 0.8

I really wouldn't call "you

I really wouldn't call "you can compile on win32 using mingw and oabuild." a native win32 back-end ;)

Is there any interest on the side of the clutter developers to truly attract windows programmers? I.e. a VS.NET project, non-ogg videos, etc.? I wouldn't blame you if not - but for those of us who have to work on Windows, that's an important question.

@Rachel: the native win32

@Rachel: the native win32 backend refers to the fact that Clutter can be compiled to use WGL and native Windows API. this has nothing to do with the way you build Clutter.

OAH (the successor to OABuild) is easy to use, as far as I know; and we provide a script to build everything, including dependencies, using mingw. obviously, if you find a way to integrate Clutter and its dependencies as VS projects we're all hears, and we gladly accept patches — but I suspect you'd recreate OAH.

You know, I didn’t even see

You know, I didn’t even see Casper’s comment when I made mine (how could I miss that?). Sorry Casper, you had it first!