前言
上一篇文章主流嵌入式开源GUI比较,对比了MicroWindows、MiniGui、QT、GTK+、OpenGUI和FLTK等GUI框架,其实还有一些框架没有列出来,或者网上资料比较少,搜索不到。这篇文章再介绍一些,有EFL(Enlightenment Foundation Libraries),AWTK(Toolkit AnyWhere),Wayland/Weston,SDL(Simple DirectMedia Layer),DirectFB,LittlevGL,Nuklear
1 EFL
1.1 EFL简介
Enlightenment Foundation Libraries (EFL) 驱动 Enlightenment,它们也可以独立使用或者构建在其他库之上,提供有用的功能并创建强大的应用程序,核心库EFL在速度和大小方面都比其GTK+和Qt等效率更高,并且具有更小的内存占用量,EFL大部分的模块开源协议都是BSD和LGPL v2.1
Enlightenment始于1996年,作为构建X11窗口管理器的项目。从那时起,已经发展了很多,Enlightenment仍然产生了Window Manager,该项目目前正在从X11过渡到Wayland。官方努力开发,最终转向Wayland,因为它是Linux上图形显示层的未来
在开发Window Manager时,还开发了一组库。这些库统称为EFL。 它们涵盖了从主循环到图形,场景图,网络,小部件,数据存储,IPC等一系列功能
EFL是用C语言编写的,默认情况下支持在C中所有公共API。绑定支持存在多种语言,包括Python,C++和Lua。随着基于对象的Unified API的完成,将提供更多语言绑定
官方仍主要支持Linux for Enlightenment,但也有一些努力(基于用户和一些开发人员的帮助和支持)来支持BSD,以及macOS和Windows
稳定的EFL API组件模块,核心EFL组件包括:
组件 | 说明 |
---|---|
Evas | Core scene graph and rendering |
Eina | Data structures and low level helpers |
Edje | UI layout & animation data files for themes |
Eet | Data (de)serialization and storage |
Ecore | Core loop and system abstractions like X11 |
Efreet | Freedesktop.org standards handling |
Eldbus | D-Bus glue and handling |
Embryo | Tiny VM and compiler based on Pawn |
Emotion | Video decode wrapping, glue and abstraction |
Ethumb | Thumbnailing handler |
Ephysics | Physics (bullet) wrapper and Evas glue |
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 |
更多详细信息,可以访问EFL官网,先看一下官方DEMO
1.2 EFL Demo
Rage是一个使用Enlightenment Foundation Libraries(EFL)编写的视频和音频播放器,几乎所有用于视频播放和UI的部件都是由EFL本身或EFL库提供的,如GStreamer,Xine,VLC等。 由于它使用EFL,Rage将在X11,Wayland,甚至是带有Framebuffer控制台(fbcon)或Direct Rendering Manager(DMS)子系统的原始帧缓冲区中工作
Ephoto是使用Enlightenment Foundation Libraries(EFL)编写的图像查看器和编辑器,Ephoto支持:
- 浏览文件系统并以易于使用的网格视图显示图像
- 以单个图像视图格式浏览图像
- 以幻灯片方式查看图像
- 使用剪裁,自动增强,模糊,锐化,亮度/对比度/灰度调整,色调/饱和度/值调整和色彩等级调整等功能编辑图像
- 将艺术滤镜应用于图像,例如黑白和旧照片
- 拖放文件操作可轻松维护您的照片目录
Edi是一个使用Enlightenment Foundation Libraries(EFL)设计和构建的开发环境。 整个项目的目标是为Linux创建一个新的本机开发环境,使之比以往任何时候都更容易上手和运行
EFL库里面还带有大量的DEMO,包括控件的使用,动画特效,GPU渲染等等
1.3 EFL 渲染模式
1.3.1 立即模式
立即模式是图形工具包库中最常用的模式,例如GTK+,GDI和GDI+。 应用程序负责重新绘制无效的客户区部分
应用程序根据需要处理任何绘图问题,并且显示系统绘制一些GUI。 绘图完成后,它将显示在目标中。 此模式允许用户精确控制渲染周期。 但是,如果绘图命令被误用,则可能执行不必要的绘制或根本不绘制
1.3.2 保留模式
采用保留模式的图形系统基本上负责响应渲染应用程序对象的所有重绘请求。 客户端不会直接导致实际渲染,但是当更新部分对象时会重新绘制对象
Evas是EFL中绘图模块,由于Evas使用保留模式,因此无需命令任何绘图。只需要将新图像文件设置为图像对象并移动矩形对象。 Evas计算无效区域,并在渲染时重绘应用程序后面的图像和矩形
EFL和/或基本应用程序在ecore主循