Introduction to the Enlightenment foundation libraries.

An overview of EFL

Revision History
Revision v0.111th April 2006KK
Initial document. Intro and Evas chapter ready
Revision v0.28th June 2006KK
Edje chapter added.
Revision v0.328th June 2006KK
Ecore chapter and End-Matter added.
Revision v0.354th July 2006KK
Resources section, EFL stack diagram by Raster.


The target audience of this document are UNIX programmers who are interested in the Enlightenment Foundation Libraries (EFL). You must already know C programming. You will not however learn how to program using the EFL. Instead, you will learn why you should program with the EFL. If you ever wanted to evaluate the EFL but did not see any advantages over previous graphic libraries then this document is for you!

Table of Contents

1. Introduction
A little History
Related documentation
Obtaining the EFL libraries
2. The EFL structure
Organization of the Libraries
Brief description of each EFL library
3. Understanding the Evas Canvas
What "Image-based" Means
What "State-aware" Means
Available Programming Facilities
4. Understanding the Edje Layout Engine
Edje as a Layout engine
Edje as Animation/Effects Library
Edje as an IDL
Edje as Logic and Appearance separator
Edje as a Theming Framework
Using Edje to preview your GUIs
Choosing Edje over Evas
5. Understanding the Ecore Infrastructure Library
Using Ecore in your programs
Programming Facilities
Configuration with Ecore
The Event Loop
6. End matter
The rest of the EFL libraries
Get involved

List of Figures

2.1. The EFL Stack viewed by the Marketing Department.
2.2. The EFL Stack viewed in the programmer way.
3.1. Workflow in your favourite Canvas widget
3.2. Workflow in Evas.
4.1. Space wasted after resizing.
4.2. Relative positioning in Edje.
4.3. An example of relative positioning in Edje.
4.4. Adapting automatically to a new window size.
4.5. Computer generated animation using keys.
4.6. Building the UI statically in the application.
4.7. Loading the UI dynamically in the application.
4.8. Separation of GUI and code in Edje.
4.9. Changing skin via a theme.
4.10. Changing completely the appearance via a theme.
4.11. Preview an Edje Theme.
4.12. Live signal testing in Edje.
4.13. Swallowing an object programmed in C into a UI described in Edje.

List of Tables

3.1. Evas versus the competition
3.2. Evas primitives
4.1. Top Level Edje blocks
4.2. The Edje Appearance/Logic separation
4.3. Edje themes (viewed by users)
4.4. Edje vs Evas
5.1. Ecore configuration primitives
5.2. Threads vs Event based programming

List of Examples

3.1. A simple Canvas in object-oriented style (even for C)
3.2. What happens in reality
3.3. Moving an object
3.4. Moving an object with a state-aware Canvas
4.1. Relative coordinates in Edje
4.2. A simple animation (in C)
4.3. The same simple animation in Edje
4.4. The same simple animation in Edje (fixed size version)
4.5. Sending a signal from Edje to C code.