开源 GUI 引擎 AWTK

开源 GUI 引擎 AWTK

LGPL
C/C++ 查看源码»
跨平台
2019-02-20
lixianjing

拥抱开源,微软做了哪些努力?一大波开源技术成果将亮相微软在线技术峰会>>>

AWTK = Toolkit AnyWhere

随着手机、智能手表等便携式设备的普及,用户对 GUI 的要求越来越高,嵌入式系统对高性能、高可靠性、低功耗、美观炫酷的 GUI 的需求也越来越迫切,ZLG开源 GUI 引擎 AWTK 应运而生。AWTK 全称为 Toolkit AnyWhere,是 ZLG 倾心打造的一套基于 C 语言开发的 GUI 框架。旨在为用户提供一个功能强大、高效可靠、简单易用、可轻松做出炫酷效果的 GUI 引擎,并支持跨平台同步开发,一次编程,终生使用。

最终目标:

  • 支持开发嵌入式软件。

  • 支持开发Linux应用程序。

  • 支持开发MacOS应用程序。

  • 支持开发Windows应用程序。

  • 支持开发Android应用程序。

  • 支持开发iOS应用程序。

  • 支持开发2D游戏。

其主要特色有:

  1. 小巧。在精简配置下,不依赖第三方软件包,仅需要32K RAM + 256K FLASH即可开发一些简单的图形应用程序。

  2. 高效。采用脏矩形裁剪算法,每次只绘制和更新变化的部分,极大提高运行效率和能源利用率。

  3. 稳定。通过良好的架构设计和编程风格、单元测试、动态(valgrind)检查和Code Review保证其运行的稳定性。

  4. 丰富的GUI组件。提供窗口、对话框和各种常用的组件(用户可以配置自己需要的组件,降低对运行环境的要求)。

  5. 支持多种字体格式。内置位图字体(并提供转换工具),也可以使用stb_truetype或freetype加载ttf字体。

  6. 支持多种图片格式。内置位图图片(并提供转换工具),也可以使用stb_image加载png/jpg等格式的图片。

  7. 紧凑的二进制界面描述格式。可以手工编辑的XML格式的界面描述文件,也可以使用Qt Designer设计界面,然后转换成紧凑的二进制界面描述格式,提高运行效率,减小内存开销。

  8. 支持主题并采用紧凑的二进制格式。开发时使用XML格式描述主题,然后转换成紧凑的二进制格式,提高运行效率,减小内存开销。

  9. 支持裸系统,无需OS和文件系统。字体、图片、主题和界面描述数据都编译到代码中,以常量数据的形式存放,运行时无需加载到内存。

  10. 内置nanovg实现高质量的矢量动画,并支持SVG矢量图。

  11. 支持窗口动画、控件动画、滑动动画和高清LCD等现代GUI常见特性。

  12. 支持国际化(Unicode、字符串翻译和输入法等)。

  13. 可移植。支持移植到各种RTOS和嵌入式Linux系统,并通过SDL在各种流行的PC/手机系统上运行。

  14. 脚本化。从API注释中提取API的描述信息,通过这些信息可以自动生成各种脚本的绑定代码。

  15. 支持硬件2D加速(目前支持STM32的DMA2D和NXP的PXP)和GPU加速(OpenGL/OpenGLES/DirectX/Metal),充分挖掘硬件潜能。

  16. 丰富的文档和示例代码。

  17. 采用LGPL协议开源发布,在商业软件中使用时无需付费。

目前核心功能已经完成,内部开始在实际项目中使用了,欢迎有兴趣的朋友评估和尝试,期待您的反馈。

模拟运行:

Mac

如果没有安装scons和sdl2,请在终端运行下面的命令(假定已安装brew):

brew install scons sdl2

编译运行(在终端下,进入awtk所在的目录,并运行下列命令):

scons
./bin/demoui

Ubuntu (版本>=16)

如果没有安装scons和依赖的软件包,请在终端运行下面的命令:

sudo apt-get install scons libsndio-dev libgtk-3-dev libglu1-mesa libglu1-mesa-dev libgl1-mesa-glx libgl1-mesa-dev

编译运行(在终端下,进入awtk所在的目录,并运行下列命令):

scons
./bin/demoui

Windows

