Today marks the tenth anniversary of the first release of Syllable Desktop, then plainly called Syllable 0.4.0. The original website and announcement are gone, and many other circumstances of the time have changed quite dramatically. We are happy that Syllable is still here - which, judging by comparable ventures, is a feat to be proud of.
We would like to celebrate by presenting the port of most of the Enlightenment E17 graphics stack to Syllable Desktop. The screenshot shows a 3D animation in the Evas canvas engine. (It shows tearing because the animation runs close to full speed and Syllable does not lock the display when making a screenshot. This is not present in the actual display.)
The Enlightenment Foundation Libraries constitute a cross-platform application framework, from a graphics engine up to a widget set and a desktop environment. The stack is modularised into more than ten packages, so we can use only what we need. We have ported most of the stack but not the desktop and not yet the widget set.
The Evas canvas is a scene graph rendering engine. It does not just draw bitmaps, or even vectors, but handles such elements as objects. Because it knows where they are, it can redraw and therefore move and otherwise manipulate them at will. The screenshot shows three Evas squares objects in a stacking order that can be changed.
On top of the canvas engine is the Edje layout engine. It can do all sorts of manipulations on its layout objects, including 3D transformations. The screenshot shows a text in a rectangle, transformed in a 3D perspective that can be changed and animated.
A number of subsystems that are common in other open source projects have been ported to Syllable Desktop to support Enlightenment. Font rendering is done by FreeType, which Syllable already used, and font management by FontConfig. Other libraries that Enlightenment supports can be ported in the future, such as FriBidi for right-to-left text and Harfbuzz for font shaping of languages with complex glyph interactions.
Enlightenment is an integrated stack. It can be programmed at a high level, for example in the Edje layout engine, but lower levels can be addressed when needed. The engine is consistent across these levels. Events and graphics effects are propagated through this stack until they reach their proper destination. The screenshot shows an Edje layout object programmed to swallow user interface events.
This graphics stack is running on top of the SDL subsystem in Syllable. Therefore, it is currently limited to a single window per application. In the future, a native Syllable backend could be written for Enlightenment. We have ported the latest version of Enlightenment, the new E17 from a month ago. In this, Evas doesn't have a specific SDL backend anymore, but integrates through its generic memory buffer backend. In a similar way, Evas could already be used in a native Syllable C++ application.
We hope to port the E17 widget set Elementary in the future, which reached version 1.0 only a few months ago, to complete this cross-platform application framework. We already have it working on Syllable Server. It is built on top of the Edje layout engine, so widgets can be manipulated in the same ways as Edje and Evas objects.
The screenshot shows an example of how a slider widget can simply be programmed on top of Edje.
|