Карстен Хайцлер (Carsten Haitzler, Rasterman), основатель и лидер проекта Enlightenment, представил релиз набора библиотек EFL (Enlightenment Foundation Library) 1.1, который начиная с данного выпуска получил статус альфа-версии (ранее у библиотек был статус экспериментальных выпусков). Входящие в состав EFL библиотеки составляют основу проекта Enlightenment 17, дискуссия о выпуске первого релиза которого недавно развернулась в списке рассылки разработчиков проекта. Перевод EFL на стадию альфа-тестирования означает, что в ближайшее время можно ждать появление первой альфа версии для оконного менеджера и других компонентов пользовательской оболочки Enlightenment 17.

Библиотеки EFL позволяют создавать визуально привлекательные графические интерфейсы, отличающиеся компактностью, низким потреблением ресурсов и высокой производительностью. Данные качества делают EFL привлекательным решением для построения интерфейсов потребительской электроники и мобильных устройств. Например, системы на базе EFL уже используются в продуктах компаний Electrolux, Samsung, ProFUSION, Free.fr и Calaos.

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

  • Eina 1.1.0 - библиотека с реализацией различных типов данных (массив, хэш, список, дерево) и полезных инструментов (работа с логами, оценка производительности, преобразование форматов и т.д.).
    В новой версии добавлены следующие новшества: функции преобразования для UTF8, функция eina_list_move для прямого перемещения узлов между списками, API для парсинга SAX XML, API для вставки отсортированных значений, API для перепаковки mempool, eina_file API для переносимого маппинга памяти, обвязка вокруг средств блокировки нитей, prefix API для определения базового пути к приложению или библиотеке, refcount macro API, binbuf с реализацией бинарных буферов, eina_hash_free_cb_set API, eina_main_loop_is API, eina_strbuf_manage_new/eina_ustrbuf_manage_new APIs, eina_xattr API и eina_hash_murmur3 API;
  • Eet 1.5.0 - библиотека для записи произвольного набора блоков данных в файл и их последующего частого чтения в произвольном порядке.
    В новой версии проведены дополнительные оптимизации потребления памяти и производительности, добавлен API EET_DATA_DESCRIPTOR_ADD_LIST_STRING для работы со списками строк, API eet_node для манипулирования узлами, eet_alias_get API, eet_data_xattr_cipher_get/eet_data_xattr_cipher_set API и EET_DATA_DESCRIPTOR_ADD_BASIC_ARRAY API;
  • Evas 1.1.0 - система рендеринга для организации вывода на экран. Evas оперирует содержимым экрана как сценой, на которой размещаются определенные объекты, состояние которых в последующем отслеживается. Подобный подход, абстрагированный от размещения экранных элементов, позволяет разрабатывать интерфейс пользователя с точки зрения дизайнера, а не программиста (в коде достаточно определить только логику и не думать о прорисовке и выводе на экран). Evas также абстрагирует метод вывода, что позволяет использовать один и тот же код в сочетании как с программным рендерингом, так и с OpenGL. При этом над сценой можно проделывать такие операции как масштабирование, вращение и 3D-трансформации. Evas обеспечивает замечательную производительность даже при использовании программных методов рендеринга, без задействования аппаратной акселерации вывода.
    В новой версии реализовано около 60 улучшений, среди которых: поддержка движка GL Cocoa, API для работы с очень большими изображениями, поддержка цветовых схем NV12 и MT12 для объектов с изображениями, дополнительные параметры управления шрифтами, поддержка кэширования GL-шейдеров и текстур на диске, поддержка внешнего процесса-загрузчика для такого контента, как xcf, pdf и видео, загрузчики для ICO, WBMP и PSD, увеличена скорость кодирвоания и декодирования JPEG, проведены оптимизации производительности для различных компонентов. Расширениы возможности, связанные с блоками для работы с текстом: поддержка спецсмволов, вертикального выравнивания, автовыравнивание, формы для паролей, различные режимы переноса, оптимизация производительности;
  • Ecore 1.1.0 - библиотека для организации цикла обработки событий, имеющая в своем арсенале набор модулей для упрощения связанных с обработкой событий задач, таких как работа с X, Evas, нитями, сетевыми соединениями и т.п.
    В новой версии добавлено около 40 новых функций, улучшена поддержка IPv6, проведена оптимизация потребления памяти, улучшена поддержка платформ Windows и Mac OS X;
  • Embryo 1.1.0 - библиотека для написания небольших компилируемых приложений для встраиваемых устройств.
    В новой версии улучшена поддержка платформы Windows;
  • Edje 1.1.0 - графическая библиотека, отделяющая внешний вид от кода (оформление задается в виде загружаемого из файла шаблона). По своей сути Edje занимает нишу где-то между HTML+CSS и Flash/PSD/SVG. При помощи данной библиотеки можно сформировать насыщенный пользовательский интерфейс, снабженный анимированными визуальными эффектами и поддерживающий динамическое оформление (внешний вид можно полностью поменять просто сменив EDJ-шаблон и не трогая код, при этом, в отличие от визуальных тем, порядок расположения элементов может быть произвольно изменен).
    В новой версии добавлен эффект зеркала, автоматическое выравнивание текста, расширенные опции управления курсором, возможность управления направлением теней, новые виды интерполяции (ACCEL_FAC, DECEL_FAC, SIN_FAC, DIVIS, BOUNCE, SPRING), дополнительные сигналы для обработки событий, связанных с буфером обмена, API для управления параметрами шаблонов панелей ввода данных. Значительно расширен API для скриптов на языке Lua;
  • Efreet 1.1.0 - библиотека, позволяющая использовать в приложениях некоторые специфкации Freedesktop.org по работе с пиктограммами, Desktop-файлами и меню.
    В новой версии добавлена поддержка кэширования в памяти eet-файлов, постоянное кэширование иконок, ускорение операций по обработке строк, ускорение работы с маской "*" в именах файлов;
  • E_Dbus 1.1.0 - надстройка над DBus API, позволяющая использовать его в EFL-приложениях и интегрировать в основной цикл обработки событий Ecore/main.
    В новой версии добавлена поддержка API connman-0.7x, обеспечена поддержка протокола нотификации 1.2, добавлены функции e_notification_action_id_get, e_notification_action_name_get и e_notification_image_init;
  • Eeze 1.1.0 - библиотека для организации взаимодействия с внешними устройствами через udev, hal и другие механизмы.
    В новой версии добавлен API для монтирования дисковых разделов, увеличено число функций, связанных с получением информации о дисках, добавлена утилита eeze_scanner;
  • Expedite 1.1.0 - инструментарий для измерения производительности, который может тестировать различные движки Evas, такие как X11, XRender, OpenGL, SDL и DirectFB. Методика тестирования максимально приближена к реальным условиям.

Дополнительные компоненты, развиваемые в рамках проекта Enlightenment:

  • Elementary - набор виджетов с готовой реализацией разнообразных графических элементов (от кнопок и элементов управления, до календаря и модуля редактирования текста);
  • Enlightenment - оконный менеджер, на базе которого, в сочетании с такими компонентами, как файловый менеджер, набор виджетов и рабочий стол, формируется десктоп-окружение;
  • Ephoto - менеджер для управления коллекцией фотографий;
  • Eve - web-браузер на базе движка WebKit (используется библиотека EFLWebKit);
  • Editje - визуальный редактор для проектирования пользовательского интерфейса, оперирующий файлами .edc и .edj;
  • Eio - абстрактный интерфейс для доступа к файловой системе;
  • Efreet - библиотека, позволяющая использовать в приложениях некоторые специфкации Freedesktop.org по работе с пиктограммами, Desktop-файлами и меню;
  • Ethumb - библиотека для формирования эскизов изображений;
  • Биндинги для языков Python, Javascript, Vala, C++, Perl и Ruby;

Отдельно отмечаются первые успехи отрисовки интерфейса Enlightenment E17 c использованием дисплейного сервера Wayland:



Источник: http://www.opennet.ru/opennews/art.shtml?num=32333