(请先安装python2.7,scons和Visual Studio C++(版本>=2017)

编译运行(在命令行模式下,进入awtk所在的目录,并运行下列命令):

scons
bin\demoui

演示视频

1.基本控件演示

各个平台的移植

官方支持平台

移植示例(不定期更新)

各语言的绑定

相关工程

文档

文档

任务完成情况

任务完成情况

最新动态

最新动态

的码云指数为
超过 的项目
加载中

评论(21)

Zero__One
Zero__One
MinGW下能编译吗?
S
Snow-leopard
支持一下
n
nnost88
不错,支持
w
wlw123
另外请问有AWTK架构方面的资料吗,这样我们理解,修改,以及扩展会方便些,谢谢
w
wlw123
git hub下载文档我这里总是下载不下来
hcqenjoy
hcqenjoy
看了视频演示 没看到密码框 能实现密码输入弹出框吗
hxfcsh
hxfcsh
AWTK在哪里下载 移植教程和手册在哪里啊
蓝色大海
有移植到zlg116/zlg217吗?
lixianjing
lixianjing 软件作者

引用来自“lixianjing”的评论

开源中国是非常棒的交流平台,谢谢大家支持。

引用来自“蓝色大海”的评论

右上角的码云(gitee.com)是国产版github, 支持一键克隆github的库,能否官方开个fork? 方便国内高速访问
有:https://gitee.com/zlgopen/awtk
麦壳饼
麦壳饼
没截图

GUI 引擎 AWTK v1.3 发布

今天,AWTK v1.3正式发布。新版AWTK完善了许多细节,增加了部分特性、控件和API等,支持更多功能和更炫酷的效果。我们推出AWTK生态共建计划,诚邀您共同参与嵌入式开发生态建设,实现共赢! ...

2019/11/22 13:04

AWTK 1.2 发布,国产开源 GUI 引擎

AWTK全称为Toolkit AnyWhere,是ZLG倾心打造的一套基于C语言开发的GUI框架。旨在为用户提供一个功能强大、高效可靠、简单易用、可轻松做出炫酷效果的GUI引擎,并支持跨平台同步开发,一次编程...

2019/07/30 09:12

国产开源 GUI 引擎 AWTK 1.1 发布

一、介绍 AWTK全称Toolkit AnyWhere,是ZLG开发的开源GUI引擎,旨在为嵌入式系统、WEB、各种小程序、手机和PC打造的通用GUI引擎,为用户提供一个功能强大、高效可靠、简单易用、可轻松做出炫...

2019/04/25 09:07

ZLG 发布开源 GUI 引擎 AWTK

随着手机、智能手表等便携式设备的普及,用户对 GUI 的要求越来越高,嵌入式系统对高性能、高可靠性、低功耗、美观炫酷的 GUI 的需求也越来越迫切,ZLG开源 GUI 引擎 AWTK 应运而生。 AWTK 全...

2019/02/20 08:58

没有更多内容

加载失败,请刷新页面

没有更多内容

暂无问答

AWTK 在腾讯 TOS 上的移植笔记

AWTK 在腾讯 TOS 上的移植笔记 本文以 STM32f103ze 为例,介绍了 AWTK 在 RTOS 上移植的经验。与其说移植,倒不如说是集成。因为 RTOS 通常没有提供标准的 LCD 驱动接口,显示部分并不需要特...

2019/11/09 08:52
128
0
AWTK WEB版移植笔记-基础

AWTK WEB版移植笔记-基础 将一个C语言写的hello world编译成web版本是很简单的,网上有大量这样的例子。写这样的例子是必要的,让我们能够快速入门,但是实际项目则要复杂的多,这里会介绍一...

2019/09/12 07:16
100
0
AWTK 在 RT-Thread 上的移植笔记

AWTK 在 RT-Thread 上的移植笔记 本文以 STM32f103ze 为例,介绍了 AWTK 在 RTOS 上移植的经验。与其说移植,倒不如说是集成。所做的事情不过是把 AWTK 放到 RTOS 的一个线程中执行而已。 1....

2019/11/09 08:35
335
0
在 AWTK 中 如何让文本滚动起来

如何让文本滚动起来 在很多时候,特别是在小屏幕的硬件上,控件比较小而要显示的文本比较长。 此时,我们需要在控件获得焦点时/或点击时,让文本滚动起来,以便让用户看到完整的信息。 AWTK...

2019/11/15 18:16
75
0
AWTK 中 LCD 接口的四种实现方式

LCD 接口的四种实现方式 LCD 是对显示设备的抽象,提供了基本的绘图函数。自己去实现 LCD 接口虽然不难,但是需要花费不少功夫,AWTK 提供了几种缺省的实现,利用这些缺省的实现,在移植到新...

2019/11/14 11:01
167
0

没有更多内容

加载失败,请刷新页面

没有更多内容

返回顶部
顶部