Enlightenment Foundation Libraries

Матеріал з Вікіпедії — вільної енциклопедії.
Перейти до навігації Перейти до пошуку
Enlightenment Foundation Libraries
Тип графічна бібліотека
Розробник Enlightenment
Стабільний випуск 1.15 (4 серпня, 2015; 8 років тому (2015-08-04))
Платформа Linux, macOS[1], FreeBSD[2] і Windows[3]
Операційна система Unix-подібні
Мова програмування C
Стан розробки активний
Ліцензія ліцензія BSD
Репозиторій git.enlightenment.org/core/efl.git/
Вебсайт enlightenment.org

Enlightenment Foundation Libraries, EFL (бібліотеки фундації Enlightenment) — набір програмних бібліотек, компоненти якого складають основу проекту Enlightenment. Бібліотеки EFL дозволяють створювати візуально привабливі графічні інтерфейси, що відзначаються компактністю, низьким споживанням ресурсів і високою продуктивністю. Ці якості роблять EFL привабливим рішенням для побудови інтерфейсів споживчої електроніки і мобільних пристроїв. Наприклад, системи на базі EFL вже використовуються в побутовій техніці Electrolux та телефонах Samsung, EFL є складовою частиною мобільної платформи Tizen.

Компоненти[ред. | ред. код]

Випуск EFL 1.8 (грудень 2013) примітний відходом від практики розрізненої поставки компонентів EFL у формі набору окремо поставляються архівів бібліотек: бібліотеки Ecore, Edje, Eet, Eeze, Efreet, Eina, Eio, Embryo, Emotion, Ethumb, Evas і Evil об'єднані в одне дерево сирцевих текстів і доступні для завантаження в одному архіві. В окремі архіви винесені тільки віджети Elementary, набір Emotion Generic Players з реалізацією базових компонентів для програвання медіаконтенту і колекція модулів Evas Generic Loaders, що дозволяють організувати завантаження форматів svg, xcf, pdf, ps, ppt, doc, docx, xls, avi, mkv, wmv тощо. Модулі зі складу Emotion Generic Players і Evas Generic Loaders виконані у формі відособлених процесів, що взаємодіють з базовою програмою через спільну пам'ять і неіменовані канали, що дозволяє забезпечити продовження роботи програми на базі EFL навіть у разі краху обробника медіаконтенту.

Характеристики основних компонентів EFL:

  • Eina - бібліотека з реалізацією різних типів даних (масив, хеш, список, дерево) і корисних інструментів (робота з логами, оцінка продуктивності, перетворення форматів тощо).
  • Eet - бібліотека для запису довільного набору блоків даних у файл та їхнього подальшого частого читання в довільному порядку
  • Evas - система рендерингу для організації виведення на екран. Evas оперує вмістом екрану як сценою, на якій розміщуються певні об'єкти, стан яких в подальшому відстежується. Подібний підхід, абстрагований від розміщення екранних елементів, дозволяє розробляти інтерфейс користувача з точки зору дизайнера, а не програміста (в коді досить визначити тільки логіку і не думати про промальовуванні і виведення на екран). Evas також абстрагує метод виводу, що дозволяє використовувати один і той же код в поєднанні як з програмним рендерингом, так і з OpenGL. При цьому над сценою можна проробляти такі операції як масштабування, обертання і 3D-трансформації. Evas забезпечує чудову продуктивність навіть при використанні програмних методів візуалізації, без задіяння апаратної акселерації виведення.
  • Ecore - бібліотека для організації циклу обробки подій, що має в своєму арсеналі набір модулів для спрощення пов'язаних з обробкою подій завдань, таких як робота з X, Evas, нитками, мережними з'єднаннями тощо
  • Embryo - бібліотека для написання невеликих компільованих застосунків для вбудованих пристроїв.
  • Edje - графічна бібліотека, яка відокремлює зовнішній вигляд від коду (оформлення задається у вигляді завантажується з файлу шаблону). За своєю суттю Edje займає нішу десь між HTML+CSS і Flash/PSD/SVG. За допомогою цієї бібліотеки можна сформувати насичений користувацький інтерфейс, забезпечений анімованими візуальними ефектами і підтримкою динамічного оформлення (зовнішній вигляд можна повністю модифікувати просто змінивши EDJ-шаблон і не чіпаючи код, при цьому, на відміну від візуальних тем, порядок розташування елементів може бути довільно змінений)
  • Efreet - бібліотека, що дозволяє використовувати в застосунках деякі специфікації Freedesktop.org по роботі з піктограмами, Desktop-файлами і меню.
  • E_Dbus - надбудова над D-Bus API, що дозволяє використовувати його в EFL-застосунках і інтегрувати в основний цикл обробки подій Ecore/main.
  • Eeze - бібліотека для організації взаємодії з зовнішніми пристроями через udev, HAL і інші механізми.
  • Expedite - інструментарій для вимірювання продуктивності, який може тестувати різні рушії Evas, такі як X11, XRender, OpenGL, SDL і DirectFB. Методика тестування максимально наближена до реальних умов.
  • Eio - абстрактний інтерфейс для доступу до файлової системи і реалізації асинхронного вводу/виводу;
  • Emotion - бібліотека для інтеграції в EFL-застосунки підтримки програвання аудіо і відео. Програвання відео може здійснюватися з використанням Gstreamer, Xine, VLC або інших зовнішніх плагінів, при цьому відео відображається як стандартний об'єкт в Evas;
  • Ethumb - бібліотека для формування ескізів зображень, відповідних стандартам freedesktop.org. Ethumb реалізований у вигляді сервісу dbus і клієнтської бібліотеки, взаємодіє з даним сервісом;
  • Elementary - набір віджетів з готовою реалізацією різноманітних графічних елементів (від кнопок і елементів управління, до календаря і модуля редагування тексту).

Додаткові компоненти, що розвиваються в рамках проекту Enlightenment:

  • Enlightenment - віконний менеджер, на базі якого, в поєднанні з такими компонентами, як файловий менеджер, набір віджетів і робочий стіл, формується десктоп-оточення;
  • Ephoto - менеджер для управління колекцією фотографій;
  • Eve - web-браузер на базі рушія WebKit (використовується бібліотека EFLWebKit);
  • Editje - візуальний редактор для проектування інтерфейсу користувача, що оперує файлами .edc і .edj;
  • Біндінг для мов Python, JavaScript, Vala, C++, Perl та Ruby
  • Elua — runtime на основі LuaJIT, призначений для швидкої розробки застосунків мовою Lua з використанням EFL.

Джерела[ред. | ред. код]

Примітки[ред. | ред. код]

Посилання[ред. | ред. код]