Monday, August 20, 2012

Recent enesim changes

It's been a long time since I write here, but the changes on the enesim stack deserve a new post. In the past months a lot of new features have been added and lots of bugs have been fixed. Just a small update of the changes given that I'm about to leave for vacations ...

Enesim is now more OpenGL friendly, it is possible to render complete SVG files with GL, still not as good as the software based backend, but is evolving nicely.

Egueb and specially Esvg is now able to render animated SVG files, it is still missing input (to be able to interact with the SVG files) and scripting (Javascript) support. But those will come in a near future. As an example, I'm attaching an animated clock rendered (and animated) with Esvg. You'll see some differences between the original file and our own version, mostly the lack of filters and some text glitches.


The past weeks I've been coding again the Eon toolkit and left Esvg for a while. I wanted to make it compile again with the new API changes and be able to start doing applications. So I took the Escen viewer again as an example and here is the result:


2 comments:

Andreas Pokorny said...

Looks nice.
How do you handle user interaction?
Is there some sort of scripting within the escen files? The overall approach seems to be similar to qml - but they suffer horribly from overusing javascript and other issues. (forcing them in now using three threads for getting smooth uis).

Could you post the escen file of such a UI?

turran said...

Thanks.
If you mean "user interaction" on the Escen file itself then, there's no user interaction. Everything is managed in states. If you want an object to do something whenever a mouse click is done, then define a state "mouse_click" and in the application do the glue to receive such event and change the state on the escen object. The idea behind Escen is that it is completely agnostic about objects (all object's definitions are done at runtime) and use (you can use escen for example to store a configuration file given that at the end is a "property=value" system).

About the scripting support, yes. Sometime ago I implemented a "nekovm" script support, I doubt it is still functional. Even so with the recent changes on Ender, it will be very simple to create any kind of script bindings, I just need some time to finish it.

Yes, in a way Escen is similar to QML, or EFL's Edje. IMHO even if the idea is similar, the approach is different. Escen has nothing to do with graphics object *only* or graphics scenes. Is just a way to manipulate generic "objects" that are described with Ender. If those objects are graphics, great! you have your graphics scene. But it can be used too for example to create WM's window effects, is just a matter to describe the window object and you can manipulate it.

The Escen file loaded on the application is found here:

http://code.google.com/p/enesim/source/browse/trunk/escen/examples/button01.escen