Hi,
I posted some sort of blue-sky canvas ideas a year ago:
http://mail.gnome.org/archives/gtk-devel-list/2005-August/msg00067.html
Since then I've learned HTML/CSS much more thoroughly and also used
Flash a bit. And in the last week needed to write a canvas in 2-3 days
to use for Mugshot. Which is maybe interesting as a case study - "if you
had to strongly prioritize features since you only have 2-3 days, what
would be really important for a real-world application"
The code is here:
http://svn.mugshot.org/dumbhippo/trunk/client/linux/src/hippo-canvas-item.c
http://svn.mugshot.org/dumbhippo/trunk/client/linux/src/hippo-canvas.c
http://svn.mugshot.org/dumbhippo/trunk/client/linux/src/hippo-canvas-box.c
http://svn.mugshot.org/dumbhippo/trunk/client/linux/src/hippo-canvas-text.c
Remember, written in a few days for a single app; not intended to become
a maintained library API. The HippoCanvasBox is the base class for all
the items, i.e. all items are containers.
I think the biggest question about a canvas in gtk in my mind really is
this thing about "how far to go" - how do you define the thing, both in
absolute terms, and relative to the core gtkwidget/gtkcontainer stuff.