APR
13
2006

Creating organic interfaces

V for Vendetta is so good. Aaron and I went to see it yesterday. On the way there we went to a really great (and cheap) vegan Chinese place and stopped by an arcade (remember those?). Coming back we got asked for money under a bridge. The irony of having people ask for money from two trolls under a bridge runs deep.

We keep working on infrastructure for Plasma and it's really neat to see it progressing every day. At the moment a lot of people is missing QCanvas from Qt 4. Fortunately Qt 4.2 will have a fantastic replacement in the form of a QGraphicsView. Andreas did an amazing job with getting it in its current shape. QGraphicsView is actually a lot, lot better at being a canvas than QCanvas ever could. Today I added support for playing movies in the graphics view. Movies are just items on a canvas so you can compose on top of them, transform them and so on... A screenshot from a sample application is here: . You can see two semi transparent, sheared movies playing on a QGraphicsView.

Now a little about how SVG, QGraphicsView and Plasma will be tied together. I'm working on incorporating SVG model into a QGraphicsView scene. That means that SVG will be parsed directly into a canvas scene. In turn this means that, since all canvas elements are selectable/movable/transformable, we get a SVG editor. I'm hoping to add scripting, video and audio support to the next version of QtSvg. Just like with QtDesigner people who really don't know how to code can create GUI's for their apps for Plasma we'll have the ability to create organic interfaces in the same way. We'll use SVG to actually store the data and just like with ui files, you'll be able to compile them to native code. Compiling we'll mean creating a C++/JS/Ruby/whatever code which creates the QGraphicsView scene for you and hooks it all up.

Hopefully all this will fully replace all the custom HTML based widgets that we currently hack together. We'll have an all gui editor for those which should immensely speed up the process. So basically we're looking at a Flash like app, in the sense that you'll be able to do rapid development of custom vector graphics based interfaces with full multimedia support. Now that is cool.

Comments

The ability to not only display, but also easily create canvas scenes sounds wonderful!

Since you're going to incorporate SVG, you might look at the newly open-sourced Xara Xtreme, whose rendering engine outperforms everything else according to their benchmarks.


By vladc at Thu, 04/13/2006 - 19:21

So we might eventually have an open source editor that can create SVG stuff similar to Flash? Count me excited!

Elijah Lofgren
www.ElijahLofgren.com


By elijahlofgren at Sat, 04/15/2006 - 03:58

We'll use SVG to actually store the data and just like with ui files, you'll be able to compile them to native code. Compiling we'll mean creating a C++/JS/Ruby/whatever code which creates the QGraphicsView scene for you and hooks it all up.

It would be a bummer to have all this nice svg data driven goodness, then to be forced to compile to native code. A link library that loads and interprets the data would be a very good thing to have. This approach allows clean separation of UI and compute engine, runs almost as fast, and gives tremendous flexibility at runtime.

In the long run, you want to make it easy for someone to write a user interface editor (aka gui builder). So much easier if the editor can just link with a library to load and operate all the gui data files, rather than having to compile them, dynamically link, and pray that nothing breaks.

The screen shot and description are wonderful, btw!

Regards,
John


By john d. corbett at Sat, 05/20/2006 - 00:44