diff --git a/doc/HowToWork-cn.md b/doc/HowToWork-cn.md index 6c1be0c..38a1257 100644 --- a/doc/HowToWork-cn.md +++ b/doc/HowToWork-cn.md @@ -1,5 +1,14 @@ -# 设计原理及代码注释 -## GuiLite的基本原理 +# GuiLite设计原理及代码注释 +- [基本原理](#基本原理) +- [扩展方法](#扩展方法) +- [代码目录结构](#代码目录结构) +- [界面元素管理](#界面元素管理) +- [图形绘制](#图形绘制) +- [文件注释](#文件注释) +- [函数注释](#函数注释) +- [速成路线图](#速成路线图) +*** +## 基本原理 GuiLite只作两个工作:界面元素管理和图形绘制。 界面管理包括: @@ -12,14 +21,14 @@ GuiLite只作两个工作:界面元素管理和图形绘制。 - 设置绘制图层,如果需要多个图层,在基本点线绘制时,需要给出图层的索引值 - 图层处理,在图层界面发生变化的时候,将其正确的组合,并输出到最终显示终端上 -## GuiLite的扩展方法 +## 扩展方法 GuiLite只给出了基本控件(例如:按钮,标签,键盘,选择框)的实现方法,旨在说明控件的实现方法。对于扩展控件,可以选择下面的方式: - 如果开发者需要调整基本控件的细节,可以直接在源代码中修改 - 如果开发者需要构建全新的控件,可以参考基本控件的实现方法,重新实现 对于扩展绘制,例如:画圆,画曲线,可以直接在surface.cpp文件中添加响应的函数接口。 -## 代码介绍 +## 代码目录结构 core: - 实现了底层绘制,图层管理和消息传递 - adapter实现了各个平台(例如:Windows, Linux,Android,iOS,macOS,未知OS或无OS)的封装。 @@ -61,7 +70,7 @@ surface层: frame层: 该层属于surface层的一个部分;它现实叠加界面元素而存在。 -### 文件注释 +## 文件注释 | core 重要程度/文件名称 | 代码简介 | 推荐学习时间 | | --- | --- | --- | | ★★★ wnd.cpp | UI元素的基本类,定义所有的UI元素信息、绘制及管理办法 | 1.5小时 | @@ -94,7 +103,7 @@ frame层: | ★★★ wave_buffer.cpp | 波形数据的缓冲管理 | 1.5小时 | | ★★★ wave_ctrl.cpp | 实现波形控件 | 1.5小时 | -### 函数注释 +## 函数注释 | 函数名称 | display.cpp 函数接口注释 | | --- | --- | | c_display | c_display构造函数,初始化显示参数。输入:物理framebuffer指针,物理显示器宽度,物理显示器高度,surface宽度,surface高度,颜色深度,surface个数/滑动页面的个数 | @@ -102,3 +111,11 @@ frame层: | merge_surface | 横向组合surface,多用于滑动surface。输入:待组合的surface源1,待组合的surface源2,surface源1的起始点x坐标,surface源2的起始点x坐标,surface源1的起始点y坐标,surface源2的起始点y坐标,横向组合的偏移距离;输出:可能改变当前显示内容 | | get_updated_fb | 获取该display的物理framebuffer指针 | | snap_shot | 生成当前显示的快照,并输出到bmp文件 | + +## 速成路线图 +1. 精读源文件wnd.cpp中的connect, on_touch, on_key函数,理解界面元素的串联办法;理解响应触控操作的基本原理;理解响应硬按键的基本原理 +2. 快速浏览surface.cpp中用于绘制的draw_xxx函数,熟悉基本的绘制接口;精读c_surface构造函数,理解c_surface类的各种成员关系 +3. 精读button.cpp文件,初步掌握界面元素的基本开发方法 +4. - 快速浏览HelloStar实例的BuildLinux/main.cpp,理解构建一般Linux应用的办法 + - 快速浏览HelloStar实例的BuildMFC/HelloStarDlg.cpp,理解构建一般Windows应用的办法 + - 快速浏览HelloStar实例的BuildSTM32F103-Keil/USER/main.c,理解构建一般单片机系统的办法