Wiki page about-efl.md changed with summary [] by Dmitri Chudinov

This commit is contained in:
Dmitri Chudinov 2022-06-20 06:47:59 -07:00 committed by www-data
parent 16ed0fdae5
commit 5e22b8b66a
1 changed files with 12 additions and 12 deletions

View File

@ -7,7 +7,7 @@
![EFL Core](/_media/efl-core.png)
EFL, or the *Enlightenment Foundation Libraries*, powers millions of systems from mobile phones to set-top boxes, desktops, laptops, game systems and more. EFL is recognized for its forward-thinking approach which allows product designers and developers to offer more than the run-of-the-mill user experience of the past. This is where EFL excels.
EFL, or the *Enlightenment Foundation Libraries*, powers millions of systems from mobile phones to set-top boxes, desktops, laptops, game systems and more. EFL is recognized for its forward-thinking approach, which allows product designers and developers to offer more than the run-of-the-mill user experience of the past. This is where EFL excels.
[Free.fr](http://www.free.fr) has shipped millions of set top boxes in France powered by EFL. The [Openmoko Freerunner project](http://wiki.openmoko.org/wiki/Neo_FreeRunner) also sold thousands of devices using EFL and Enlightenment.
@ -17,17 +17,17 @@ You can [download EFL from here](/download).
## How to Use EFL ##
EFL covers a wide range of functions including graphics, user interfaces, inter-process communication (IPC), audio and even location services. Other powerful features include file handling utilities, thumbnailing and rendering via scene graph.
EFL covers a wide range of functions, including graphics, user interfaces, inter-process communication (IPC), audio and even location services. Other powerful features include file handling utilities, thumbnailing and rendering via scene graph.
## Parts of EFL ###
EFL is made up of a number of libraries which build on top of each other in layers, steadily becoming higher-level, yet allowing access to each level as they go. The higher up you go, the less you have to do yourself. Out widget toolkit is about as high up as you get, while you can still access layers below it for greater control or lower level tasks.
EFL is written in C and exposes all of its APIs by default in C. Binding support exists for several languages including Python, C++ and Lua. As the object based Unified API is completed more language bindings will become available.
EFL is written in C and exposes all of its APIs by default in C. Binding support exists for several languages, including Python, C++ and Lua. As the object based Unified API is completed more language bindings will become available.
The main focus is on C mostly because the underlying libraries have been around for a long time, were originally written in that language and the developers of those libraries prefer C. Moving from C would also limit the audience. C programmers couldn't access a C++ API for instance, whereas a C++ programmer can access both C and C++. The developers aim to have bindings auto-generate so programmers of various languages can get native-like APIs for their chosen language from the same core EFL API set.
The main focus is on C mostly because the underlying libraries have been around for a long time, were originally written in that language, and the developers of those libraries prefer C. Moving from C would also limit the audience. C programmers couldn't access a C++ API for instance, whereas a C++ programmer can access both C and C++. The developers aim to have bindings auto-generate so programmers of various languages can get native-like APIs for their chosen language from the same core EFL API set.
Efl is currently undergoing a transition from our current stable module based presentation where each area has it's own name to a unified structure all under the Efl namespace.
Efl is currently undergoing a transition from our current stable module-based presentation where each area has its own name to a unified structure all under the Efl namespace.
### Unified EFL ###
@ -60,17 +60,17 @@ The stable EFL API components are divided into named modules. Core EFL component
| EIO | Asynchronous I/O handling |
| Evas Generic Loaders | Extra image loaders for complex image types|
| Emotion Generic Players | Extra video decoders (for VLC) |
| Elementary | Widgets and high level abstractions |
| Elementary | Widgets and high-level abstractions |
### The EFL Model ###
![model1](/_media/model1.png "EFL Model")
EFL operates on the same "main loop" concept adopted by GTK+ and many other toolkits. Once you initialize an application it enters the Ecore main loop.
EFL operates on the same "main loop" concept adopted by GTK+ and many other toolkits. Once you initialize an application, it enters the Ecore main loop.
The main loop continuously checks for events, handles timers, callbacks and any other services that have previously been set up until an exit request is sent. By way of an example if EFL were used to create a video game, the mainloop would check for user inputs and update the game world accordingly as you play.
The mainloop is designed efficiently. It will remain idle, consuming virtually no CPU resources until an event occurs. Events can be based on user input such as using the mouse or time-based. Ecore will then handle the event appropriately.
The mainloop is designed efficiently. It will remain idle, consuming virtually no CPU resources until an event occurs. Events can be based on user input, such as using the mouse or time-based. Ecore will then handle the event appropriately.
Read more about [the Ecore main loop here](https://docs.enlightenment.org/auto/group__Ecore__Main__Loop__Group.html).
@ -82,10 +82,10 @@ For more detailed information on the EFL model including events and callbacks se
Whenever you create a basic EFL Application, it uses a basic set of libraries:
* **Elementary** is the top-most library. It provides all the functions you need to create windows, manage layouts and add widgets.
* **Edje** is the library used by Elementary to provide powerful,customisable themes. You can also use Edje to create your own objects and use them in an application.
* **Ecore** is the library which manages the main loop of your application, as outlined above.
* **Evas** is the canvas engine, which draws content. Any graphical objects you create are Evas objects. It handles the entire state of the window by filling the canvas with objects and manipulating their states. Evas objects are created and then manipulated until they are no longer needed, at which point they are deleted.
* **Elementary** is the top-most library. It provides all the functions you need to create windows, manage layouts, and add widgets.
* **Edje** is the library used by Elementary to provide powerful, customisable themes. You can also use Edje to create your own objects and use them in an application.
* **Ecore** is the library that manages the main loop of your application, as outlined above.
* **Evas** is the canvas engine that draws content. Any graphical objects you create are Evas objects. It handles the entire state of the window by filling the canvas with objects and manipulating their states. Evas objects are created and then manipulated until they are no longer needed, at which point they are deleted.
* **Eina** forms the basis of all EFL libraries. It's a toolbox that implements an API for data types in an efficient way. Eina contains all the functions needed to create lists and hashes, manage shared strings, open shared libraries, and manage errors and memory pools.
EFL naturally contains many more libraries than the basic ones outlined above. Visit our [Basic Application Structure](https://www.enlightenment.org/develop/legacy/program_guide/basic_application_structure_pg) page for more information on the core libraries. You can also learn about other libraries in our other programming guides.