超輕量UI框架GuiLite

GuiLite概述

GuiLite是最簡單,易學的GUI庫。GuiLite 是由6千行左右的 C/C++ 代碼編寫而成,只使用C++的基本特性(類和虛函數),不涉及複雜語法,圖形繪製以描點為基礎,不使用任何算法。

基本原理

GuiLite只作兩個工作:界面元素管理和圖形繪製。

界面管理包括:

  • 添加/刪除界面元素(例如:按鈕,標籤,對話框等控件),設置對應的文字及位置信息
  • 用戶輸入消息傳遞:根據用戶輸入尋找受影響的界面元素,並回調響應的處理的處理函數
  • 用戶自定義消息傳遞:用戶可以自定義消息響應函數,並自主產生消息;當消息產生時,對應的響應函數會被調用

圖形繪製包括:

  • 基本的點線繪製,例如:畫點,矩形,橫線,豎線等
  • 設置繪製圖層,如果需要多個圖層,在基本點線繪製時,需要給出圖層的索引值
  • 圖層處理,在圖層界面發生變化的時候(例如:打開/關閉對話框),GuiLite將決定各個圖層上的像素點,哪個會被最終顯示在屏幕上

注意:圖形繪製不依賴界面管理,可以獨立的存在,例如,在資源有限的單片機環境,有時候不需要界面元素管理,而直接進行圖形,文字的繪製。

擴展方法

GuiLite只給出了基本控件(例如:按鈕,標籤,鍵盤,選擇框)的實現方法,旨在說明控件的實現方法。對於擴展控件,可以選擇下面的方式:

  • 如果開發者需要調整基本控件的細節,可以直接在源代碼中修改
  • 如果開發者需要構建全新的控件,可以參考基本控件的實現方法,重新實現

對於擴展繪製,例如:畫圓,畫曲線,可以直接在surface.cpp文件中添加響應的函數接口。

代碼目錄結構

core:

  • 實現了底層繪製,圖層管理和消息傳遞
  • adapter實現了各個平臺(例如:Windows, Linux,Android,iOS,macOS,未知OS或無OS)的封裝。
超輕量UI框架GuiLite

widgets:

  • 實現了各種常規控件(例如:按鈕,標籤,鍵盤,波形)及容器(例如:視窗,對話框,滑動頁面),開發者可以根據自己的需要,直接在相應的代碼上進行修改或重繪,開發出有自己風格,特色的界面
  • 實現了用戶的手勢識別(例如:手指滑動,鼠標按下/釋放)的消息傳遞,將用戶的輸入信息傳遞到整個GUI體系樹中,並調用相應的響應回調函數;開發者可以根據自己的需要添加/修改響應回調函數。
超輕量UI框架GuiLite

圖層管理

超輕量UI框架GuiLite

  • display層:該層對應了物理顯存,display層決定了一個顯示終端的最終顯示效果;通常系統中至少有一個display層。
  • surface層:該層屬於display層的一個部分;它為左右滑動而存在,每一張滑動頁面均對應了一個surface層;surface層決定了一個滑動頁面的最終顯示效果;通常1個display層會對應多個surface層。
  • frame層:該層屬於surface層的一個部分;它現實疊加界面元素而存在。


分享到:


相關文章: