Merge branch 'master' into dev

This commit is contained in:
idea4good 2019-09-12 17:06:55 +08:00
commit 05e547e738
3 changed files with 56 additions and 17 deletions

View File

@ -202,7 +202,6 @@ void c_surface::fill_rect_on_fb(int x0, int y0, int x1, int y1, unsigned int rgb
}
}
}
}
unsigned int c_surface::get_pixel(int x, int y, unsigned int z_order)

View File

@ -45,15 +45,14 @@ FAQ: Error when open GuiLite project with Visual Studio, reconfigure the project
- Output here: /GuiLite/Objects/GuiLite.lib
## How to port?
Here are 2 options for porting. For option 1: you should build GuiLite library, and move all headers files & library to your project; For option 2: You do not need to build GuiLite library, just merge all GuiLite code into 1 header(GuiLite.h) & 1 source(GuiLite.cpp), then move the 2 files to your project.
Here are 2 options for porting.
We recommend option 2, because of:
- Easy to port - no need to buid library
- Easy to move - just 2 files
- Easy to manage header files - just 1 header file
- Easy to debug - no library binary
### Option 1: 1 Header & 1 Source
1. Execute `1h-1cpp.sh` to merge the whole source code into: 1 header(GuiLite.h) & 1 source(GuiLite.cpp)
2. Move GuiLite.h/GuiLite.cpp to your project
3. Rebuild your project
### Option 1: Header & Library
### Option 2: Headers & 1 Library
- Headers: core_include, widgets_include
- Library: The GuiLite library
1. Move core_include/widgets_include to your project
@ -61,7 +60,10 @@ We recommend option 2, because of:
3. Link GuiLite library to your project
4. Rebuild your project
### Option 2: Header & Source
1. Execute `1h-1cpp.sh` to merge the whole source code into: 1 header(GuiLite.h) & 1 source(GuiLite.cpp)
2. Move GuiLite.h/GuiLite.cpp to your project
3. Rebuild your project
We recommend option 1, because of:
- Easy to port - no need to buid library
- Easy to move - just 2 files
- Easy to manage header files - just 1 header file
- Easy to debug - no library binary
On the other hand, for option 2: you should build GuiLite library, and move all headers files & library to your project.

View File

