[Lumiera] Lumiera Graphics

Ichthyostega prg at ichthyostega.de
Thu Dec 1 21:21:44 CET 2011

Hi Michael,

good evening, good morning :)   -- just a quick answer for now.
Thanks for providing your experimental branch. I'll see how best
to integrate that into the build. I'll report back on that topic
and will then explain you how I did it, hopefully later that evening.

Am 01.12.2011 04:46, schrieb Michael R Fisher:
> The broad concept in my head is this:  There a Gtk Canvas Widget which 
> controls a Screen item that manages a tree of child Items to be drawn.  The 
> Screen would internally manage some kind of "rendered image" that is drawn 
> during the paint cycle.  The "rendered image" should be compatible with 
> Cairo, OpenGL and/or cogl.  The Canvas Widget can tell the Screen to
> "paint", and then grab the rendered image and display it using conventional
> Gtk custom widget commands.  The Gtk Canvas should also forward Gdk events to
> the screen so it can deliver them to individual items, update itself, etc...

To me it seems you're on a really promising path. Obviously it means
"taking the experiments to the next level" and enter GUI library building
domain. Yet in this special case, I'd deem that to be justified: It is
very close to one of the core concerns of our application, and it's
targeting an area (namely building a timeline for editing), which,
while well doable with existing GUI frameworks, usually tends to
drive them to the limits of complexity.

> I think this kind of Widget / Screen separation could also facilitate more 
> than just new Gui widgets.  Perhaps a Screen object could be utilised in 
> simple plugins .... The GUI's for these plugins could use the Canvas as a 
> "WYSIWYG" editor for the lowlevel processing side of it.  Not sure exactly 
> how that would work, but it makes sense in my brain.

Not only in your brain. As I read your design sketch here, it immediately
made "click" in my brain too. Basically I consider it a very bad idea to
expose a *raw* canvas directly to plug-ins. Because that would just be
an invitation for everyone to create yet-another private version of
something present more or less the same way in every other plug-in gui.
It would make "doing the wrong stuff" easy.

To the opposite, your proposal would expose something canvas-like,
but already *decorated* with an Lumiera (application) specific adaptation
layer, which would allow us (the designers concerned about the app as a whole)
to expose hooks for common things, thus gently pushing the users (the plug-in
writers) into the direction beneficial for the whole, because these hooks
will "talk" in terms of our application specific facilities and abstractions.

Hey, looks like you just invented a piece of good design.


More information about the Lumiera mailing list