基於 C 語言開發的 GUI 框架,功能強大,支持跨平臺同步開發

簡介

AWTK 全稱 Toolkit AnyWhere,是 ZLG 開發的開源 GUI 引擎,旨在為嵌入式系統、WEB、各種小程序、手機和 PC 打造的通用 GUI 引擎,為用戶提供一個功能強大、高效可靠、簡單易用、可輕鬆做出炫酷效果的 GUI 引擎。

運行效果截圖

基於 C 語言開發的 GUI 框架,功能強大,支持跨平臺同步開發

基於 C 語言開發的 GUI 框架,功能強大,支持跨平臺同步開發

基於 C 語言開發的 GUI 框架,功能強大,支持跨平臺同步開發

基於 C 語言開發的 GUI 框架,功能強大,支持跨平臺同步開發

最終目標:

  • 支持開發嵌入式應用程序。
  • 支持開發 Linux 應用程序。
  • 支持開發 MacOS 應用程序。
  • 支持開發 Windows 應用程序。
  • 支持開發 Web APP。
  • 支持開發微信小程序。
  • 支持開發支付寶小程序。
  • 支持開發百度小程序。
  • 支持開發 Android 應用程序。
  • 支持開發 iOS 應用程序。
  • 支持開發 2D 小遊戲。

主要特色

1. 跨平臺

AWTK 是跨平臺的,這有兩個方面的意思:

  • AWTK 本身是跨平臺的。目前支持的平臺有 ZLG AWorks、Windows、Linux、MacOS、嵌入式 Linux 和嵌入式裸系統,可以輕鬆的移植到各種 RTOS 上。AWTK 以後也可以運行在瀏覽器 (即將公測)、各種小程序、Android 和 iOS 等平臺上運行。
  • AWTK 同時還提供了一套跨平臺的基礎工具庫。其中包括鏈表、數組、字符串 (UTF8 和 widechar),事件發射器、值、對象、文件系統、互斥鎖和線程、表達式和字符串解析等等,讓你用 AWTK 開發的應用程序可以真正跨平臺運行。

2. 高效

AWTK 通過一系列的手段保證 AWTK 應用程序高效運行:

  • 通過髒矩算法只更新變化的部分。
  • 支持 3 FrameBuffer 讓界面以最高幀率運行 (可選)。
  • UI 描述文件和主題文件使用高效的二進制格式,解析在瞬間完成。
  • 支持各種 GPU 加速接口。如 OpenGL、DirectX、Vulkan 和 Metal 等。
  • 支持嵌入式平臺的各種 2D 加速接口。目前 STM32 的 DMA2D 和 NXP 的 PXP 接口,廠家可以輕鬆擴展自己的加速接口。

3. 穩定

AWTK 通過下列方式極力讓代碼穩定可靠:

  • 使用 cppcheck 和 facebook infer 進行靜態檢查。
  • 使用 valgrind 進行動態內存檢查。
  • 近兩萬行的單元測試代碼。
  • ZLG 強大 GUI 團隊的支持。
  • 經過多個實際項目驗證。
  • 多平臺 / 多編譯器驗證。
  • 優秀的架構設計。
  • Code Review。
  • 手工測試。

4. 強大

  • 豐富的控件 (持續增加中)。
  • 支持各種圖片格式 (png/jpg/gif/svg)。
  • 支持各種字體格式 (點陣和矢量)。
  • 支持窗口動畫
  • 支持控件動畫
  • 支持高清屏。
  • 支持界面描述文件。
  • 支持主題描述文件。
  • 支持控件佈局策略。
  • 支持對話框高亮策略。
  • 豐富的輔助工具。
  • 支持從低端的 Cortex M3 到各種高端 CPU。
  • 支持無文件系統和自定義的文件系統。
  • 支持裸系統和 RTOS。

5. 易用

  • 大量的示例代碼。
  • 完善的 API 文檔和使用文檔。
  • ZLG 強大的技術支持團隊。
  • 用 AWTK 本身開發的界面編輯器 (開發中)。
  • 聲明式的界面描述語言。一行代碼啟用控件動畫,啟用窗口動畫,顯示圖片 (png/jpg/svg/gif)。

6. 高度擴展性

  • 可以擴展自己的控件。
  • 可以擴展自己的動畫。
  • 可以實現自己的主循環。
  • 可以擴展自己的軟鍵盤。
  • 可以擴展自己的圖片加載器。
  • 可以擴展自己的字體加載器。
  • 可以擴展自己的輸入法引擎。
  • 可以擴展自己的控件佈局算法。
  • 可以擴展自己的對話框高亮策略。
  • 可以實現自己的 LCD 接口。
  • 可以擴展自己的矢量引擎 (如使用 skia/cairo)。
  • 所有擴展組件和內置組件具有相同的待遇。

7. 多種開發語言

AWTK 本身是用 C 語言開發的,可以通過 IDL 生成各種腳本語言的綁定。生成的綁定代碼不是簡單的把 C 語言的 API 映射到腳本語言,而是生成腳本語言原生代碼風格的 API。目前支持以下語言 (以後根據需要增加):

  • C
  • Lua
  • Javascript on jerryscript
  • Javascript on nodejs

8. 國際化

  • 支持 Unicode
  • 支持輸入法
  • 支持字符串翻譯 (實時生效)
  • 支持圖片翻譯 (實時生效)
  • 文字雙向排版 (計劃中)

模擬運行:

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 git vim clang-format

編譯運行 (在終端下,進入 awtk 所在的目錄,並運行下列命令):

scons
./bin/demoui

在 Ubuntu 14 上無法啟動,請參考 FAQ 修改。

Windows

(請先安裝 python,scons 和 Visual Studio C++(版本 >=2017)

編譯運行 (在命令行模式下,進入 awtk 所在的目錄,並運行下列命令):

scons
bin\\demoui

在線演示

  • 基本控件在線演示:http://zlgawtk.bceapp.com/awtk/demos/demoui/index.html

目前 AWTK-WEB 還處於測試階段,部分功能不能正常工作。

文檔

https://gitee.com/zlgopen/awtk/blob/master/docs/README.md

開源地址

  • 主源碼倉庫:https://github.com/zlgopen/awtk
  • 鏡像源碼倉庫:https://gitee.com/zlgopen/awtk


分享到:


相關文章: