轉自:https://blog.csdn.net/absurd/article/details/80958279
AWTK = Toolkit AnyWhere
AWTK是吸取了FTK和CanTK的精華,重新開發的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游戲。
其主要特色有:
-
小巧。在精簡配置下,不依賴第三方軟件包,僅需要8K RAM+32K FLASH即可開發一些簡單的圖形應用程序。
-
高效。采用臟矩形裁剪算法,每次只繪制和更新變化的部分,極大提高運行效率和能源利用率。
-
穩定。通過良好的架構設計和編程風格、單元測試、動態(valgrind)檢查和Code Review保證其運行的穩定性。
-
豐富的GUI組件。提供窗口、對話框和各種常用的組件(用戶可以配置自己需要的組件,降低對運行環境的要求)。
-
支持多種字體格式。內置位圖字體(並提供轉換工具),也可以使用stb_truetype或freetype加載ttf字體。
-
支持多種圖片格式。內置位圖圖片(並提供轉換工具),也可以使用stb_image加載png/jpg等格式的圖片。
-
緊湊的二進制界面描述格式。可以手工編輯的XML格式的界面描述文件,也可以使用Qt Designer設計界面,然后轉換成緊湊的二進制界面描述格式,提高運行效率,減小內存開銷。
-
支持主題並采用緊湊的二進制格式。開發時使用XML格式描述主題,然后轉換成緊湊的二進制格式,提高運行效率,減小內存開銷。
-
支持裸系統,無需OS和文件系統。字體、圖片、主題和界面描述數據都編譯到代碼中,以常量數據的形式存放,運行時無需加載到內存。
-
內置agg/picasso/nanovg實現高質量的矢量動畫。
-
支持窗口動畫、控件動畫和滑動動畫等現代GUI常見特性。
-
支持國際化(Unicode、字符串翻譯和輸入法等)。
-
可移植。支持移植到各種RTOS和嵌入式Linux系統,並通過SDL在各種流行的PC/手機系統上運行。
-
腳本化。從API注釋中提取API的描述信息,通過這些信息可以自動生成各種腳本的綁定代碼。
-
采用LGPL協議開源發布,在商業軟件中使用時無需付費。
目前核心功能已經完成(還不具備應用到產品的水平),歡迎有興趣的朋友移植到各個RTOS。
模擬運行:
Mac
如果沒有安裝scons和sdl2,請在終端運行下面的命令(假定已安裝brew):
brew install scons sdl2
- 1
編譯運行(在終端下,進入awtk所在的目錄,並運行下列命令):
scons
./bin/demoui
- 1
- 2
Ubuntu
如果沒有安裝scons和libsdl2-dev,請在終端運行下面的命令:
sudo apt-get install scons libsdl2-dev
- 1
編譯運行(在終端下,進入awtk所在的目錄,並運行下列命令):
scons
./bin/demoui
- 1
- 2
Windows
(請先安裝scons和Visual Studio C++(版本>2012)
編譯運行(在命令行模式下,進入awtk所在的目錄,並運行下列命令):
scons
bin\demoui
- 1
- 2
各個平台的移植
文檔
1.使用文檔
- AWTK控件的布局參數介紹
- AWTK界面描述文件介紹
- AWTK中的圖片顯示方式
- AWTK中的矢量圖繪圖函數
- AWTK中的事件處理函數
- AWTK中的國際化之字符串翻譯
- AWTK中的主題
- AWTK中的資源管理器
- AWTK中的窗口動畫
- AWTK中的控件動畫
- LCD旋轉(橫屏與豎屏)
- AWTK中的輸入法