@ -103,11 +103,49 @@ widgets:
## 函数注释
| 函数名称 | display.cpp 函数接口注释 |
| --- | --- |
| c_display | c_display构造函数初始化显示参数。输入物理framebuffer指针物理显示器宽度物理显示器高度surface宽度surface高度颜色深度surface个数/滑动页面的个数 |
| create_surface | 创建surface/滑动页面。输入: 用户ID图层的个数|
| merge_surface | 横向组合surface多用于滑动surface。输入待组合的surface源1待组合的surface源2surface源1的起始点x坐标surface源2的起始点x坐标surface源1的起始点y坐标surface源2的起始点y坐标横向组合的偏移距离输出可能改变当前显示内容 |
| get_updated_fb | 获取该display的物理framebuffer指针 |
| snap_shot | 生成当前显示的快照并输出到bmp文件 |
| c_display | c_display构造函数。phy_fb物理framebuffer指针display_width物理显示器宽度display_height物理显示器高度surface_widthsurface宽度surface_heightsurface高度color_bytes颜色深度surface_cntsurface个数/滑动页面的个数gfx_op外部绘制接口用以适配非framebuffer的渲染方式如果该值不为空surface在作底层渲染的时候会调用该接口 |
| alloc_surface | 分配surface/滑动页面。usr 用户IDmax_zorder该surface所拥有的图层数量|
| merge_surface | 横向组合两个surface多用于滑动surface。s0源surface 0s1源surface 1x0源surface 0的起始点x坐标x1源surface 1的起始点x坐标y0源surface 0的起始点y坐标y1源surface 1的起始点y坐标offset横向组合的偏移距离 |
| get_updated_fb | 获取该display的framebuffer指针常用来将GUI显示在任意需要的地方。widght用来获取framebuffer的宽度height用来获取framebuffer的高度force_update是否需要强制更新framebuffer的内容如果不需要强制更新且framebuffer没法发生变化将返回NULL |
| snap_shot | 生成当前显示的快照并输出到bitmap文件。file_name快照文件的名称 |
***
| 函数名称 | surface.cpp 函数接口注释 |
| --- | --- |
| c_surface | c_surface构造函数。 displaysurface所属于的displaywidthsurface的宽度heightsurface的高度color_bytes颜色深度|
| set_surface | 设置surface。wnd_root使用者者ID通常为root window其子窗口自动获得该surface的使用权。 max_z_order该surface拥有的图层数量 |
| draw_pixel | 渲染一个像素点。x像素点坐标xy像素点坐标yrgb像素颜色z_order像素所在的图层 |
| draw_pixel_on_fb | 渲染一个像素点 - 底层渲染。x像素点坐标xy像素点坐标yrgb像素颜色 |
| fill_rect | 填充一个矩形。 x0矩形左上角的坐标xy0矩形左上角的坐标yx1矩形右下角的坐标xy1矩形右下角的坐标yrgb矩形的颜色z_order矩形所在的图层|
| fill_rect_on_fb | 填充一个矩形 - 底层渲染。 x0矩形左上角的坐标xy0矩形左上角的坐标yx1矩形右下角的坐标xy1矩形右下角的坐标yrgb矩形的颜色 |
| get_pixel | 获取指定位置的像素点的颜色值。x位置坐标xy位置坐标yz_order位置坐标z图层坐标 |
| draw_hline | 渲染一条横线。x0横线的左边起始坐标xx1横线的右边结尾坐标xy横线的纵向坐标y |
| draw_vline | 渲染一条竖线。x竖线的横向坐标xy0竖线的上起始坐标yy1竖线的下结尾坐标y |
| draw_line | 渲染普通直线。x1直线左端点的坐标xy1直线左端点的坐标yx2直线右端点坐标xy2直线右端点坐标y |
| draw_rect | 渲染矩形。x0矩形左上角的坐标xy0矩形左上角的坐标yx1矩形右下角的坐标xy1矩形右下角的坐标y |
| set_frame_layer_visible_rect | 设置指定图层的可视区域矩形可视区域会根据图层优先级自动进行上下叠加。rect可视矩形的位置信息z_order图层的z坐标图层坐标 |
| flush_screen | 将当前surface的指定矩形区域一次性刷在显示屏上。leftsurface指定区域的左边界坐标topsurface指定区域的上边界坐标rightsurface指定区域的右边界坐标bottomsurface指定区域的下边界坐标 |
| is_valid | 判断给定位置的矩形是否合理是否在surface的范围内。rect矩形区域的坐标信息 |
***
| 函数名称 | wnd.cpp 函数接口注释 |
| --- | --- |
| c_wnd | c_wnd构造函数进行基本初始化 |
| connect | 把自己this、自己的子窗口系列及父窗口连接起来形成完整的UI窗口链条连接完成后自己就可以响应用户输入及各种UI消息。parent父窗口resour_id窗口IDstr自己的窗口标题字符串x自己相对父窗口的坐标xy自己相对父窗口的坐标ywidth窗口宽度height窗口高度p_child_tree子窗口系列 |
| load_child_wnd | 把一系列子窗口连接起来形成完整的UI窗口链条连接完成后所有子窗口都可以响应用户输入及各种UI消息。p_child_tree子窗口系列 |
| disconnect | 把自己this跟父窗口、子窗口脱离连接切断自己与UI的联系不在响应用户输入及各种UI消息。 |
| get_wnd_ptr | 获得指定窗口ID的窗口指针。id窗口ID |
| set_attr | 设置窗口属性包括普通、失效、可见。attr属性值 |
| is_focus_wnd | 判断自己this是否可以获得焦点 |
| set_wnd_pos | 设置自己this相对于父窗口的窗口位置。x窗口左上角坐标xy窗口左上角坐标ywidth窗口宽度height窗口高度 |
| get_wnd_rect | 获取自己this相对于父窗口的位置信息。rect用于输出位置信息 |
| get_screen_rect | 获取自己this相对于UI系统的绝对位置信息。rect用于输出位置信息 |
| set_child_focus | 将自己this的一个子窗口设置为获得讲点状态。 focus_child获得焦点的子窗口|
| add_child_2_tail | 把一个子窗口添加到自己this的子窗口链表的尾部。child被添加的子窗口 |
| get_last_child | 获得自己this子窗口链表尾部的子窗口指针。 |
| unlink_child | 将自己this的子窗口从子窗口链表中脱离出来。child被脱链的子窗口 |
| show_window | 渲染自己this及自己的子窗口 |
| on_touch | 响应用户的触控消息。x用户触控点的坐标xy用户触控点的坐标yaction用户的触控类型包括按下释放 |
| on_key | 响应用户的按键消息。key用户点击的按键键值。 |
| notify_parent | 传递UI消息给自己this的父窗口并调用父窗口对应的响应函数。msg_id消息IDctrl_id自己的资源IDparam消息的参数 |
## 速成路线图
1. 精读源文件wnd.cpp中的connect, on_touch, on_key函数理解界面元素的串联办法理解响应触控操作的基本原理理解响应硬按键的基本原理