AWTK(Toolkit AnyWhere): 为嵌入式、手机和桌面开发的通用GUI

摘要:
第二阶段使用AWTK本身开发界面编辑器,以验证AWTK支持PC软件开发的能力。第三阶段支持移动应用程序开发,这相对容易,因为第一阶段是将手机上的现代GUI推广到传统的嵌入式系统。XML格式用于在开发过程中描述主题,然后将其转换为紧凑的二进制格式,以提高运行效率并减少内存开销。支持窗口动画、控件动画、幻灯片动画等现代GUI的常见功能。它支持移植到各种RTOS和嵌入式Linux系统,并通过SDL在各种流行的PC/移动电话系统上运行。
AWTK = Toolkit AnyWhere

AWTK是吸取了FTKCanTK的精华,重新开发的GUI,计划分以下几个阶段实施:

  • 第一阶段专注于嵌入式系统,到达并超越TouchGfx/Embedded Wizard的功能。计划在2018/9底完成。
  • 第二阶段用AWTK本身开发界面编辑器(或组态软件IDE),从而验证AWTK支持PC软件开发的能力。计划在2018年底完成。
  • 第三阶段支持Mobile应用程序开发,这一步比较容易,因为在第一阶段就是要把手机上的现代GUI推广到传统嵌入式系统中去。计划在2019/3完成。
  • 第四阶段支持2D游戏开发,把以前开发游戏引擎的经验融合到AWTK中,方便开发交互式的多媒体应用。计划在2019/6完成。

最终目标:

  • 支持开发嵌入式软件。
  • 支持开发Linux应用程序。
  • 支持开发MacOS应用程序。
  • 支持开发Windows应用程序。
  • 支持开发Android应用程序。
  • 支持开发iOS应用程序。
  • 支持开发2D游戏。

其主要特色有:

  1. 小巧。在精简配置下,不依赖第三方软件包,仅需要8K RAM+32K 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. 内置agg/picasso/nanovg实现高质量的矢量动画。

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

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

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

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

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

目前核心功能已经完成(还不具备应用到产品的水平),欢迎有兴趣的朋友移植到各个RTOS。

模拟运行:

Mac

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

brew install scons sdl2

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

scons
./bin/demoui

Ubuntu

如果没有安装scons和libsdl2-dev,请在终端运行下面的命令:

sudo apt-get install scons libsdl2-dev

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

scons
./bin/demoui

Windows

(请先安装scons和Visual Studio C++(版本>2012)

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

scons
bindemoui

各个平台的移植

文档

1.使用文档

2.HowTos

3.内部原理

4.移植文档

5.技术笔记

任务完成情况

TODO.md

免责声明:文章转载自《AWTK(Toolkit AnyWhere): 为嵌入式、手机和桌面开发的通用GUI》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇【Unity优化】图形优化系列02:CPU优化阿里云OSS图片格式转换下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

软件测试理论1

软件测试理论知识点 第一天 1、按是否查看程序内部结构分为:(1)黑盒测试(black-box testing):只关心输入和输出的结果(2)白盒测试(white-box testing):去研究里面的源代码和程序结构2、按是否运行程序分为:(1)静态测试(static testing):是指不实际运行被测软件,而只是静态地检查程序代码、界面或文档可能存在...

谷歌浏览器安装Elasticsearch-head 插件

谷歌浏览器安装Elasticsearch-head 插件 下载该插件,地址:https://github.com/liufengji/es-head/blob/master/elasticsearch-head.crx 下载后的文件名是:elasticsearch-head.crx 打开谷歌浏览器,找到扩展程序,然后打开开发者模式,拖拽上一步的插件进...

使用wps跨ubuntu和windows编辑“.doc”文档。报错“编辑受限”,乱码,软件卡死,强制关闭

背景介绍: 本人使用wps跨ubuntu和windows编辑“.doc”文档。文档一直存放在移动硬盘上,切换系统没有插拔移动硬盘。切换系统好几次,一切正常。 某日早晨,在ubuntu下编辑文档,保存,转入windows下打算继续编辑。windows下打开文档时,报错“编辑受限”,乱码,软件卡死,只能强制关闭。 尝试以下方法: 1)把文档从移动硬盘拷贝到wi...

如何让服务端同时支持WebSocket和SSL加密的WebSocket(即同时支持ws和wss)?

  自从HTML5出来以后,使用WebSocket通信就变得火热起来,基于WebSocket开发的手机APP和手机游戏也越来越多。我的一些开发APP的朋友,开始使用WebSocket通信,后来觉得通信不够安全,想要对通信进行加密,于是自然而然地就想从ws升级到wss。在升级的过程中,就会存在旧的ws客户端与新的wss客户端同时连接到同一个服务器的情况。所以...

终端用户监控:真实用户监控还是模拟监控?

【编者按】本文作者 Dan Kuebrich 是 AppNeta 公司应用性能产品主管,在本文中,作者通过分析两种终端用户监控方式的利弊,结合具体情况为监控的选择提出建议,本文系 OneAPM 工程师编译整理。 终端用户的性能大多是企业判断 Web 应用程序的标准,也就是说应用程序的响应是否能满足企业的标准。研究表明,在用户需求不断增长的同时,页面平均访问...

AI2(App Inventor 2)离线版服务器单机版

注意:每次退出前导出自己的项目到本地做备份。 单机版特点: 1.同步官方最新版本,没有对java源代码进行修改,仅修改warlogin.jsp及warWEB-INFappengine-web.xml;2.无需联网,已经设置Rendezvous服务器为127.0.0.1:8888;3.带有桌面汉化版AI伴侣,已经设置Rendezvous Server为127...