-#define MAX_ARGV 5
+#define MAX_ARGV 7
void command_line_to_argv(char* lpcmdline, const char* argv[MAX_ARGV], int32_t* argc) {
int32_t i = 1;
char* p = lpcmdline;
@@ -98,7 +104,15 @@ void command_line_to_argv(char* lpcmdline, const char* argv[MAX_ARGV], int32_t*
argv[0] = "preview.exe";
for (i = 1; i < MAX_ARGV; i++) {
argv[i] = p;
- p = strchr(p, ' ');
+ if (*p == '\"') {
+ argv[i] = p + 1;
+ p = strchr(p + 1, '\"');
+ if (p == NULL) break;
+ *p++ = '\0';
+ if (*p == 0) break;
+ } else {
+ p = strchr(p, ' ');
+ }
if (p == NULL) {
break;
}
@@ -112,19 +126,31 @@ void command_line_to_argv(char* lpcmdline, const char* argv[MAX_ARGV], int32_t*
return;
}
-int WINAPI WinMain(HINSTANCE hinstance, HINSTANCE hprevinstance, LPSTR lpcmdline, int ncmdshow) {
+int WINAPI wWinMain(HINSTANCE hinstance, HINSTANCE hprevinstance, LPWSTR lpcmdline, int ncmdshow) {
str_t str;
int argc = 1;
+ int32_t len = wcslen(lpcmdline) * 6;
+ char* utf8_line = (char*)TKMEM_ALLOC(len);
+ utf8_from_utf16(lpcmdline, utf8_line, len);
char* argv[MAX_ARGV];
str_init(&str, 1024);
- str_set(&str, lpcmdline);
+ str_set(&str, utf8_line);
command_line_to_argv(str.str, argv, &argc);
#if defined(WIN32)
#if !defined(NDEBUG)
{
- AllocConsole();
- FILE* fp = NULL;
- freopen_s(&fp, "CONOUT$", "w+t", stdout);
+ bool_t log = FALSE;
+ int8_t last_arg = MAX_ARGV - 1;
+ if (argc > last_arg) {
+ if (atoi(argv[last_arg]) == 1) {
+ log = TRUE;
+ }
+ }
+ if (log) {
+ AllocConsole();
+ FILE* fp = NULL;
+ freopen_s(&fp, "CONOUT$", "w+t", stdout);
+ }
}
#endif /*NDEBUG*/
#endif /*WIN32*/
@@ -134,8 +160,11 @@ int main(int argc, char* argv[]) {
#endif
int32_t w = 320;
int32_t h = 480;
+ bool_t have_lang = FALSE;
const char* filename = DEFAULT_UI;
char res_root[MAX_PATH + 1];
+ char country[3];
+ char language[3];
memset(res_root, 0x00, sizeof(res_root));
if (argc > 1) {
@@ -162,7 +191,7 @@ int main(int argc, char* argv[]) {
}
}
- if (argc > 5) {
+ if (argc > 4) {
memcpy(res_root, argv[4], strlen(argv[4]));
} else {
char* p = NULL;
@@ -172,9 +201,19 @@ int main(int argc, char* argv[]) {
*p = '\0';
}
}
-
log_debug("%s %s %d %d %s\n", argv[0], argv[1], w, h, res_root);
- tk_init(w, h, APP_SIMULATOR, NULL, res_root);
+
+ if (argc > 5) {
+ char str[MAX_PATH + 1];
+ memset(str, 0x00, sizeof(str));
+ memcpy(str, argv[5], strlen(argv[5]));
+ tk_strncpy(language, str, 2);
+ tk_strncpy(country, str + 3, 2);
+ have_lang = TRUE;
+ }
+
+ tk_init(w, h, APP_DESKTOP, NULL, res_root);
+ assets_manager_set_res_root(assets_manager(), system_info()->app_root);
#ifdef WITH_FS_RES
system_info_set_default_font(system_info(), "default_full");
#endif /*WITH_FS_RES*/
@@ -183,7 +222,14 @@ int main(int argc, char* argv[]) {
tk_ext_widgets_init();
preview_ui(filename);
+ if (have_lang) {
+ locale_info_change(locale_info(), language, country);
+ }
tk_run();
+#ifdef WIN32
+ TKMEM_FREE(utf8_line);
+#endif
+
return 0;
}
diff --git a/docs/changes.md b/docs/changes.md
index bc92fbc4af..2ccdbe2cf8 100644
--- a/docs/changes.md
+++ b/docs/changes.md
@@ -1,5 +1,49 @@
# 最新动态
+* 2019/10/30
+ * 增加system\_bar\_bottom,支持system_bar在顶部、底部和两者。
+
+* 2019/10/29
+ * 公开函数image\_animation\_next。
+ * 修改SDL输入按键事件的问题(感谢智明提供补丁)。
+
+* 2019/10/29
+ * 完善slideview indicator(感谢朝泽提供补丁)。
+ * 修改svg路径太长的问题(感谢尧燊提供补丁)。
+ * 修改popup支持点击外部关闭的问题(感谢尧燊提供补丁)。
+ * 完善vgcanvas\_nanovg\_set\_font(感谢俊杰提供补丁)。
+ * 修改semaphore.c在 im28x上编译的问题(感谢俊杰提供补丁)。
+ * 修改 build\_asset\_filename\_custom的问题(感谢瑞安提供补丁)。
+
+* 2019/10/27
+ * 增加ostream\_retry。
+
+* 2019/10/26
+ * 完善ring buffer。
+
+* 2019/10/25
+ * widget\_off\_by_\ctx/on\_detach\_parent/on\_attach\_parent
+ * 增加draggable控件。
+ * 修改文档中的错误(感谢俊杰提供补丁)。
+ * 完善主题切换,字体卸载的问题(感谢智明提供补丁)。
+
+* 2019/10/24
+ * 优化fragment frame buffer,在STM32F103等低端平台,内存不足以实现framebuffer时,性能大幅提高(感谢智明提供补丁)。
+ * 修改文档中的错误(感谢俊杰提供补丁)。
+ * 更新awtk config sample。
+ * 修改软键盘弹出时出现屏保的问题。
+ * 完善new.cpp/new.hpp (感谢陈谭提供补丁)。
+ * 修改windows中文件名的问题(感谢大恒提供补丁)
+ * assets\_manager\_set\_custom\_build\_dir增加回调函数上下文。
+
+* 2019/10/23
+ * 修改clone出来的edit的显示问题。
+ * 增加widget\_on\_with\_tag和widget\_off\_by\_tag,方便一次注销多个同类事件。
+ * 完善list view对wheel事件的处理。
+ * 完善text selector处理up/down按键和wheel事件。
+ * 修改SVG无效图片崩溃的BUG。
+ * 增加函数assets\_manager\_set\_custom\_build\_asset\_dir,有时我们需要优先加载用户自定义的资源,加载失败才加载系统缺省的,可用设置一个函数去实现这类功能。
+
* 2019/10/19
* 完善主题切换功能。
* 增加文档[资源目录变更通知](assets_dir_changed.md)
@@ -454,12 +498,10 @@
* 添加 slide\_indicator 控件,默认作为 slide\_view 的指示器
* 修复 scroll\_view 的 bug(scroll\_bar\_m 不会自动隐藏的问题,比如 list\_view 中拖动单位高度后)
* 修复 scroll\_view 的 fix\_end\_offset 失败的问题(比如在 list\_view 中上下拖动直到有空白后,横向移动,松开鼠标 list\_view 不会恢复)
-
-> 感谢朝泽提供以上补丁。
-
- * 增加 main\_loop\_step,方便与 IOTJS 集成。
- * 修改 ui\_loader\_xml 中的昨天引入的 BUG。
- * 修改 stm32 编译警告。
+ > 感谢朝泽提供以上补丁。
+ * 增加 main\_loop\_step,方便与 IOTJS 集成。
+ * 修改 ui\_loader\_xml 中的昨天引入的 BUG。
+ * 修改 stm32 编译警告。
* 2019/06/4
* 修改 widget\_clone 支持拷贝 mutable style。
diff --git a/docs/manual/arg_desc_flags_t.md b/docs/manual/arg_desc_flags_t.md
index 089404e220..9010745908 100644
--- a/docs/manual/arg_desc_flags_t.md
+++ b/docs/manual/arg_desc_flags_t.md
@@ -1,7 +1,6 @@
## arg\_desc\_flags\_t
### 概述
参数描述范围常量定义。
-
### 常量
diff --git a/docs/manual/asset_data_type_t.md b/docs/manual/asset_data_type_t.md
index 54eb4e494d..a0271d471f 100644
--- a/docs/manual/asset_data_type_t.md
+++ b/docs/manual/asset_data_type_t.md
@@ -1,7 +1,6 @@
## asset\_data\_type\_t
### 概述
数据资源类型定义。
-
### 常量
diff --git a/docs/manual/asset_font_type_t.md b/docs/manual/asset_font_type_t.md
index b4df54e83c..d72e176e5c 100644
--- a/docs/manual/asset_font_type_t.md
+++ b/docs/manual/asset_font_type_t.md
@@ -1,7 +1,6 @@
## asset\_font\_type\_t
### 概述
字体资源类型定义。
-
### 常量
diff --git a/docs/manual/asset_image_type_t.md b/docs/manual/asset_image_type_t.md
index 51d2d8074d..86046a7bc5 100644
--- a/docs/manual/asset_image_type_t.md
+++ b/docs/manual/asset_image_type_t.md
@@ -1,7 +1,6 @@
## asset\_image\_type\_t
### 概述
图片资源类型定义。
-
### 常量
diff --git a/docs/manual/asset_info_t.md b/docs/manual/asset_info_t.md
index d61273aa96..f1469adc5c 100644
--- a/docs/manual/asset_info_t.md
+++ b/docs/manual/asset_info_t.md
@@ -2,7 +2,6 @@
### 概述
单个资源的描述信息。
-
----------------------------------
### 属性
@@ -20,7 +19,6 @@
>
资源是否在ROM中。
-
* 类型:uint8\_t
| 特性 | 是否支持 |
@@ -33,7 +31,6 @@
>
名称。
-
* 类型:char*
| 特性 | 是否支持 |
@@ -47,7 +44,6 @@
is\_in\_rom == FALSE时才有效。
-
* 类型:uint32\_t
| 特性 | 是否支持 |
@@ -60,7 +56,6 @@
>
大小。
-
* 类型:uint32\_t
| 特性 | 是否支持 |
@@ -73,7 +68,6 @@
>
子类型。
-
* 类型:uint8\_t
| 特性 | 是否支持 |
@@ -86,7 +80,6 @@
>
类型。
-
* 类型:uint16\_t
| 特性 | 是否支持 |
diff --git a/docs/manual/asset_script_type_t.md b/docs/manual/asset_script_type_t.md
index 23df77cd96..fc5981b3c9 100644
--- a/docs/manual/asset_script_type_t.md
+++ b/docs/manual/asset_script_type_t.md
@@ -1,7 +1,6 @@
## asset\_script\_type\_t
### 概述
脚本资源类型定义。
-
### 常量
diff --git a/docs/manual/asset_type_t.md b/docs/manual/asset_type_t.md
index ab501ecb7a..a2311f4912 100644
--- a/docs/manual/asset_type_t.md
+++ b/docs/manual/asset_type_t.md
@@ -1,7 +1,6 @@
## asset\_type\_t
### 概述
资源类型常量定义。
-
### 常量
diff --git a/docs/manual/asset_ui_type_t.md b/docs/manual/asset_ui_type_t.md
index c9ebca3fa1..adf25c2f90 100644
--- a/docs/manual/asset_ui_type_t.md
+++ b/docs/manual/asset_ui_type_t.md
@@ -1,7 +1,6 @@
## asset\_ui\_type\_t
### 概述
UI资源类型定义。
-
### 常量
diff --git a/docs/manual/assets_manager_t.md b/docs/manual/assets_manager_t.md
index e3a2cb844b..c2aba9b5fa 100644
--- a/docs/manual/assets_manager_t.md
+++ b/docs/manual/assets_manager_t.md
@@ -31,7 +31,6 @@
```
-
----------------------------------
### 函数
@@ -51,6 +50,7 @@
| assets\_manager\_preload | 从文件系统中加载指定的资源,并缓存到内存中。在定义了宏WITH\_FS\_RES时才生效。 |
| assets\_manager\_ref | 在资源管理器的缓存中查找指定的资源并引用它,如果缓存中不存在,尝试加载该资源。 |
| assets\_manager\_set | 设置缺省资源管理器。 |
+| assets\_manager\_set\_custom\_build\_asset\_dir | 设置一个函数,该函数用于生成资源路径。 |
| assets\_manager\_set\_locale\_info | 设置locale_info对象。 |
| assets\_manager\_set\_res\_root | 设置资源所在的目录(其下目录结构请参考demos)。 |
| assets\_manager\_set\_system\_info | 设置system_info对象。 |
@@ -65,7 +65,6 @@
-
* 函数原型:
```
@@ -86,7 +85,6 @@ assets_manager_t* assets_manager ();
-
* 函数原型:
```
@@ -109,7 +107,6 @@ ret_t assets_manager_add (assets_manager_t* am, asset_info_t info);
-
* 函数原型:
```
@@ -131,7 +128,6 @@ ret_t assets_manager_clear_all (assets_manager_t* am);
-
* 函数原型:
```
@@ -154,7 +150,6 @@ ret_t assets_manager_clear_cache (assets_manager_t* am, asset_type_t type);
-
* 函数原型:
```
@@ -176,7 +171,6 @@ assets_manager_t* assets_manager_create (uint32_t init_nr);
-
* 函数原型:
```
@@ -198,7 +192,6 @@ ret_t assets_manager_deinit (assets_manager_t* am);
-
* 函数原型:
```
@@ -220,7 +213,6 @@ ret_t assets_manager_destroy (assets_manager_t* am);
-
* 函数原型:
```
@@ -244,7 +236,6 @@ asset_info_t* assets_manager_find_in_cache (assets_manager_t* am, asset_type_t t
-
* 函数原型:
```
@@ -267,7 +258,6 @@ assets_manager_t* assets_manager_init (assets_manager_t* am, uint32_t init_nr);
-
* 函数原型:
```
@@ -291,7 +281,6 @@ asset_info_t* assets_manager_load (assets_manager_t* am, asset_type_t type, char
-
* 函数原型:
```
@@ -315,7 +304,6 @@ ret_t assets_manager_preload (assets_manager_t* am, asset_type_t type, char* nam
-
* 函数原型:
```
@@ -339,7 +327,6 @@ asset_info_t* assets_manager_ref (assets_manager_t* am, asset_type_t type, char*
-
* 函数原型:
```
@@ -352,6 +339,33 @@ ret_t assets_manager_set (assets_manager_t* am);
| -------- | ----- | --------- |
| 返回值 | ret\_t | 返回RET\_OK表示成功,否则表示失败。 |
| am | assets\_manager\_t* | asset manager对象。 |
+#### assets\_manager\_set\_custom\_build\_asset\_dir 函数
+-----------------------
+
+* 函数功能:
+
+>
设置一个函数,该函数用于生成资源路径。
+
+ >
+ 有时我们需要优先加载用户自定义的资源,加载失败才加载系统缺省的,可用设置一个函数去实现这类功能。
+
+
+
+
+* 函数原型:
+
+```
+ret_t assets_manager_set_custom_build_asset_dir (assets_manager_t* am, assets_manager_build_asset_dir_t custom_build_asset_dir, void* ctx);
+```
+
+* 参数说明:
+
+| 参数 | 类型 | 说明 |
+| -------- | ----- | --------- |
+| 返回值 | ret\_t | 返回RET\_OK表示成功,否则表示失败。 |
+| am | assets\_manager\_t* | asset manager对象。 |
+| custom\_build\_asset\_dir | assets\_manager\_build\_asset\_dir\_t | 回调函数。 |
+| ctx | void* | 回调函数的上下文。 |
#### assets\_manager\_set\_locale\_info 函数
-----------------------
@@ -361,7 +375,6 @@ ret_t assets_manager_set (assets_manager_t* am);
-
* 函数原型:
```
@@ -384,7 +397,6 @@ ret_t assets_manager_set_locale_info (assets_manager_t* am, locale_info_t* local
-
* 函数原型:
```
@@ -407,7 +419,6 @@ ret_t assets_manager_set_res_root (assets_manager_t* am, const char* res_root);
-
* 函数原型:
```
@@ -431,7 +442,6 @@ ret_t assets_manager_set_system_info (assets_manager_t* am, system_info_t* syste
-
* 函数原型:
```
@@ -454,7 +464,6 @@ ret_t assets_manager_set_theme (assets_manager_t* am, const char* theme);
-
* 函数原型:
```
diff --git a/docs/manual/bitmap_flag_t.md b/docs/manual/bitmap_flag_t.md
index 6eb345b294..10e3ed09f8 100644
--- a/docs/manual/bitmap_flag_t.md
+++ b/docs/manual/bitmap_flag_t.md
@@ -1,7 +1,6 @@
## bitmap\_flag\_t
### 概述
位图标志常量定义。
-
### 常量
diff --git a/docs/manual/bitmap_format_t.md b/docs/manual/bitmap_format_t.md
index d82d4b10dc..1e29eb80b9 100644
--- a/docs/manual/bitmap_format_t.md
+++ b/docs/manual/bitmap_format_t.md
@@ -1,7 +1,6 @@
## bitmap\_format\_t
### 概述
位图格式常量定义。
-
### 常量
diff --git a/docs/manual/bitmap_t.md b/docs/manual/bitmap_t.md
index cf692b82d6..a5f8d7190d 100644
--- a/docs/manual/bitmap_t.md
+++ b/docs/manual/bitmap_t.md
@@ -2,7 +2,6 @@
### 概述
位图。
-
----------------------------------
### 函数
@@ -38,7 +37,6 @@
>
创建图片对象(一般供脚本语言中使用)。
-
* 函数原型:
```
@@ -59,7 +57,6 @@ bitmap_t* bitmap_create ();
-
* 函数原型:
```
@@ -83,7 +80,6 @@ bitmap_t* bitmap_create_ex (uint32_t w, uint32_t h, uint32_t line_length, bitmap
>
销毁图片。
-
* 函数原型:
```
@@ -105,7 +101,6 @@ ret_t bitmap_destroy (bitmap_t* bitmap);
-
* 函数原型:
```
@@ -127,7 +122,6 @@ uint32_t bitmap_get_bpp (bitmap_t* bitmap);
-
* 函数原型:
```
@@ -149,7 +143,6 @@ ret_t bitmap_get_line_length (bitmap_t* bitmap);
-
* 函数原型:
```
@@ -174,7 +167,6 @@ ret_t bitmap_get_pixel (bitmap_t* bitmap, uint32_t x, uint32_t y, rgba_t* rgba);
-
* 函数原型:
```
@@ -201,7 +193,6 @@ ret_t bitmap_init (bitmap_t* bitmap, uint32_t w, uint32_t h, bitmap_format_t for
-
* 函数原型:
```
@@ -228,7 +219,6 @@ ret_t bitmap_init_from_rgba (bitmap_t* bitmap, uint32_t w, uint32_t h, bitmap_fo
-
* 函数原型:
```
@@ -247,7 +237,6 @@ ret_t bitmap_set_line_length (bitmap_t* bitmap, uint32_t line_length);
>
图片数据。
-
* 类型:uint8\_t*
| 特性 | 是否支持 |
@@ -259,7 +248,6 @@ ret_t bitmap_set_line_length (bitmap_t* bitmap, uint32_t line_length);
>
标志。请参考{bitmap_flag_t}。
-
* 类型:uint16\_t
| 特性 | 是否支持 |
@@ -272,7 +260,6 @@ ret_t bitmap_set_line_length (bitmap_t* bitmap, uint32_t line_length);
>
格式。请参考{bitmap_format_t}。
-
* 类型:uint16\_t
| 特性 | 是否支持 |
@@ -285,7 +272,6 @@ ret_t bitmap_set_line_length (bitmap_t* bitmap, uint32_t line_length);
>
高度。
-
* 类型:wh\_t
| 特性 | 是否支持 |
@@ -298,7 +284,6 @@ ret_t bitmap_set_line_length (bitmap_t* bitmap, uint32_t line_length);
>
每一行实际占用的内存(也称为stride或pitch),一般情况下为w*bpp。
-
* 类型:uint32\_t
| 特性 | 是否支持 |
@@ -311,7 +296,6 @@ ret_t bitmap_set_line_length (bitmap_t* bitmap, uint32_t line_length);
>
名称。
-
* 类型:const char*
| 特性 | 是否支持 |
@@ -324,7 +308,6 @@ ret_t bitmap_set_line_length (bitmap_t* bitmap, uint32_t line_length);
>
宽度。
-
* 类型:wh\_t
| 特性 | 是否支持 |
diff --git a/docs/manual/button_t.md b/docs/manual/button_t.md
index 1d8196cbae..098e1add2a 100644
--- a/docs/manual/button_t.md
+++ b/docs/manual/button_t.md
@@ -17,7 +17,7 @@
```
> 更多用法请参考:
- [button.xml](https://github.com/zlgopen/awtk/blob/master/demos/assets/raw/ui/button.xml)
+ [button.xml](https://github.com/zlgopen/awtk/blob/master/demos/assets/default/raw/ui/button.xml)
在c代码中使用函数button\_create创建按钮控件。如:
@@ -45,7 +45,7 @@
> 更多用法请参考:
[theme
- default](https://github.com/zlgopen/awtk/blob/master/demos/assets/raw/styles/default.xml#L31)
+ default](https://github.com/zlgopen/awtk/blob/master/demos/assets/default/raw/styles/default.xml#L31)
----------------------------------
diff --git a/docs/manual/calibration_win_t.md b/docs/manual/calibration_win_t.md
index 378881f3a5..44ab35e142 100644
--- a/docs/manual/calibration_win_t.md
+++ b/docs/manual/calibration_win_t.md
@@ -15,7 +15,7 @@
```
> 更多用法请参考:
- [window.xml](https://github.com/zlgopen/awtk/blob/master/demos/assets/raw/ui/calibration_win.xml)
+ [window.xml](https://github.com/zlgopen/awtk/blob/master/demos/assets/default/raw/ui/calibration_win.xml)
在c代码中使用函数calibration\_win\_create创建窗口。如:
diff --git a/docs/manual/canvas_widget_t.md b/docs/manual/canvas_widget_t.md
index 1c8343f91f..322790bf8d 100644
--- a/docs/manual/canvas_widget_t.md
+++ b/docs/manual/canvas_widget_t.md
@@ -15,7 +15,7 @@
```
> 更多用法请参考:
- [canvas_widget.xml](https://github.com/zlgopen/awtk/blob/master/demos/assets/raw/ui/vgcanvas.xml)
+ [canvas_widget.xml](https://github.com/zlgopen/awtk/blob/master/demos/assets/default/raw/ui/vgcanvas.xml)
在c代码中使用函数canvas\_widget\_create创建画布控件。如:
diff --git a/docs/manual/check_button_t.md b/docs/manual/check_button_t.md
index 7dd69464a3..504d526999 100644
--- a/docs/manual/check_button_t.md
+++ b/docs/manual/check_button_t.md
@@ -19,7 +19,7 @@
```
> 更多用法请参考:
- [button.xml](https://github.com/zlgopen/awtk/blob/master/demos/assets/raw/ui/basic.xml)
+ [button.xml](https://github.com/zlgopen/awtk/blob/master/demos/assets/default/raw/ui/basic.xml)
在c代码中使用函数check\_button\_create创建多选按钮控件。如:
@@ -55,7 +55,7 @@
> 更多用法请参考:
[theme
- default](https://github.com/zlgopen/awtk/blob/master/demos/assets/raw/styles/default.xml#L227)
+ default](https://github.com/zlgopen/awtk/blob/master/demos/assets/default/raw/styles/default.xml#L227)
----------------------------------
diff --git a/docs/manual/children_layouter_default_t.md b/docs/manual/children_layouter_default_t.md
index a4459c7d13..96a6fd4f52 100644
--- a/docs/manual/children_layouter_default_t.md
+++ b/docs/manual/children_layouter_default_t.md
@@ -9,7 +9,6 @@
https://github.com/zlgopen/awtk/blob/master/docs/children_layouter_default.md)
-
----------------------------------
### 函数
@@ -29,7 +28,6 @@ https://github.com/zlgopen/awtk/blob/master/docs/children_layouter_default.md)
-
* 函数原型:
```
@@ -50,7 +48,6 @@ children_layouter_t* children_layouter_default_create ();
-
* 函数原型:
```
diff --git a/docs/manual/children_layouter_factory_t.md b/docs/manual/children_layouter_factory_t.md
index 60b1ed555d..6f2ff257cf 100644
--- a/docs/manual/children_layouter_factory_t.md
+++ b/docs/manual/children_layouter_factory_t.md
@@ -3,7 +3,6 @@
子控件布局算法工厂。
-
----------------------------------
### 函数
@@ -24,7 +23,6 @@
>
获取缺省的子控件布局算法工厂对象。
-
* 函数原型:
```
@@ -45,7 +43,6 @@ children_layouter_factory_t* children_layouter_factory ();
-
* 函数原型:
```
@@ -66,7 +63,6 @@ children_layouter_factory_t* children_layouter_factory_create ();
-
* 函数原型:
```
@@ -89,7 +85,6 @@ children_layouter_t* children_layouter_factory_create_layouter (children_layoute
-
* 函数原型:
```
@@ -111,7 +106,6 @@ ret_t children_layouter_factory_destroy (children_layouter_factory_t* factory);
-
* 函数原型:
```
@@ -135,7 +129,6 @@ ret_t children_layouter_factory_register (children_layouter_factory_t* factory,
-
* 函数原型:
```
diff --git a/docs/manual/children_layouter_list_view_t.md b/docs/manual/children_layouter_list_view_t.md
index 641b7912eb..e15ebda845 100644
--- a/docs/manual/children_layouter_list_view_t.md
+++ b/docs/manual/children_layouter_list_view_t.md
@@ -9,7 +9,6 @@
https://github.com/zlgopen/awtk/blob/master/docs/children_layouter_list_view.md)
-
----------------------------------
### 函数
@@ -28,7 +27,6 @@ https://github.com/zlgopen/awtk/blob/master/docs/children_layouter_list_view.md)
-
* 函数原型:
```
diff --git a/docs/manual/children_layouter_t.md b/docs/manual/children_layouter_t.md
index 5d78210493..8b8b2c3fc1 100644
--- a/docs/manual/children_layouter_t.md
+++ b/docs/manual/children_layouter_t.md
@@ -5,7 +5,6 @@
按特定算法对子控件进行排版布局,子类需要实现vtable中的函数。
-
----------------------------------
### 函数
@@ -31,7 +30,6 @@
-
* 函数原型:
```
@@ -54,7 +52,6 @@ children_layouter_t* children_layouter_create (const char* params);
-
* 函数原型:
```
@@ -77,7 +74,6 @@ ret_t children_layouter_destroy (children_layouter_t* layouter);
-
* 函数原型:
```
@@ -102,7 +98,6 @@ ret_t children_layouter_get_param (children_layouter_t* layouter, const char* na
-
* 函数原型:
```
@@ -127,7 +122,6 @@ ret_t children_layouter_get_param_float (children_layouter_t* layouter, const ch
-
* 函数原型:
```
@@ -152,7 +146,6 @@ ret_t children_layouter_get_param_int (children_layouter_t* layouter, const char
-
* 函数原型:
```
@@ -175,7 +168,6 @@ bool_t children_layouter_is_valid (children_layouter_t* layouter);
-
* 函数原型:
```
@@ -199,7 +191,6 @@ ret_t children_layouter_layout (children_layouter_t* layouter, widget_t* widget)
-
* 函数原型:
```
@@ -224,7 +215,6 @@ ret_t children_layouter_set_param (children_layouter_t* layouter, const char* na
-
* 函数原型:
```
@@ -248,7 +238,6 @@ ret_t children_layouter_set_param_str (children_layouter_t* layouter, const char
-
* 函数原型:
```
diff --git a/docs/manual/clip_board_data_type_t.md b/docs/manual/clip_board_data_type_t.md
index 0ceba9fcc7..0499fc3888 100644
--- a/docs/manual/clip_board_data_type_t.md
+++ b/docs/manual/clip_board_data_type_t.md
@@ -1,7 +1,6 @@
## clip\_board\_data\_type\_t
### 概述
剪切板数据类型定义。
-
### 常量
diff --git a/docs/manual/clip_board_t.md b/docs/manual/clip_board_t.md
index 20049efe2a..69088361e3 100644
--- a/docs/manual/clip_board_t.md
+++ b/docs/manual/clip_board_t.md
@@ -2,7 +2,6 @@
### 概述
剪切板接口。
-
----------------------------------
### 函数
@@ -26,7 +25,6 @@
-
* 函数原型:
```
@@ -47,7 +45,6 @@ ret_t clip_board ();
-
* 函数原型:
```
@@ -69,7 +66,6 @@ ret_t clip_board_clear (clip_board_t* cl);
-
* 函数原型:
```
@@ -91,7 +87,6 @@ ret_t clip_board_destroy (clip_board_t* cl);
-
* 函数原型:
```
@@ -116,7 +111,6 @@ ret_t clip_board_get_data (clip_board_t* cl, clip_board_data_type_t* type, void*
-
* 函数原型:
```
@@ -137,7 +131,6 @@ const char* clip_board_get_text ();
-
* 函数原型:
```
@@ -159,7 +152,6 @@ ret_t clip_board_set (clip_board_t* cl);
-
* 函数原型:
```
@@ -184,7 +176,6 @@ ret_t clip_board_set_data (clip_board_t* cl, clip_board_data_type_t type, const
-
* 函数原型:
```
diff --git a/docs/manual/color_parser_t.md b/docs/manual/color_parser_t.md
index bf0e67240d..d062165d93 100644
--- a/docs/manual/color_parser_t.md
+++ b/docs/manual/color_parser_t.md
@@ -13,7 +13,6 @@
```
-
----------------------------------
### 函数
@@ -38,7 +37,6 @@
-
* 函数原型:
```
diff --git a/docs/manual/color_picker_t.md b/docs/manual/color_picker_t.md
index 74aa277bea..b749f959a1 100644
--- a/docs/manual/color_picker_t.md
+++ b/docs/manual/color_picker_t.md
@@ -18,7 +18,7 @@
```
> 更多用法请参考:
- [color\_picker](https://github.com/zlgopen/awtk/blob/master/demos/assets/raw/ui/color_picker.xml)
+ [color\_picker](https://github.com/zlgopen/awtk/blob/master/demos/assets/default/raw/ui/color_picker.xml)
其中的子控件必须按下列规则命名:
diff --git a/docs/manual/color_t.md b/docs/manual/color_t.md
index 3dd560d643..46a2a5c9b1 100644
--- a/docs/manual/color_t.md
+++ b/docs/manual/color_t.md
@@ -3,7 +3,6 @@
颜色。
-
----------------------------------
### 函数
@@ -40,7 +39,6 @@
-
* 函数原型:
```
@@ -67,7 +65,6 @@ uint8_t color_a (color_t* c);
-
* 函数原型:
```
@@ -91,7 +88,6 @@ uint8_t color_b (color_t* c);
-
* 函数原型:
```
@@ -116,7 +112,6 @@ color_t* color_cast (color_t* color);
-
* 函数原型:
```
@@ -144,7 +139,6 @@ color_t* color_create (uint8_t r, uint8_t b, uint8_t g, uint8_t a);
-
* 函数原型:
```
@@ -169,7 +163,6 @@ ret_t color_destroy (color_t* c);
-
* 函数原型:
```
@@ -197,7 +190,6 @@ color_t* color_from_str (color_t* c, const char* str);
-
* 函数原型:
```
@@ -219,7 +211,6 @@ uint8_t color_g (color_t* c);
-
* 函数原型:
```
@@ -249,7 +240,6 @@ color_t color_init (uint8_t r, uint8_t g, uint8_t b, uint8_t a);
-
* 函数原型:
```
@@ -267,7 +257,6 @@ uint8_t color_r (color_t* c);
>
颜色的数值。
-
* 类型:uint32\_t
| 特性 | 是否支持 |
@@ -280,7 +269,6 @@ uint8_t color_r (color_t* c);
>
颜色的RGBA值。
-
* 类型:rgba\_t
| 特性 | 是否支持 |
diff --git a/docs/manual/color_tile_t.md b/docs/manual/color_tile_t.md
index 99ad50d6a7..9eda72ac1f 100644
--- a/docs/manual/color_tile_t.md
+++ b/docs/manual/color_tile_t.md
@@ -17,7 +17,7 @@
```
> 更多用法请参考:
- [color_tile](https://github.com/zlgopen/awtk/blob/master/demos/assets/raw/ui/color_picker_rgb.xml)
+ [color_tile](https://github.com/zlgopen/awtk/blob/master/demos/assets/default/raw/ui/color_picker_rgb.xml)
在c代码中使用函数color_tile\_create创建色块控件。如:
diff --git a/docs/manual/combo_box_ex_t.md b/docs/manual/combo_box_ex_t.md
index 37b2602ce1..ec5d07c349 100644
--- a/docs/manual/combo_box_ex_t.md
+++ b/docs/manual/combo_box_ex_t.md
@@ -5,7 +5,6 @@
可滚动的combo_box控件。
-
----------------------------------
### 函数
@@ -22,7 +21,6 @@
-
* 函数原型:
```
diff --git a/docs/manual/combo_box_t.md b/docs/manual/combo_box_t.md
index def1d5311a..aa6677790d 100644
--- a/docs/manual/combo_box_t.md
+++ b/docs/manual/combo_box_t.md
@@ -39,7 +39,7 @@ tr_text="english"/>
```
>
- 更多用法请参考:[combo_box.xml](https://github.com/zlgopen/awtk/blob/master/demos/assets/raw/ui/combo_box.xml)
+ 更多用法请参考:[combo_box.xml](https://github.com/zlgopen/awtk/blob/master/demos/assets/default/raw/ui/combo_box.xml)
在c代码中使用函数combo\_box\_create创建下拉列表控件。如:
@@ -72,7 +72,7 @@ demo](https://github.com/zlgopen/awtk-c-demos/blob/master/demos/combo_box.c)
```
> 更多用法请参考:[theme
-default](https://github.com/zlgopen/awtk/blob/master/demos/assets/raw/styles/default.xml#L422)
+default](https://github.com/zlgopen/awtk/blob/master/demos/assets/default/raw/styles/default.xml#L422)
----------------------------------
diff --git a/docs/manual/compressor_t.md b/docs/manual/compressor_t.md
index 7adc94bd42..f1f580bc7e 100644
--- a/docs/manual/compressor_t.md
+++ b/docs/manual/compressor_t.md
@@ -4,7 +4,6 @@
compressor interface
-
----------------------------------
### 函数
@@ -26,7 +25,6 @@
-
* 函数原型:
```
@@ -54,7 +52,6 @@ ret_t compressor_compress (compressor_t* compressor, const void* data, uint32_t
-
* 函数原型:
```
@@ -79,7 +76,6 @@ ret_t compressor_destroy (compressor_t* compressor);
-
* 函数原型:
```
diff --git a/docs/manual/darray_t.md b/docs/manual/darray_t.md
index 55deb6a623..884e9a7ad9 100644
--- a/docs/manual/darray_t.md
+++ b/docs/manual/darray_t.md
@@ -20,7 +20,6 @@
```
-
----------------------------------
### 函数
@@ -62,7 +61,6 @@
-
* 函数原型:
```
@@ -84,7 +82,6 @@ ret_t darray_clear (darray_t* darray);
-
* 函数原型:
```
@@ -108,7 +105,6 @@ int32_t darray_count (darray_t* darray, void* ctx);
-
* 函数原型:
```
@@ -132,7 +128,6 @@ darray_t* darray_create (uint32_t capacity, tk_destroy_t destroy, tk_compare_t c
-
* 函数原型:
```
@@ -154,7 +149,6 @@ ret_t darray_deinit (darray_t* darray);
-
* 函数原型:
```
@@ -176,7 +170,6 @@ ret_t darray_destroy (darray_t* darray);
-
* 函数原型:
```
@@ -199,7 +192,6 @@ void* darray_find (darray_t* darray, void* ctx);
-
* 函数原型:
```
@@ -222,7 +214,6 @@ int darray_find_index (darray_t* darray, void* ctx);
-
* 函数原型:
```
@@ -246,7 +237,6 @@ ret_t darray_foreach (darray_t* darray, tk_visit_t visit, void* ctx);
-
* 函数原型:
```
@@ -269,7 +259,6 @@ void* darray_head (darray_t* darray);
-
* 函数原型:
```
@@ -294,7 +283,6 @@ darray_t* darray_init (darray_t* darray, uint32_t* capacity, tk_destroy_t destro
-
* 函数原型:
```
@@ -316,7 +304,6 @@ void* darray_pop (darray_t* darray);
-
* 函数原型:
```
@@ -339,7 +326,6 @@ ret_t darray_push (darray_t* darray, void* data);
-
* 函数原型:
```
@@ -362,7 +348,6 @@ ret_t darray_remove (darray_t* darray, void* ctx);
-
* 函数原型:
```
@@ -385,7 +370,6 @@ ret_t darray_remove_all (darray_t* darray, void* ctx);
-
* 函数原型:
```
@@ -408,7 +392,6 @@ ret_t darray_remove_index (darray_t* darray, uint32_t index);
-
* 函数原型:
```
@@ -426,7 +409,6 @@ void* darray_tail (darray_t* darray);
>
数组的容量大小。
-
* 类型:uint32\_t
| 特性 | 是否支持 |
@@ -438,7 +420,6 @@ void* darray_tail (darray_t* darray);
>
元素比较函数。
-
* 类型:tk\_compare\_t
| 特性 | 是否支持 |
@@ -450,7 +431,6 @@ void* darray_tail (darray_t* darray);
>
元素销毁函数。
-
* 类型:tk\_destroy\_t
| 特性 | 是否支持 |
@@ -462,7 +442,6 @@ void* darray_tail (darray_t* darray);
>
数组中的元素。
-
* 类型:void**
| 特性 | 是否支持 |
@@ -474,7 +453,6 @@ void* darray_tail (darray_t* darray);
>
数组中元素的个数。
-
* 类型:uint32\_t
| 特性 | 是否支持 |
diff --git a/docs/manual/date_time_t.md b/docs/manual/date_time_t.md
index 61fef1f946..1d83482be5 100644
--- a/docs/manual/date_time_t.md
+++ b/docs/manual/date_time_t.md
@@ -5,7 +5,6 @@
> 在嵌入式平台中,在系统初始时,需要调用date\_time\_set\_impl设置实际获取系统时间的函数。
-
----------------------------------
### 函数
@@ -37,7 +36,6 @@
-
* 函数原型:
```
@@ -59,7 +57,6 @@ date_time_t* date_time_create ();
-
* 函数原型:
```
@@ -81,7 +78,6 @@ ret_t date_time_destroy (date_time_t* dt);
-
* 函数原型:
```
@@ -106,7 +102,6 @@ date_time_t* date_time_init (date_time_t* dt);
-
* 函数原型:
```
@@ -124,7 +119,6 @@ ret_t date_time_set_impl (date_time_get_now_t date_time_get_now);
>
日(1-31)。
-
* 类型:int32\_t
| 特性 | 是否支持 |
@@ -137,7 +131,6 @@ ret_t date_time_set_impl (date_time_get_now_t date_time_get_now);
>
时(0 - 23)。
-
* 类型:int32\_t
| 特性 | 是否支持 |
@@ -150,7 +143,6 @@ ret_t date_time_set_impl (date_time_get_now_t date_time_get_now);
>
分(0 - 59)。
-
* 类型:int32\_t
| 特性 | 是否支持 |
@@ -163,7 +155,6 @@ ret_t date_time_set_impl (date_time_get_now_t date_time_get_now);
>
月(1-12)。
-
* 类型:int32\_t
| 特性 | 是否支持 |
@@ -176,7 +167,6 @@ ret_t date_time_set_impl (date_time_get_now_t date_time_get_now);
>
秒(0 - 59)。
-
* 类型:int32\_t
| 特性 | 是否支持 |
@@ -189,7 +179,6 @@ ret_t date_time_set_impl (date_time_get_now_t date_time_get_now);
>
星期几(0-6, Sunday = 0)。
-
* 类型:int32\_t
| 特性 | 是否支持 |
@@ -202,7 +191,6 @@ ret_t date_time_set_impl (date_time_get_now_t date_time_get_now);
>
年。
-
* 类型:int32\_t
| 特性 | 是否支持 |
diff --git a/docs/manual/dialog_highlighter_default_t.md b/docs/manual/dialog_highlighter_default_t.md
index 9641461d9f..a2d2e6139f 100644
--- a/docs/manual/dialog_highlighter_default_t.md
+++ b/docs/manual/dialog_highlighter_default_t.md
@@ -6,7 +6,6 @@
>对于性能不高的平台,建议将start\_alpha和end\_alpha设为相同。
-
----------------------------------
### 函数
@@ -30,7 +29,6 @@
-
* 函数原型:
```
@@ -48,7 +46,6 @@ dialog_highlighter_t* dialog_highlighter_default_create (object_t* args);
>
结束alpha,打开对话框的动画结束(直到对话框被关闭)时的alpha值。
-
* 类型:uint8\_t
#### start\_alpha 属性
@@ -56,6 +53,5 @@ dialog_highlighter_t* dialog_highlighter_default_create (object_t* args);
>
起始alpha,打开对话框的动画开始时的alpha值。
-
* 类型:uint8\_t
diff --git a/docs/manual/dialog_highlighter_factory_t.md b/docs/manual/dialog_highlighter_factory_t.md
index 84eca63772..578b705c3b 100644
--- a/docs/manual/dialog_highlighter_factory_t.md
+++ b/docs/manual/dialog_highlighter_factory_t.md
@@ -3,7 +3,6 @@
对话框高亮策略工厂。
-
----------------------------------
### 函数
@@ -24,7 +23,6 @@
>
获取缺省的对话框高亮策略工厂对象。
-
* 函数原型:
```
@@ -45,7 +43,6 @@ dialog_highlighter_factory_t* dialog_highlighter_factory ();
-
* 函数原型:
```
@@ -66,7 +63,6 @@ dialog_highlighter_factory_t* dialog_highlighter_factory_create ();
-
* 函数原型:
```
@@ -90,7 +86,6 @@ dialog_highlighter_t* dialog_highlighter_factory_create_highlighter (dialog_high
-
* 函数原型:
```
@@ -112,7 +107,6 @@ ret_t dialog_highlighter_factory_destroy (dialog_highlighter_factory_t* factory)
-
* 函数原型:
```
@@ -136,7 +130,6 @@ ret_t dialog_highlighter_factory_register (dialog_highlighter_factory_t* factory
-
* 函数原型:
```
diff --git a/docs/manual/dialog_highlighter_t.md b/docs/manual/dialog_highlighter_t.md
index 89f2760c8b..3820d9706a 100644
--- a/docs/manual/dialog_highlighter_t.md
+++ b/docs/manual/dialog_highlighter_t.md
@@ -5,7 +5,6 @@
> 高亮策略的基本思路是对背景进行处理,比如将背景变暗或变模糊。
-
----------------------------------
### 函数
@@ -37,7 +36,6 @@
-
* 函数原型:
```
@@ -59,7 +57,6 @@ dialog_highlighter_t* dialog_highlighter_create (const dialog_highlighter_vtable
-
* 函数原型:
```
@@ -81,7 +78,6 @@ ret_t dialog_highlighter_destroy (dialog_highlighter_t* h);
-
* 函数原型:
```
@@ -104,7 +100,6 @@ ret_t dialog_highlighter_draw (dialog_highlighter_t* h, float_t percent);
-
* 函数原型:
```
@@ -126,7 +121,6 @@ bool_t dialog_highlighter_is_dynamic (dialog_highlighter_t* h);
-
* 函数原型:
```
@@ -149,7 +143,6 @@ ret_t dialog_highlighter_prepare (dialog_highlighter_t* h, canvas_t* c);
-
* 函数原型:
```
@@ -169,7 +162,6 @@ ret_t dialog_highlighter_set_bg (dialog_highlighter_t* h, bitmap_t* img, framebu
>
画布。
-
* 类型:canvas\_t*
#### dialog 属性
@@ -177,7 +169,6 @@ ret_t dialog_highlighter_set_bg (dialog_highlighter_t* h, bitmap_t* img, framebu
>
对应的对话框。
-
* 类型:widget\_t*
#### img 属性
@@ -185,6 +176,5 @@ ret_t dialog_highlighter_set_bg (dialog_highlighter_t* h, bitmap_t* img, framebu
>
底层窗口的截图。
-
* 类型:bitmap\_t
diff --git a/docs/manual/dialog_highlighter_type_t.md b/docs/manual/dialog_highlighter_type_t.md
index b0db0d621c..58a0e37475 100644
--- a/docs/manual/dialog_highlighter_type_t.md
+++ b/docs/manual/dialog_highlighter_type_t.md
@@ -2,7 +2,6 @@
### 概述
@type string
内置的对话框高亮策略。
-
### 常量
diff --git a/docs/manual/dialog_t.md b/docs/manual/dialog_t.md
index 7ae3ecf490..240d1b2aa1 100644
--- a/docs/manual/dialog_t.md
+++ b/docs/manual/dialog_t.md
@@ -78,7 +78,7 @@
```
> 更多用法请参考:
- [dialog.xml](https://github.com/zlgopen/awtk/blob/master/demos/assets/raw/ui/)
+ [dialog.xml](https://github.com/zlgopen/awtk/blob/master/demos/assets/default/raw/ui/)
> 完整C代码示例请参考:
@@ -96,8 +96,7 @@
> 更多用法请参考:
[theme default]
- (https://github.com/zlgopen/awtk/blob/master/demos/assets/raw/styles/default.xml#L324)
-
+ (https://github.com/zlgopen/awtk/blob/master/demos/assets/default/raw/styles/default.xml#L324)
----------------------------------
@@ -136,7 +135,6 @@
-
* 函数原型:
```
@@ -161,7 +159,6 @@ widget_t* dialog_cast (widget_t* widget);
-
* 函数原型:
```
@@ -184,7 +181,6 @@ ret_t dialog_confirm (const char* title, const char* text);
-
* 函数原型:
```
@@ -210,7 +206,6 @@ widget_t* dialog_create (widget_t* parent, xy_t x, xy_t y, wh_t w, wh_t h);
-
* 函数原型:
```
@@ -236,7 +231,6 @@ widget_t* dialog_create_simple (widget_t* parent, xy_t x, xy_t y, wh_t w, wh_t h
-
* 函数原型:
```
@@ -258,7 +252,6 @@ widget_t* dialog_get_client (widget_t* widget);
-
* 函数原型:
```
@@ -283,7 +276,6 @@ widget_t* dialog_get_title (widget_t* widget);
-
* 函数原型:
```
@@ -307,7 +299,6 @@ ret_t dialog_info (const char* title, const char* text);
-
* 函数原型:
```
@@ -330,7 +321,6 @@ bool_t dialog_is_modal (widget_t* widget);
-
* 函数原型:
```
@@ -354,7 +344,6 @@ bool_t dialog_is_quited (widget_t* widget);
-
* 函数原型:
```
@@ -378,7 +367,6 @@ ret_t dialog_modal (widget_t* widget);
-
* 函数原型:
```
@@ -403,7 +391,6 @@ widget_t* dialog_open (const char* name);
-
* 函数原型:
```
@@ -426,7 +413,6 @@ ret_t dialog_quit (widget_t* widget, uint32_t code);
-
* 函数原型:
```
@@ -452,7 +438,6 @@ ret_t dialog_set_title (widget_t* widget, char* title);
-
* 函数原型:
```
@@ -478,7 +463,6 @@ ret_t dialog_toast (const char* text, uint32_t duration);
-
* 函数原型:
```
@@ -497,7 +481,6 @@ ret_t dialog_warn (const char* title, const char* text);
>
对话框高亮策略。
-
* 类型:const char*
| 特性 | 是否支持 |
diff --git a/docs/manual/digit_clock_t.md b/docs/manual/digit_clock_t.md
index fd9d2eb7c2..302b08f86f 100644
--- a/docs/manual/digit_clock_t.md
+++ b/docs/manual/digit_clock_t.md
@@ -13,7 +13,7 @@
```
> 更多用法请参考:[digit\_clock.xml](
- https://github.com/zlgopen/awtk/blob/master/demos/assets/raw/ui/digit_clock.xml)
+ https://github.com/zlgopen/awtk/blob/master/demos/assets/default/raw/ui/digit_clock.xml)
在c代码中使用函数digit\_clock\_create创建数字时钟控件。如:
@@ -34,7 +34,7 @@
```
> 更多用法请参考:[theme default](
- https://github.com/zlgopen/awtk/blob/master/demos/assets/raw/styles/default.xml#L138)
+ https://github.com/zlgopen/awtk/blob/master/demos/assets/default/raw/styles/default.xml#L138)
----------------------------------
diff --git a/docs/manual/draggable_t.md b/docs/manual/draggable_t.md
new file mode 100644
index 0000000000..e7e4be48d2
--- /dev/null
+++ b/docs/manual/draggable_t.md
@@ -0,0 +1,384 @@
+## draggable\_t
+### 概述
+![image](images/draggable_t_0.png)
+
+
+ 将draggable放入目标控件,即可让目标控件或当前窗口可以被拖动。
+
+ draggable\_t是[widget\_t](widget_t.md)的子类控件,widget\_t的函数均适用于draggable\_t控件。
+
+ 在xml中使用"draggable"标签创建draggable控件。如:
+
+ ```xml
+
+ ```
+
+ 拖动对话框标题时移动对话框:
+
+ ```xml
+
+
+
+ ```
+
+ > 更多用法请参考:
+ [draggable.xml](https://github.com/zlgopen/awtk/blob/master/demos/assets/default/raw/ui/draggable.xml)
+
+ 在c代码中使用函数draggable\_create创建按钮控件。如:
+
+ ```c
+ widget_t* draggable = draggable_create(target, 0, 0, 0, 0);
+ ```
+
+ > draggable本身不可见,故无需style。
+
+
+----------------------------------
+### 函数
+
+
+| 函数名称 | 说明 |
+| -------- | ------------ |
+| draggable\_cast | 转换为draggable对象(供脚本语言使用)。 |
+| draggable\_create | 创建draggable对象 |
+| draggable\_set\_bottom | 设置bottom。 |
+| draggable\_set\_drag\_window | 设置drag_window。 |
+| draggable\_set\_horizontal\_only | 设置horizontal_only。 |
+| draggable\_set\_left | 设置left。 |
+| draggable\_set\_right | 设置right。 |
+| draggable\_set\_top | 设置top。 |
+| draggable\_set\_vertical\_only | 设置vertical_only。 |
+### 属性
+
+
+| 属性名称 | 类型 | 说明 |
+| -------- | ----- | ------------ |
+| bottom | int32\_t | 拖动范围的底部限制。缺省为父控件的底部。 |
+| drag\_window | bool\_t | 拖动窗口而不是父控件。比如放在对话框的titlebar上,拖动titlebar其实是希望拖动对话框。 |
+| horizontal\_only | bool\_t | 只允许水平拖动。 |
+| left | int32\_t | 拖动范围的左边限制。缺省为父控件的左边。 |
+| right | int32\_t | 拖动范围的右边限制。缺省为父控件的右边边。 |
+| top | int32\_t | 拖动范围的顶部限制。缺省为父控件的顶部。 |
+| vertical\_only | bool\_t | 只允许垂直拖动。 |
+#### draggable\_cast 函数
+-----------------------
+
+* 函数功能:
+
+>
转换为draggable对象(供脚本语言使用)。
+
+
+
+* 函数原型:
+
+```
+widget_t* draggable_cast (widget_t* widget);
+```
+
+* 参数说明:
+
+| 参数 | 类型 | 说明 |
+| -------- | ----- | --------- |
+| 返回值 | widget\_t* | draggable对象。 |
+| widget | widget\_t* | draggable对象。 |
+#### draggable\_create 函数
+-----------------------
+
+* 函数功能:
+
+>
创建draggable对象
+
+
+
+* 函数原型:
+
+```
+widget_t* draggable_create (widget_t* parent, xy_t x, xy_t y, wh_t w, wh_t h);
+```
+
+* 参数说明:
+
+| 参数 | 类型 | 说明 |
+| -------- | ----- | --------- |
+| 返回值 | widget\_t* | 对象。 |
+| parent | widget\_t* | 父控件 |
+| x | xy\_t | x坐标 |
+| y | xy\_t | y坐标 |
+| w | wh\_t | 宽度 |
+| h | wh\_t | 高度 |
+#### draggable\_set\_bottom 函数
+-----------------------
+
+* 函数功能:
+
+>
设置bottom。
+
+
+
+* 函数原型:
+
+```
+ret_t draggable_set_bottom (widget_t* widget, uint32_t bottom);
+```
+
+* 参数说明:
+
+| 参数 | 类型 | 说明 |
+| -------- | ----- | --------- |
+| 返回值 | ret\_t | 返回RET\_OK表示成功,否则表示失败。 |
+| widget | widget\_t* | widget对象。 |
+| bottom | uint32\_t | 拖动范围的底部限制。缺省为父控件的底部。 |
+#### draggable\_set\_drag\_window 函数
+-----------------------
+
+* 函数功能:
+
+>
设置drag_window。
+ 拖动窗口而不是父控件。比如放在对话框的titlebar上,拖动titlebar其实是希望拖动对话框。
+
+
+
+* 函数原型:
+
+```
+ret_t draggable_set_drag_window (widget_t* widget, uint32_t );
+```
+
+* 参数说明:
+
+| 参数 | 类型 | 说明 |
+| -------- | ----- | --------- |
+| 返回值 | ret\_t | 返回RET\_OK表示成功,否则表示失败。 |
+| widget | widget\_t* | widget对象。 |
+| | uint32\_t | w |
+#### draggable\_set\_horizontal\_only 函数
+-----------------------
+
+* 函数功能:
+
+>
设置horizontal_only。
+
+
+
+* 函数原型:
+
+```
+ret_t draggable_set_horizontal_only (widget_t* widget, uint32_t horizontal_only);
+```
+
+* 参数说明:
+
+| 参数 | 类型 | 说明 |
+| -------- | ----- | --------- |
+| 返回值 | ret\_t | 返回RET\_OK表示成功,否则表示失败。 |
+| widget | widget\_t* | widget对象。 |
+| horizontal\_only | uint32\_t | 只允许水平拖动。 |
+#### draggable\_set\_left 函数
+-----------------------
+
+* 函数功能:
+
+>
设置left。
+
+
+
+* 函数原型:
+
+```
+ret_t draggable_set_left (widget_t* widget, uint32_t left);
+```
+
+* 参数说明:
+
+| 参数 | 类型 | 说明 |
+| -------- | ----- | --------- |
+| 返回值 | ret\_t | 返回RET\_OK表示成功,否则表示失败。 |
+| widget | widget\_t* | widget对象。 |
+| left | uint32\_t | 拖动范围的左边限制。缺省为父控件的左边。 |
+#### draggable\_set\_right 函数
+-----------------------
+
+* 函数功能:
+
+>
设置right。
+
+
+
+* 函数原型:
+
+```
+ret_t draggable_set_right (widget_t* widget, uint32_t right);
+```
+
+* 参数说明:
+
+| 参数 | 类型 | 说明 |
+| -------- | ----- | --------- |
+| 返回值 | ret\_t | 返回RET\_OK表示成功,否则表示失败。 |
+| widget | widget\_t* | widget对象。 |
+| right | uint32\_t | 拖动范围的右边限制。缺省为父控件的右边边。 |
+#### draggable\_set\_top 函数
+-----------------------
+
+* 函数功能:
+
+>
设置top。
+
+
+
+* 函数原型:
+
+```
+ret_t draggable_set_top (widget_t* widget, uint32_t top);
+```
+
+* 参数说明:
+
+| 参数 | 类型 | 说明 |
+| -------- | ----- | --------- |
+| 返回值 | ret\_t | 返回RET\_OK表示成功,否则表示失败。 |
+| widget | widget\_t* | widget对象。 |
+| top | uint32\_t | 拖动范围的顶部限制。缺省为父控件的顶部。 |
+#### draggable\_set\_vertical\_only 函数
+-----------------------
+
+* 函数功能:
+
+>
设置vertical_only。
+
+
+
+* 函数原型:
+
+```
+ret_t draggable_set_vertical_only (widget_t* widget, uint32_t vertical_only);
+```
+
+* 参数说明:
+
+| 参数 | 类型 | 说明 |
+| -------- | ----- | --------- |
+| 返回值 | ret\_t | 返回RET\_OK表示成功,否则表示失败。 |
+| widget | widget\_t* | widget对象。 |
+| vertical\_only | uint32\_t | 只允许垂直拖动。 |
+#### bottom 属性
+-----------------------
+>
拖动范围的底部限制。缺省为父控件的底部。
+
+
+* 类型:int32\_t
+
+| 特性 | 是否支持 |
+| -------- | ----- |
+| 可直接读取 | 是 |
+| 可直接修改 | 否 |
+| 可持久化 | 是 |
+| 可脚本化 | 是 |
+| 可在IDE中设置 | 是 |
+| 可在XML中设置 | 是 |
+| 可通过widget\_get\_prop读取 | 是 |
+| 可通过widget\_set\_prop修改 | 是 |
+#### drag\_window 属性
+-----------------------
+>
拖动窗口而不是父控件。比如放在对话框的titlebar上,拖动titlebar其实是希望拖动对话框。
+
+
+* 类型:bool\_t
+
+| 特性 | 是否支持 |
+| -------- | ----- |
+| 可直接读取 | 是 |
+| 可直接修改 | 否 |
+| 可持久化 | 是 |
+| 可脚本化 | 是 |
+| 可在IDE中设置 | 是 |
+| 可在XML中设置 | 是 |
+| 可通过widget\_get\_prop读取 | 是 |
+| 可通过widget\_set\_prop修改 | 是 |
+#### horizontal\_only 属性
+-----------------------
+>
只允许水平拖动。
+
+
+* 类型:bool\_t
+
+| 特性 | 是否支持 |
+| -------- | ----- |
+| 可直接读取 | 是 |
+| 可直接修改 | 否 |
+| 可持久化 | 是 |
+| 可脚本化 | 是 |
+| 可在IDE中设置 | 是 |
+| 可在XML中设置 | 是 |
+| 可通过widget\_get\_prop读取 | 是 |
+| 可通过widget\_set\_prop修改 | 是 |
+#### left 属性
+-----------------------
+>
拖动范围的左边限制。缺省为父控件的左边。
+
+
+* 类型:int32\_t
+
+| 特性 | 是否支持 |
+| -------- | ----- |
+| 可直接读取 | 是 |
+| 可直接修改 | 否 |
+| 可持久化 | 是 |
+| 可脚本化 | 是 |
+| 可在IDE中设置 | 是 |
+| 可在XML中设置 | 是 |
+| 可通过widget\_get\_prop读取 | 是 |
+| 可通过widget\_set\_prop修改 | 是 |
+#### right 属性
+-----------------------
+>
拖动范围的右边限制。缺省为父控件的右边边。
+
+
+* 类型:int32\_t
+
+| 特性 | 是否支持 |
+| -------- | ----- |
+| 可直接读取 | 是 |
+| 可直接修改 | 否 |
+| 可持久化 | 是 |
+| 可脚本化 | 是 |
+| 可在IDE中设置 | 是 |
+| 可在XML中设置 | 是 |
+| 可通过widget\_get\_prop读取 | 是 |
+| 可通过widget\_set\_prop修改 | 是 |
+#### top 属性
+-----------------------
+>
拖动范围的顶部限制。缺省为父控件的顶部。
+
+
+* 类型:int32\_t
+
+| 特性 | 是否支持 |
+| -------- | ----- |
+| 可直接读取 | 是 |
+| 可直接修改 | 否 |
+| 可持久化 | 是 |
+| 可脚本化 | 是 |
+| 可在IDE中设置 | 是 |
+| 可在XML中设置 | 是 |
+| 可通过widget\_get\_prop读取 | 是 |
+| 可通过widget\_set\_prop修改 | 是 |
+#### vertical\_only 属性
+-----------------------
+>
只允许垂直拖动。
+
+
+* 类型:bool\_t
+
+| 特性 | 是否支持 |
+| -------- | ----- |
+| 可直接读取 | 是 |
+| 可直接修改 | 否 |
+| 可持久化 | 是 |
+| 可脚本化 | 是 |
+| 可在IDE中设置 | 是 |
+| 可在XML中设置 | 是 |
+| 可通过widget\_get\_prop读取 | 是 |
+| 可通过widget\_set\_prop修改 | 是 |
diff --git a/docs/manual/easing_type_t.md b/docs/manual/easing_type_t.md
index 94b5c5f84d..04f5206adc 100644
--- a/docs/manual/easing_type_t.md
+++ b/docs/manual/easing_type_t.md
@@ -1,7 +1,6 @@
## easing\_type\_t
### 概述
缓动作动画常量定义。
-
### 常量
diff --git a/docs/manual/edit_t.md b/docs/manual/edit_t.md
index 1677951692..b9f12a8cdb 100644
--- a/docs/manual/edit_t.md
+++ b/docs/manual/edit_t.md
@@ -27,7 +27,7 @@
> XXX:需要在min/max/step之前设置input\_type。
>更多用法请参考:
- [edit.xml](https://github.com/zlgopen/awtk/blob/master/demos/assets/raw/ui/edit.xml)
+ [edit.xml](https://github.com/zlgopen/awtk/blob/master/demos/assets/default/raw/ui/edit.xml)
在c代码中使用函数edit\_create创建编辑器控件。如:
@@ -55,7 +55,7 @@
> 更多用法请参考:
[theme
-default](https://github.com/zlgopen/awtk/blob/master/demos/assets/raw/styles/default.xml#L104)
+default](https://github.com/zlgopen/awtk/blob/master/demos/assets/default/raw/styles/default.xml#L104)
----------------------------------
diff --git a/docs/manual/emitter_t.md b/docs/manual/emitter_t.md
index 13f92aa36c..db144ddbc1 100644
--- a/docs/manual/emitter_t.md
+++ b/docs/manual/emitter_t.md
@@ -3,7 +3,6 @@
事件分发器, 用于实现观察者模式。
-
----------------------------------
### 函数
@@ -23,7 +22,9 @@
| emitter\_off | 注销指定事件的处理函数。 |
| emitter\_off\_by\_ctx | 注销指定事件的处理函数。 |
| emitter\_off\_by\_func | 注销指定事件的处理函数。 |
+| emitter\_off\_by\_tag | 注销指定事件的处理函数。 |
| emitter\_on | 注册指定事件的处理函数。 |
+| emitter\_on\_with\_tag | 注册指定事件的处理函数。 |
| emitter\_set\_on\_destroy | 设置一个回调函数,在emitter被销毁时调用(方便脚本语言去释放回调函数)。 |
| emitter\_size | 获取注册的回调函数个数,主要用于辅助测试。 |
### 属性
@@ -43,7 +44,6 @@
-
* 函数原型:
```
@@ -65,7 +65,6 @@ emitter_t* emitter_cast (emitter_t* emitter);
-
* 函数原型:
```
@@ -87,7 +86,6 @@ emitter_t* emitter_create ();
-
* 函数原型:
```
@@ -110,7 +108,6 @@ ret_t emitter_deinit (emitter_t* emitter);
-
* 函数原型:
```
@@ -135,7 +132,6 @@ ret_t emitter_destroy (emitter_t* emitter);
-
* 函数原型:
```
@@ -158,7 +154,6 @@ ret_t emitter_disable (emitter_t* emitter);
如果当前分发的回调函数返回RET_STOP,dispatch中断分发,并返回RET_STOP,否则返回RET_OK。
-
* 函数原型:
```
@@ -182,7 +177,6 @@ ret_t emitter_dispatch (emitter_t* emitter, event_t* e);
如果当前分发的回调函数返回RET_STOP,dispatch中断分发,并返回RET_STOP,否则返回RET_OK。
-
* 函数原型:
```
@@ -205,7 +199,6 @@ ret_t emitter_dispatch_simple_event (emitter_t* emitter, uint32_t type);
-
* 函数原型:
```
@@ -227,7 +220,6 @@ ret_t emitter_enable (emitter_t* emitter);
-
* 函数原型:
```
@@ -250,7 +242,6 @@ ret_t emitter_find (emitter_t* emitter, uint32_t id);
-
* 函数原型:
```
@@ -272,7 +263,6 @@ emitter_t* emitter_init (emitter_t* emitter);
-
* 函数原型:
```
@@ -295,7 +285,6 @@ ret_t emitter_off (emitter_t* emitter, uint32_t id);
-
* 函数原型:
```
@@ -318,7 +307,6 @@ ret_t emitter_off_by_ctx (emitter_t* emitter, void* ctx);
-
* 函数原型:
```
@@ -334,6 +322,28 @@ ret_t emitter_off_by_func (emitter_t* emitter, uint32_t type, event_func_t on_ev
| type | uint32\_t | 事件类型。 |
| on\_event | event\_func\_t | 事件处理函数。 |
| ctx | void* | 事件处理函数上下文。 |
+#### emitter\_off\_by\_tag 函数
+-----------------------
+
+* 函数功能:
+
+>
注销指定事件的处理函数。
+
+
+
+* 函数原型:
+
+```
+ret_t emitter_off_by_tag (emitter_t* emitter, uint32_t tag);
+```
+
+* 参数说明:
+
+| 参数 | 类型 | 说明 |
+| -------- | ----- | --------- |
+| 返回值 | ret\_t | 返回RET\_OK表示成功,否则表示失败。 |
+| emitter | emitter\_t* | emitter对象。 |
+| tag | uint32\_t | tag。 |
#### emitter\_on 函数
-----------------------
@@ -343,7 +353,6 @@ ret_t emitter_off_by_func (emitter_t* emitter, uint32_t type, event_func_t on_ev
-
* 函数原型:
```
@@ -359,6 +368,31 @@ uint32_t emitter_on (emitter_t* emitter, uint32_t type, event_func_t on_event, v
| type | uint32\_t | 事件类型。 |
| on\_event | event\_func\_t | 事件处理函数。 |
| ctx | void* | 事件处理函数上下文。 |
+#### emitter\_on\_with\_tag 函数
+-----------------------
+
+* 函数功能:
+
+>
注册指定事件的处理函数。
+
+
+
+* 函数原型:
+
+```
+uint32_t emitter_on_with_tag (emitter_t* emitter, uint32_t type, event_func_t on_event, void* ctx, uint32_t tag);
+```
+
+* 参数说明:
+
+| 参数 | 类型 | 说明 |
+| -------- | ----- | --------- |
+| 返回值 | uint32\_t | 返回id,用于emitter\_off。 |
+| emitter | emitter\_t* | emitter对象。 |
+| type | uint32\_t | 事件类型。 |
+| on\_event | event\_func\_t | 事件处理函数。 |
+| ctx | void* | 事件处理函数上下文。 |
+| tag | uint32\_t | tag。 |
#### emitter\_set\_on\_destroy 函数
-----------------------
@@ -368,7 +402,6 @@ uint32_t emitter_on (emitter_t* emitter, uint32_t type, event_func_t on_event, v
-
* 函数原型:
```
@@ -393,7 +426,6 @@ ret_t emitter_set_on_destroy (emitter_t* emitter, uint32_t id, tk_destroy_t on_d
-
* 函数原型:
```
@@ -411,7 +443,6 @@ uint32_t emitter_size (emitter_t* emitter);
>
禁用标志。禁用时dispatch无效。
-
* 类型:bool\_t
| 特性 | 是否支持 |
diff --git a/docs/manual/event_base_type_t.md b/docs/manual/event_base_type_t.md
index 4e548a91a8..f3e73ad9e4 100644
--- a/docs/manual/event_base_type_t.md
+++ b/docs/manual/event_base_type_t.md
@@ -1,7 +1,6 @@
## event\_base\_type\_t
### 概述
类型常量定义。
-
### 常量
diff --git a/docs/manual/event_source_fd_t.md b/docs/manual/event_source_fd_t.md
index 385a4a415e..3dbff34b13 100644
--- a/docs/manual/event_source_fd_t.md
+++ b/docs/manual/event_source_fd_t.md
@@ -6,7 +6,6 @@
fd事件源。
-
----------------------------------
### 函数
@@ -26,7 +25,6 @@
-
* 函数原型:
```
diff --git a/docs/manual/event_source_idle_t.md b/docs/manual/event_source_idle_t.md
index 715fff0948..6ef93c5c88 100644
--- a/docs/manual/event_source_idle_t.md
+++ b/docs/manual/event_source_idle_t.md
@@ -6,7 +6,6 @@
idle事件源。
-
----------------------------------
### 函数
@@ -27,7 +26,6 @@
-
* 函数原型:
```
@@ -52,7 +50,6 @@ event_source_t* event_source_idle_create (idle_manager_t* idle_manager);
-
* 函数原型:
```
diff --git a/docs/manual/event_source_manager_t.md b/docs/manual/event_source_manager_t.md
index 8c7e9bc41c..7bf6b29664 100644
--- a/docs/manual/event_source_manager_t.md
+++ b/docs/manual/event_source_manager_t.md
@@ -4,7 +4,6 @@
事件源管理器。
-
----------------------------------
### 函数
@@ -30,7 +29,6 @@
-
* 函数原型:
```
@@ -56,7 +54,6 @@ ret_t event_source_manager_add (event_source_manager_t* manager, event_source_t*
-
* 函数原型:
```
@@ -81,7 +78,6 @@ ret_t event_source_manager_deinit (event_source_manager_t* manager);
-
* 函数原型:
```
@@ -106,7 +102,6 @@ ret_t event_source_manager_destroy (event_source_manager_t* manager);
-
* 函数原型:
```
@@ -131,7 +126,6 @@ ret_t event_source_manager_dispatch (event_source_manager_t* manager);
-
* 函数原型:
```
@@ -156,7 +150,6 @@ uint32_t event_source_manager_get_wakeup_time (event_source_manager_t* manager);
-
* 函数原型:
```
@@ -181,7 +174,6 @@ ret_t event_source_manager_init (event_source_manager_t* manager);
-
* 函数原型:
```
diff --git a/docs/manual/event_source_t.md b/docs/manual/event_source_t.md
index dde2ac8f29..bb13a75933 100644
--- a/docs/manual/event_source_t.md
+++ b/docs/manual/event_source_t.md
@@ -11,7 +11,6 @@
* 对于定时器,则get_wakeup_time返回下次唤醒的时间。
-
----------------------------------
### 函数
@@ -34,7 +33,6 @@
-
* 函数原型:
```
@@ -59,7 +57,6 @@ ret_t event_source_check (event_source_t* source);
-
* 函数原型:
```
@@ -84,7 +81,6 @@ ret_t event_source_dispatch (event_source_t* source);
-
* 函数原型:
```
@@ -109,7 +105,6 @@ int32_t event_source_get_fd (event_source_t* source);
-
* 函数原型:
```
diff --git a/docs/manual/event_source_timer_t.md b/docs/manual/event_source_timer_t.md
index 7c429d86e2..2161cb2587 100644
--- a/docs/manual/event_source_timer_t.md
+++ b/docs/manual/event_source_timer_t.md
@@ -6,7 +6,6 @@
timer事件源。
-
----------------------------------
### 函数
@@ -26,7 +25,6 @@
-
* 函数原型:
```
diff --git a/docs/manual/event_t.md b/docs/manual/event_t.md
index 41e760f16b..92a26da785 100644
--- a/docs/manual/event_t.md
+++ b/docs/manual/event_t.md
@@ -2,7 +2,6 @@
### 概述
事件基类。
-
----------------------------------
### 函数
@@ -32,7 +31,6 @@
-
* 函数原型:
```
@@ -56,7 +54,6 @@ event_t* event_cast (event_t* event);
-
* 函数原型:
```
@@ -81,7 +78,6 @@ event_t* event_create (uint32_t type, void* target);
-
* 函数原型:
```
@@ -103,7 +99,6 @@ ret_t event_destroy (event_t* event);
-
* 函数原型:
```
@@ -122,7 +117,6 @@ event_t event_init (uint32_t type, void* target);
>
事件发生的目标对象。
-
* 类型:void*
| 特性 | 是否支持 |
@@ -135,7 +129,6 @@ event_t event_init (uint32_t type, void* target);
>
事件发生的时间。
-
* 类型:int32\_t
| 特性 | 是否支持 |
@@ -148,7 +141,6 @@ event_t event_init (uint32_t type, void* target);
>
类型。
-
* 类型:int32\_t
| 特性 | 是否支持 |
diff --git a/docs/manual/event_type_t.md b/docs/manual/event_type_t.md
index 8c3bb89a52..f3a180bc59 100644
--- a/docs/manual/event_type_t.md
+++ b/docs/manual/event_type_t.md
@@ -1,7 +1,6 @@
## event\_type\_t
### 概述
类型常量定义。
-
### 常量
@@ -14,6 +13,7 @@
| EVT\_POINTER\_UP | 指针抬起事件名(pointer\_event\_t)。 |
| EVT\_POINTER\_UP\_BEFORE\_CHILDREN | 指针抬起事件名,在子控件处理之前触发(pointer\_event\_t)。 |
| EVT\_WHEEL | 滚轮事件名(pointer\_event\_t)。 |
+| EVT\_WHEEL\_BEFORE\_CHILDREN | 鼠标滚轮事件名,在子控件处理之前触发(key\_event\_t)。 |
| EVT\_POINTER\_DOWN\_ABORT | 取消前一个指针按下事件名(pointer\_event\_t)。 |
| EVT\_CONTEXT\_MENU | 右键/长按弹出上下文菜单的事件名(pointer\_event\_t)。 |
| EVT\_POINTER\_ENTER | 指针进入事件名(pointer\_event\_t)。 |
diff --git a/docs/manual/font_loader_bitmap_t.md b/docs/manual/font_loader_bitmap_t.md
index 285ae54a8a..ad37fbde05 100644
--- a/docs/manual/font_loader_bitmap_t.md
+++ b/docs/manual/font_loader_bitmap_t.md
@@ -11,7 +11,6 @@
-
----------------------------------
### 函数
@@ -29,7 +28,6 @@
-
* 函数原型:
```
diff --git a/docs/manual/font_loader_stb_t.md b/docs/manual/font_loader_stb_t.md
index 16b21de566..5cda063809 100644
--- a/docs/manual/font_loader_stb_t.md
+++ b/docs/manual/font_loader_stb_t.md
@@ -8,7 +8,6 @@
-
----------------------------------
### 函数
@@ -26,7 +25,6 @@
-
* 函数原型:
```
diff --git a/docs/manual/font_loader_t.md b/docs/manual/font_loader_t.md
index 69d8d81812..35572dc480 100644
--- a/docs/manual/font_loader_t.md
+++ b/docs/manual/font_loader_t.md
@@ -2,7 +2,6 @@
### 概述
字体加载接口。
-
----------------------------------
### 函数
@@ -20,7 +19,6 @@
-
* 函数原型:
```
diff --git a/docs/manual/font_manager_t.md b/docs/manual/font_manager_t.md
index f6774a8199..e076affe1f 100644
--- a/docs/manual/font_manager_t.md
+++ b/docs/manual/font_manager_t.md
@@ -3,7 +3,6 @@
字体管理器,负责字体的加载和缓存管理。
(如果使用nanovg,字体由nanovg内部管理)
-
----------------------------------
### 函数
@@ -34,7 +33,6 @@
>
获取缺省的字体管理器。
-
* 函数原型:
```
@@ -55,7 +53,6 @@ font_manager_t* font_manager ();
-
* 函数原型:
```
@@ -79,7 +76,6 @@ ret_t font_manager_add_font (font_manager_t* fm, char* name, font_t* font);
-
* 函数原型:
```
@@ -101,7 +97,6 @@ font_manager_t* font_manager_create (font_loader_t* loader);
-
* 函数原型:
```
@@ -123,7 +118,6 @@ ret_t font_manager_deinit (font_manager_t* fm);
-
* 函数原型:
```
@@ -145,7 +139,6 @@ ret_t font_manager_destroy (font_manager_t* fm);
-
* 函数原型:
```
@@ -169,7 +162,6 @@ font_t* font_manager_get_font (font_manager_t* fm, char* name, font_size_t size)
-
* 函数原型:
```
@@ -192,7 +184,6 @@ font_manager_t* font_manager_init (font_manager_t* fm, font_loader_t* loader);
-
* 函数原型:
```
@@ -222,7 +213,6 @@ ret_t font_manager_set (font_manager_t* fm);
-
* 函数原型:
```
@@ -245,7 +235,6 @@ ret_t font_manager_set_assets_manager (font_manager_t* imm, assets_manager_t* as
-
* 函数原型:
```
@@ -267,7 +256,6 @@ ret_t font_manager_unload_all (font_manager_t* fm);
-
* 函数原型:
```
diff --git a/docs/manual/font_t.md b/docs/manual/font_t.md
index 8ab80b35b5..42eb171157 100644
--- a/docs/manual/font_t.md
+++ b/docs/manual/font_t.md
@@ -3,7 +3,6 @@
代表一种字体。
-
----------------------------------
### 函数
@@ -23,7 +22,6 @@
-
* 函数原型:
```
@@ -45,7 +43,6 @@ ret_t font_destroy (font_t* font);
-
* 函数原型:
```
@@ -69,7 +66,6 @@ int32_t font_get_baseline (font_t* font, font_size_t font_size);
-
* 函数原型:
```
@@ -95,7 +91,6 @@ ret_t font_get_glyph (font_t* font, wchar_t chr, font_size_t font_size, glyph_t*
-
* 函数原型:
```
diff --git a/docs/manual/fs_dir_t.md b/docs/manual/fs_dir_t.md
index 5f3c520766..05ebbcce19 100644
--- a/docs/manual/fs_dir_t.md
+++ b/docs/manual/fs_dir_t.md
@@ -4,7 +4,6 @@
文件夹接口。
-
----------------------------------
### 函数
@@ -26,7 +25,6 @@
-
* 函数原型:
```
@@ -51,7 +49,6 @@ ret_t fs_dir_close (fs_dir_t* dir);
-
* 函数原型:
```
@@ -77,7 +74,6 @@ ret_t fs_dir_read (fs_dir_t* dir, fs_item_t* item);
-
* 函数原型:
```
diff --git a/docs/manual/fs_file_t.md b/docs/manual/fs_file_t.md
index 097f75e72c..58c37e2ce4 100644
--- a/docs/manual/fs_file_t.md
+++ b/docs/manual/fs_file_t.md
@@ -4,7 +4,6 @@
文件接口。
-
----------------------------------
### 函数
@@ -29,7 +28,6 @@
-
* 函数原型:
```
@@ -54,7 +52,6 @@ ret_t fs_file_close (fs_file_t* file);
-
* 函数原型:
```
@@ -79,7 +76,6 @@ bool_t fs_file_eof (fs_file_t* file);
-
* 函数原型:
```
@@ -106,7 +102,6 @@ int32_t fs_file_read (fs_file_t* file, void* buffer, uint32_t size);
-
* 函数原型:
```
@@ -132,7 +127,6 @@ ret_t fs_file_seek (fs_file_t* file, uint32_t offset);
-
* 函数原型:
```
@@ -157,7 +151,6 @@ ret_t fs_file_truncate (fs_file_t* file);
-
* 函数原型:
```
diff --git a/docs/manual/fs_t.md b/docs/manual/fs_t.md
index 37da77d42c..1d90d7539d 100644
--- a/docs/manual/fs_t.md
+++ b/docs/manual/fs_t.md
@@ -4,5 +4,4 @@
文件系统接口。
-
----------------------------------
diff --git a/docs/manual/func_call_parser_t.md b/docs/manual/func_call_parser_t.md
index b05f0a15c9..c5a44d1f83 100644
--- a/docs/manual/func_call_parser_t.md
+++ b/docs/manual/func_call_parser_t.md
@@ -11,7 +11,6 @@
如:move(x=10, y=20)
如:rename(old_name=aa, new_name=bb)
-
----------------------------------
### 函数
@@ -31,7 +30,6 @@
-
* 函数原型:
```
@@ -53,7 +51,6 @@ ret_t func_call_parser_deinit (func_call_parser_t* parser);
-
* 函数原型:
```
@@ -77,7 +74,6 @@ func_call_parser_t* func_call_parser_init (func_call_parser_t* parser, const cha
-
* 函数原型:
```
@@ -101,7 +97,6 @@ ret_t func_call_parser_parse (func_call_parser_t* parser);
-
* 函数原型:
```
diff --git a/docs/manual/func_desc_t.md b/docs/manual/func_desc_t.md
index aa6e5f0264..9980831912 100644
--- a/docs/manual/func_desc_t.md
+++ b/docs/manual/func_desc_t.md
@@ -2,7 +2,6 @@
### 概述
函数描述。
-
----------------------------------
### 属性
@@ -19,7 +18,6 @@
>
函数参数描述。
-
* 类型:arg\_desc\_t**
| 特性 | 是否支持 |
@@ -31,7 +29,6 @@
>
描述。
-
* 类型:const char*
| 特性 | 是否支持 |
@@ -43,7 +40,6 @@
>
函数指针。
-
* 类型:func\_exec\_t
| 特性 | 是否支持 |
@@ -55,7 +51,6 @@
>
名称。
-
* 类型:const char*
| 特性 | 是否支持 |
@@ -67,7 +62,6 @@
>
函数返回值描述。
-
* 类型:value\_desc\_t*
| 特性 | 是否支持 |
diff --git a/docs/manual/gif_image_t.md b/docs/manual/gif_image_t.md
index b11dd64210..76788d6aa8 100644
--- a/docs/manual/gif_image_t.md
+++ b/docs/manual/gif_image_t.md
@@ -16,7 +16,7 @@
```
>更多用法请参考:
- [gif image](https://github.com/zlgopen/awtk/blob/master/demos/assets/raw/ui/gif_image.xml)
+ [gif image](https://github.com/zlgopen/awtk/blob/master/demos/assets/default/raw/ui/gif_image.xml)
在c代码中使用函数gif\_image\_create创建GIF图片控件。如:
@@ -43,7 +43,7 @@
```
> 更多用法请参考:[theme default](
- https://github.com/zlgopen/awtk/blob/master/demos/assets/raw/styles/default.xml)
+ https://github.com/zlgopen/awtk/blob/master/demos/assets/default/raw/styles/default.xml)
----------------------------------
diff --git a/docs/manual/global_t.md b/docs/manual/global_t.md
index f0b576caa1..22b45c9c37 100644
--- a/docs/manual/global_t.md
+++ b/docs/manual/global_t.md
@@ -2,7 +2,6 @@
### 概述
TK全局对象。
-
----------------------------------
### 函数
@@ -25,7 +24,6 @@
-
* 函数原型:
```
@@ -46,7 +44,6 @@ int32_t tk_get_pointer_x ();
-
* 函数原型:
```
@@ -67,7 +64,6 @@ int32_t tk_get_pointer_y ();
-
* 函数原型:
```
@@ -93,7 +89,6 @@ ret_t tk_init (wh_t w, wh_t h, app_type_t app_type, const char* app_name, const
-
* 函数原型:
```
@@ -114,7 +109,6 @@ bool_t tk_is_pointer_pressed ();
-
* 函数原型:
```
@@ -135,7 +129,6 @@ ret_t tk_quit ();
-
* 函数原型:
```
@@ -156,7 +149,6 @@ ret_t tk_run ();
-
* 函数原型:
```
diff --git a/docs/manual/glyph_format_t.md b/docs/manual/glyph_format_t.md
index 2b83297e6f..1580f8f4e0 100644
--- a/docs/manual/glyph_format_t.md
+++ b/docs/manual/glyph_format_t.md
@@ -1,7 +1,6 @@
## glyph\_format\_t
### 概述
字模格式常量定义。
-
### 常量
diff --git a/docs/manual/glyph_t.md b/docs/manual/glyph_t.md
index 90329b1ec1..49e9d1d482 100644
--- a/docs/manual/glyph_t.md
+++ b/docs/manual/glyph_t.md
@@ -3,7 +3,6 @@
代表一个字符的字模。
-
----------------------------------
### 函数
@@ -35,7 +34,6 @@
-
* 函数原型:
```
@@ -56,7 +54,6 @@ glyph_t* glyph_clone ();
-
* 函数原型:
```
@@ -77,7 +74,6 @@ glyph_t* glyph_create ();
-
* 函数原型:
```
@@ -95,7 +91,6 @@ ret_t glyph_destroy (glyph_t* glyph);
>
占位宽度。
-
* 类型:uint16\_t
| 特性 | 是否支持 |
@@ -107,7 +102,6 @@ ret_t glyph_destroy (glyph_t* glyph);
>
数据。
-
* 类型:const uint8\_t*
| 特性 | 是否支持 |
@@ -119,7 +113,6 @@ ret_t glyph_destroy (glyph_t* glyph);
>
格式。
-
* 类型:uint8\_t
| 特性 | 是否支持 |
@@ -131,7 +124,6 @@ ret_t glyph_destroy (glyph_t* glyph);
>
高度。
-
* 类型:uint16\_t
| 特性 | 是否支持 |
@@ -143,7 +135,6 @@ ret_t glyph_destroy (glyph_t* glyph);
>
pitch。
-
* 类型:uint8\_t
| 特性 | 是否支持 |
@@ -155,7 +146,6 @@ ret_t glyph_destroy (glyph_t* glyph);
>
宽度。
-
* 类型:uint16\_t
| 特性 | 是否支持 |
@@ -167,7 +157,6 @@ ret_t glyph_destroy (glyph_t* glyph);
>
x坐标。
-
* 类型:int16\_t
| 特性 | 是否支持 |
@@ -179,7 +168,6 @@ ret_t glyph_destroy (glyph_t* glyph);
>
y坐标。
-
* 类型:int16\_t
| 特性 | 是否支持 |
diff --git a/docs/manual/guage_pointer_t.md b/docs/manual/guage_pointer_t.md
index c5432242a9..04396964eb 100644
--- a/docs/manual/guage_pointer_t.md
+++ b/docs/manual/guage_pointer_t.md
@@ -17,7 +17,7 @@
```
> 更多用法请参考:
- [guage.xml](https://github.com/zlgopen/awtk/blob/master/demos/assets/raw/ui/guage.xml)
+ [guage.xml](https://github.com/zlgopen/awtk/blob/master/demos/assets/default/raw/ui/guage.xml)
在c代码中使用函数guage\_pointer\_create创建仪表指针控件。如:
@@ -30,7 +30,6 @@
-
----------------------------------
### 函数
@@ -60,7 +59,6 @@
-
* 函数原型:
```
@@ -82,7 +80,6 @@ widget_t* guage_pointer_cast (widget_t* widget);
-
* 函数原型:
```
@@ -108,7 +105,6 @@ widget_t* guage_pointer_create (widget_t* parent, xy_t x, xy_t y, wh_t w, wh_t h
-
* 函数原型:
```
@@ -132,7 +128,6 @@ ret_t guage_pointer_set_anchor (widget_t* widget, const char* anchor_x, const ch
-
* 函数原型:
```
@@ -155,7 +150,6 @@ ret_t guage_pointer_set_angle (widget_t* widget, int32_t angle);
-
* 函数原型:
```
@@ -174,7 +168,6 @@ ret_t guage_pointer_set_image (widget_t* widget, const char* image);
>
旋转锚点x坐标。
-
* 类型:float\_t
| 特性 | 是否支持 |
@@ -192,7 +185,6 @@ ret_t guage_pointer_set_image (widget_t* widget, const char* image);
>
旋转锚点y坐标。
-
* 类型:float\_t
| 特性 | 是否支持 |
@@ -210,7 +202,6 @@ ret_t guage_pointer_set_image (widget_t* widget, const char* image);
>
指针角度。12点钟方向为0度,顺时钟方向为正,单位为度。
-
* 类型:int32\_t
| 特性 | 是否支持 |
@@ -231,7 +222,6 @@ ret_t guage_pointer_set_image (widget_t* widget, const char* image);
-
* 类型:char*
| 特性 | 是否支持 |
diff --git a/docs/manual/guage_t.md b/docs/manual/guage_t.md
index 51dcc0ec83..77b3c2f445 100644
--- a/docs/manual/guage_t.md
+++ b/docs/manual/guage_t.md
@@ -15,7 +15,7 @@
```
> 更多用法请参考:
- [guage.xml](https://github.com/zlgopen/awtk/blob/master/demos/assets/raw/ui/guage.xml)
+ [guage.xml](https://github.com/zlgopen/awtk/blob/master/demos/assets/default/raw/ui/guage.xml)
在c代码中使用函数guage\_create创建表盘控件。如:
@@ -35,7 +35,7 @@
```
> 更多用法请参考:
- [theme default](https://github.com/zlgopen/awtk/blob/master/demos/assets/raw/styles/default.xml)
+ [theme default](https://github.com/zlgopen/awtk/blob/master/demos/assets/default/raw/styles/default.xml)
----------------------------------
diff --git a/docs/manual/hscroll_label_t.md b/docs/manual/hscroll_label_t.md
index 1e90471c8c..df3a25052e 100644
--- a/docs/manual/hscroll_label_t.md
+++ b/docs/manual/hscroll_label_t.md
@@ -14,7 +14,7 @@
```
> 更多用法请参考:[mledit.xml](
-https://github.com/zlgopen/awtk/blob/master/demos/assets/raw/ui/mledit.xml)
+https://github.com/zlgopen/awtk/blob/master/demos/assets/default/raw/ui/mledit.xml)
可用通过style来设置控件的显示风格,如字体的大小和颜色等等。如:
@@ -27,8 +27,7 @@ https://github.com/zlgopen/awtk/blob/master/demos/assets/raw/ui/mledit.xml)
> 更多用法请参考:
[theme default](
-https://github.com/zlgopen/awtk/blob/master/demos/assets/raw/styles/default.xml)
-
+https://github.com/zlgopen/awtk/blob/master/demos/assets/default/raw/styles/default.xml)
----------------------------------
@@ -70,7 +69,6 @@ https://github.com/zlgopen/awtk/blob/master/demos/assets/raw/styles/default.xml)
-
* 函数原型:
```
@@ -92,7 +90,6 @@ widget_t* hscroll_label_cast (widget_t* widget);
-
* 函数原型:
```
@@ -118,7 +115,6 @@ widget_t* hscroll_label_create (widget_t* parent, xy_t x, xy_t y, wh_t w, wh_t h
-
* 函数原型:
```
@@ -141,7 +137,6 @@ ret_t hscroll_label_set_duration (widget_t* widget, int32_t duration);
-
* 函数原型:
```
@@ -164,7 +159,6 @@ ret_t hscroll_label_set_ellipses (widget_t* widget, bool_t ellipses);
-
* 函数原型:
```
@@ -187,7 +181,6 @@ ret_t hscroll_label_set_loop (widget_t* widget, bool_t loop);
-
* 函数原型:
```
@@ -210,7 +203,6 @@ ret_t hscroll_label_set_lull (widget_t* widget, int32_t lull);
-
* 函数原型:
```
@@ -233,7 +225,6 @@ ret_t hscroll_label_set_only_focus (widget_t* widget, bool_t only_focus);
-
* 函数原型:
```
@@ -256,7 +247,6 @@ ret_t hscroll_label_set_xoffset (widget_t* widget, int32_t xoffset);
-
* 函数原型:
```
@@ -279,7 +269,6 @@ ret_t hscroll_label_set_yoyo (widget_t* widget, bool_t yoyo);
-
* 函数原型:
```
@@ -301,7 +290,6 @@ ret_t hscroll_label_start (widget_t* widget);
-
* 函数原型:
```
@@ -319,7 +307,6 @@ ret_t hscroll_label_stop (widget_t* widget);
>
完整的滚动一次需要的时间(ms),缺省5000ms。
-
* 类型:int32\_t
| 特性 | 是否支持 |
@@ -335,7 +322,6 @@ ret_t hscroll_label_stop (widget_t* widget);
>
文本显示不下时,在行尾显示省略号(缺省FALSE)。
-
* 类型:bool\_t
| 特性 | 是否支持 |
@@ -353,7 +339,6 @@ ret_t hscroll_label_stop (widget_t* widget);
>
loop是否循环滚动(缺省FALSE)。
-
* 类型:bool\_t
| 特性 | 是否支持 |
@@ -371,7 +356,6 @@ ret_t hscroll_label_stop (widget_t* widget);
>
滚动之间的间歇时间(ms),缺省3000ms。
-
* 类型:int32\_t
| 特性 | 是否支持 |
@@ -389,7 +373,6 @@ ret_t hscroll_label_stop (widget_t* widget);
>
只有处于focus时才滚动(缺省否)。
-
* 类型:bool\_t
| 特性 | 是否支持 |
@@ -407,7 +390,6 @@ ret_t hscroll_label_stop (widget_t* widget);
>
文本的宽度。
-
* 类型:int32\_t
| 特性 | 是否支持 |
@@ -423,7 +405,6 @@ ret_t hscroll_label_stop (widget_t* widget);
>
偏移量。
-
* 类型:int32\_t
| 特性 | 是否支持 |
@@ -439,7 +420,6 @@ ret_t hscroll_label_stop (widget_t* widget);
>
是否往返滚动(缺省FALSE)。
-
* 类型:bool\_t
| 特性 | 是否支持 |
diff --git a/docs/manual/hscrollable_t.md b/docs/manual/hscrollable_t.md
index a0185bff02..ad53aae8f8 100644
--- a/docs/manual/hscrollable_t.md
+++ b/docs/manual/hscrollable_t.md
@@ -2,5 +2,4 @@
### 概述
帮助实现控件左右滚动的效果。
-
----------------------------------
diff --git a/docs/manual/idle_info_t.md b/docs/manual/idle_info_t.md
index b3967e9edc..6fc7e83f56 100644
--- a/docs/manual/idle_info_t.md
+++ b/docs/manual/idle_info_t.md
@@ -5,7 +5,6 @@
单个idle的信息。
-
----------------------------------
### 函数
@@ -32,7 +31,6 @@
-
* 函数原型:
```
@@ -50,7 +48,6 @@ idle_info_t* idle_info_cast (idle_info_t* idle);
>
idle回调函数上下文。
-
* 类型:void*
| 特性 | 是否支持 |
@@ -65,7 +62,6 @@ idle_info_t* idle_info_cast (idle_info_t* idle);
> 为TK\_INVALID\_ID时表示无效idle。
-
* 类型:uint32\_t
| 特性 | 是否支持 |
@@ -78,7 +74,6 @@ idle_info_t* idle_info_cast (idle_info_t* idle);
>
idle销毁时的回调函数。
-
* 类型:tk\_destroy\_t
| 特性 | 是否支持 |
@@ -90,7 +85,6 @@ idle_info_t* idle_info_cast (idle_info_t* idle);
>
idle销毁时的回调函数的上下文。
-
* 类型:tk\_destroy\_t
| 特性 | 是否支持 |
@@ -102,7 +96,6 @@ idle_info_t* idle_info_cast (idle_info_t* idle);
>
idle回调函数。
-
* 类型:idle\_func\_t
| 特性 | 是否支持 |
diff --git a/docs/manual/idle_t.md b/docs/manual/idle_t.md
index 077a2714fa..4636dc73d8 100644
--- a/docs/manual/idle_t.md
+++ b/docs/manual/idle_t.md
@@ -24,7 +24,6 @@
> 在非GUI线程请用idle\_queue。
-
----------------------------------
### 函数
@@ -45,7 +44,6 @@
-
* 函数原型:
```
@@ -68,7 +66,6 @@ uint32_t idle_add (idle_func_t on_idle, void* ctx);
-
* 函数原型:
```
@@ -89,7 +86,6 @@ uint32_t idle_count ();
-
* 函数原型:
```
@@ -112,7 +108,6 @@ ret_t idle_queue (idle_func_t on_idle, void* ctx);
-
* 函数原型:
```
@@ -134,7 +129,6 @@ ret_t idle_remove (uint32_t idle_id);
-
* 函数原型:
```
diff --git a/docs/manual/im_action_button_info_event_t.md b/docs/manual/im_action_button_info_event_t.md
index 9a0441d33a..b9d2e8eddd 100644
--- a/docs/manual/im_action_button_info_event_t.md
+++ b/docs/manual/im_action_button_info_event_t.md
@@ -4,7 +4,6 @@
设置软键盘上的action按钮的信息事件。
-
----------------------------------
### 属性
@@ -18,7 +17,6 @@
>
软键盘上的action按钮启用。
-
* 类型:bool\_t
| 特性 | 是否支持 |
@@ -30,7 +28,6 @@
>
软键盘上的action按钮显示的文本。
-
* 类型:char*
| 特性 | 是否支持 |
diff --git a/docs/manual/im_candidates_event_t.md b/docs/manual/im_candidates_event_t.md
index 57b889e450..87ebb1c719 100644
--- a/docs/manual/im_candidates_event_t.md
+++ b/docs/manual/im_candidates_event_t.md
@@ -4,7 +4,6 @@
输入法请求显示候选字的事件。
-
----------------------------------
### 属性
@@ -18,7 +17,6 @@
>
可选的文本,多个文本以\0分隔。如:里\0李\0力\0离\0
-
* 类型:char*
| 特性 | 是否支持 |
@@ -30,7 +28,6 @@
>
可选的文本的个数。
-
* 类型:uint32\_t
| 特性 | 是否支持 |
diff --git a/docs/manual/im_commit_event_t.md b/docs/manual/im_commit_event_t.md
index fcebd6bde3..712349fda2 100644
--- a/docs/manual/im_commit_event_t.md
+++ b/docs/manual/im_commit_event_t.md
@@ -4,7 +4,6 @@
输入法提交输入的文本事件。
-
----------------------------------
### 属性
@@ -18,7 +17,6 @@
>
是否替换原来的文本。
-
* 类型:bool\_t
| 特性 | 是否支持 |
@@ -30,7 +28,6 @@
>
提交的文本。
-
* 类型:char*
| 特性 | 是否支持 |
diff --git a/docs/manual/image_animation_t.md b/docs/manual/image_animation_t.md
index 22f5b78d2d..17635ec00c 100644
--- a/docs/manual/image_animation_t.md
+++ b/docs/manual/image_animation_t.md
@@ -16,7 +16,7 @@
```
> 更多用法请参考:
- [image_animation.xml](https://github.com/zlgopen/awtk/blob/master/demos/assets/raw/ui/image_animation.xml)
+ [image_animation.xml](https://github.com/zlgopen/awtk/blob/master/demos/assets/default/raw/ui/image_animation.xml)
在c代码中使用函数image\_animation\_create创建图片动画控件。如:
@@ -54,7 +54,7 @@
| image\_animation\_set\_range\_sequence | 设置播放序列。比如image为"fire",start_index为0, end_index为99, 将依次播放"fire0", ..., |
| image\_animation\_set\_sequence | 设置播放序列。比如image为"fire",sequence为"12223", 将依次播放"fire1", "fire2", "fire2", "fire2", |
| image\_animation\_set\_unload\_after\_paint | 设置绘制完成后unload图片,以释放内存空间。 |
-| image\_animation\_stop | 停止(并重置index为0)。 |
+| image\_animation\_stop | 停止(并重置index为-1)。 |
### 属性
@@ -375,7 +375,7 @@ ret_t image_animation_set_unload_after_paint (widget_t* widget, bool_t unload_af
* 函数功能:
->
停止(并重置index为0)。
+>
停止(并重置index为-1)。
diff --git a/docs/manual/image_base_t.md b/docs/manual/image_base_t.md
index 55460cfc49..94338a59bf 100644
--- a/docs/manual/image_base_t.md
+++ b/docs/manual/image_base_t.md
@@ -14,9 +14,9 @@
如果需要显示文件系统中的图片,只需将图片名称换成实际的文件名,并加上"file://"前缀即可。如:
```
-
-
-
+
+
+
```
----------------------------------
diff --git a/docs/manual/image_draw_type_t.md b/docs/manual/image_draw_type_t.md
index eeab9b35a6..9327d8f2e9 100644
--- a/docs/manual/image_draw_type_t.md
+++ b/docs/manual/image_draw_type_t.md
@@ -1,7 +1,6 @@
## image\_draw\_type\_t
### 概述
图片绘制方法常量定义。
-
### 常量
diff --git a/docs/manual/image_loader_stb_t.md b/docs/manual/image_loader_stb_t.md
index 0601834209..d6464335a3 100644
--- a/docs/manual/image_loader_stb_t.md
+++ b/docs/manual/image_loader_stb_t.md
@@ -8,7 +8,6 @@
-
----------------------------------
### 函数
@@ -26,7 +25,6 @@
-
* 函数原型:
```
diff --git a/docs/manual/image_loader_t.md b/docs/manual/image_loader_t.md
index 323fc20d00..4760afa9cb 100644
--- a/docs/manual/image_loader_t.md
+++ b/docs/manual/image_loader_t.md
@@ -2,7 +2,6 @@
### 概述
图片加载接口。
-
----------------------------------
### 函数
@@ -22,7 +21,6 @@
-
* 函数原型:
```
@@ -47,7 +45,6 @@ ret_t image_loader_load (image_loader_t* loader, const asset_info_t* asset, bitm
-
* 函数原型:
```
@@ -71,7 +68,6 @@ ret_t image_loader_load_image (const asset_info_t* asset, bitmap_t* bitmap);
-
* 函数原型:
```
@@ -94,7 +90,6 @@ ret_t image_loader_register (image_loader_t* loader);
-
* 函数原型:
```
diff --git a/docs/manual/image_manager_t.md b/docs/manual/image_manager_t.md
index 2ad00cab6a..ee2a99c6c0 100644
--- a/docs/manual/image_manager_t.md
+++ b/docs/manual/image_manager_t.md
@@ -2,7 +2,6 @@
### 概述
图片管理器。负责加载,解码和缓存图片。
-
----------------------------------
### 函数
@@ -34,7 +33,6 @@
>
获取缺省的图片管理器。
-
* 函数原型:
```
@@ -55,7 +53,6 @@ image_manager_t* image_manager ();
-
* 函数原型:
```
@@ -76,7 +73,6 @@ image_manager_t* image_manager_create ();
-
* 函数原型:
```
@@ -98,7 +94,6 @@ ret_t image_manager_deinit (image_manager_t* imm);
-
* 函数原型:
```
@@ -122,7 +117,6 @@ ret_t image_manager_destroy (image_manager_t* imm);
-
* 函数原型:
```
@@ -146,7 +140,6 @@ ret_t image_manager_get_bitmap (image_manager_t* imm, char* name, bitmap_t* imag
-
* 函数原型:
```
@@ -168,7 +161,6 @@ image_manager_t* image_manager_init (image_manager_t* imm);
-
* 函数原型:
```
@@ -199,7 +191,6 @@ ret_t image_manager_set (image_manager_t* imm);
-
* 函数原型:
```
@@ -223,7 +214,6 @@ ret_t image_manager_set_assets_manager (image_manager_t* imm, assets_manager_t*
-
* 函数原型:
```
@@ -245,7 +235,6 @@ ret_t image_manager_unload_all (image_manager_t* imm);
-
* 函数原型:
```
@@ -268,7 +257,6 @@ ret_t image_manager_unload_bitmap (image_manager_t* imm, bitmap_t* image);
-
* 函数原型:
```
@@ -291,7 +279,6 @@ ret_t image_manager_unload_unused (image_manager_t* imm, uint32_t time_delta_s);
-
* 函数原型:
```
diff --git a/docs/manual/image_t.md b/docs/manual/image_t.md
index 157529d53f..0aa705ffc6 100644
--- a/docs/manual/image_t.md
+++ b/docs/manual/image_t.md
@@ -23,7 +23,7 @@
```
> 更多用法请参考:
- [image.xml](https://github.com/zlgopen/awtk/blob/master/demos/assets/raw/ui/images.xml)
+ [image.xml](https://github.com/zlgopen/awtk/blob/master/demos/assets/default/raw/ui/images.xml)
在c代码中使用函数image\_create创建图片控件。如:
@@ -58,7 +58,7 @@
> 更多用法请参考:
[theme
- default](https://github.com/zlgopen/awtk/blob/master/demos/assets/raw/styles/default.xml#L313)
+ default](https://github.com/zlgopen/awtk/blob/master/demos/assets/default/raw/styles/default.xml#L313)
----------------------------------
diff --git a/docs/manual/image_value_t.md b/docs/manual/image_value_t.md
index dd18e7c976..1e02606302 100644
--- a/docs/manual/image_value_t.md
+++ b/docs/manual/image_value_t.md
@@ -21,7 +21,7 @@ image\_value\_t是[widget\_t](widget_t.md)的子类控件,widget\_t的函数
```
> 更多用法请参考:
- [image\_value](https://github.com/zlgopen/awtk/blob/master/demos/assets/raw/ui/image_value.xml)
+ [image\_value](https://github.com/zlgopen/awtk/blob/master/demos/assets/default/raw/ui/image_value.xml)
在c代码中使用函数image\_value\_create创建图片值控件。如:
diff --git a/docs/manual/images/app_bar_t_0.png b/docs/manual/images/app_bar_t_0.png
index 43b9aaa732..de7a5c5cd0 100644
Binary files a/docs/manual/images/app_bar_t_0.png and b/docs/manual/images/app_bar_t_0.png differ
diff --git a/docs/manual/images/button_group_t_0.png b/docs/manual/images/button_group_t_0.png
index 3aba5f1ac1..ae70129f12 100644
Binary files a/docs/manual/images/button_group_t_0.png and b/docs/manual/images/button_group_t_0.png differ
diff --git a/docs/manual/images/button_t_0.png b/docs/manual/images/button_t_0.png
index ebbf2200d6..b5e1761e72 100644
Binary files a/docs/manual/images/button_t_0.png and b/docs/manual/images/button_t_0.png differ
diff --git a/docs/manual/images/calibration_win_t_0.png b/docs/manual/images/calibration_win_t_0.png
index aeaba33d3f..a89f9e3c64 100644
Binary files a/docs/manual/images/calibration_win_t_0.png and b/docs/manual/images/calibration_win_t_0.png differ
diff --git a/docs/manual/images/candidates_t_0.png b/docs/manual/images/candidates_t_0.png
index e689b0a43f..c92193b3ec 100644
Binary files a/docs/manual/images/candidates_t_0.png and b/docs/manual/images/candidates_t_0.png differ
diff --git a/docs/manual/images/canvas_widget_t_0.png b/docs/manual/images/canvas_widget_t_0.png
index b9959a8979..9653295ffb 100644
Binary files a/docs/manual/images/canvas_widget_t_0.png and b/docs/manual/images/canvas_widget_t_0.png differ
diff --git a/docs/manual/images/check_button_t_0.png b/docs/manual/images/check_button_t_0.png
index bbe606a542..528710cff0 100644
Binary files a/docs/manual/images/check_button_t_0.png and b/docs/manual/images/check_button_t_0.png differ
diff --git a/docs/manual/images/children_layouter_default_t_0.png b/docs/manual/images/children_layouter_default_t_0.png
index 0d9135939e..4ca1462502 100644
Binary files a/docs/manual/images/children_layouter_default_t_0.png and b/docs/manual/images/children_layouter_default_t_0.png differ
diff --git a/docs/manual/images/children_layouter_list_view_t_0.png b/docs/manual/images/children_layouter_list_view_t_0.png
index ab4ee7b163..4f7cda2eac 100644
Binary files a/docs/manual/images/children_layouter_list_view_t_0.png and b/docs/manual/images/children_layouter_list_view_t_0.png differ
diff --git a/docs/manual/images/color_component_t_0.png b/docs/manual/images/color_component_t_0.png
index f061e2aa76..e2f8bb6ef0 100644
Binary files a/docs/manual/images/color_component_t_0.png and b/docs/manual/images/color_component_t_0.png differ
diff --git a/docs/manual/images/color_picker_t_0.png b/docs/manual/images/color_picker_t_0.png
index e402017bac..62ad7b447b 100644
Binary files a/docs/manual/images/color_picker_t_0.png and b/docs/manual/images/color_picker_t_0.png differ
diff --git a/docs/manual/images/color_tile_t_0.png b/docs/manual/images/color_tile_t_0.png
index 0cce0d9369..590b2bf05d 100644
Binary files a/docs/manual/images/color_tile_t_0.png and b/docs/manual/images/color_tile_t_0.png differ
diff --git a/docs/manual/images/column_t_0.png b/docs/manual/images/column_t_0.png
index bb7559b657..416874e9f1 100644
Binary files a/docs/manual/images/column_t_0.png and b/docs/manual/images/column_t_0.png differ
diff --git a/docs/manual/images/combo_box_ex_t_0.png b/docs/manual/images/combo_box_ex_t_0.png
index 6de506166b..ba05f65872 100644
Binary files a/docs/manual/images/combo_box_ex_t_0.png and b/docs/manual/images/combo_box_ex_t_0.png differ
diff --git a/docs/manual/images/combo_box_item_t_0.png b/docs/manual/images/combo_box_item_t_0.png
index dbdb34a1ad..4722321d6a 100644
Binary files a/docs/manual/images/combo_box_item_t_0.png and b/docs/manual/images/combo_box_item_t_0.png differ
diff --git a/docs/manual/images/combo_box_t_0.png b/docs/manual/images/combo_box_t_0.png
index d3cf03550a..97ec923e96 100644
Binary files a/docs/manual/images/combo_box_t_0.png and b/docs/manual/images/combo_box_t_0.png differ
diff --git a/docs/manual/images/dialog_client_t_0.png b/docs/manual/images/dialog_client_t_0.png
index 89e9df969d..84bca30187 100644
Binary files a/docs/manual/images/dialog_client_t_0.png and b/docs/manual/images/dialog_client_t_0.png differ
diff --git a/docs/manual/images/dialog_t_0.png b/docs/manual/images/dialog_t_0.png
index 4eec96ad87..5c990f9652 100644
Binary files a/docs/manual/images/dialog_t_0.png and b/docs/manual/images/dialog_t_0.png differ
diff --git a/docs/manual/images/dialog_t_1.png b/docs/manual/images/dialog_t_1.png
index de40f3cf96..f5406e2949 100644
Binary files a/docs/manual/images/dialog_t_1.png and b/docs/manual/images/dialog_t_1.png differ
diff --git a/docs/manual/images/dialog_title_t_0.png b/docs/manual/images/dialog_title_t_0.png
index 0a72485244..d389d4a9e9 100644
Binary files a/docs/manual/images/dialog_title_t_0.png and b/docs/manual/images/dialog_title_t_0.png differ
diff --git a/docs/manual/images/digit_clock_t_0.png b/docs/manual/images/digit_clock_t_0.png
index f15590bbbc..861737c91e 100644
Binary files a/docs/manual/images/digit_clock_t_0.png and b/docs/manual/images/digit_clock_t_0.png differ
diff --git a/docs/manual/images/draggable_t_0.png b/docs/manual/images/draggable_t_0.png
new file mode 100644
index 0000000000..12ca048ec6
Binary files /dev/null and b/docs/manual/images/draggable_t_0.png differ
diff --git a/docs/manual/images/dragger_t_0.png b/docs/manual/images/dragger_t_0.png
index 0867a29227..571b68e834 100644
Binary files a/docs/manual/images/dragger_t_0.png and b/docs/manual/images/dragger_t_0.png differ
diff --git a/docs/manual/images/edit_t_0.png b/docs/manual/images/edit_t_0.png
index 6fdf1a583b..44a9b11914 100644
Binary files a/docs/manual/images/edit_t_0.png and b/docs/manual/images/edit_t_0.png differ
diff --git a/docs/manual/images/event_source_fd_t_0.png b/docs/manual/images/event_source_fd_t_0.png
index 872761782e..6a851735f3 100644
Binary files a/docs/manual/images/event_source_fd_t_0.png and b/docs/manual/images/event_source_fd_t_0.png differ
diff --git a/docs/manual/images/event_source_idle_t_0.png b/docs/manual/images/event_source_idle_t_0.png
index 209952869e..e5c11c83d0 100644
Binary files a/docs/manual/images/event_source_idle_t_0.png and b/docs/manual/images/event_source_idle_t_0.png differ
diff --git a/docs/manual/images/event_source_t_0.png b/docs/manual/images/event_source_t_0.png
index 817831e261..ab8e81e935 100644
Binary files a/docs/manual/images/event_source_t_0.png and b/docs/manual/images/event_source_t_0.png differ
diff --git a/docs/manual/images/event_source_timer_t_0.png b/docs/manual/images/event_source_timer_t_0.png
index 5ac7cf1c95..592e47475d 100644
Binary files a/docs/manual/images/event_source_timer_t_0.png and b/docs/manual/images/event_source_timer_t_0.png differ
diff --git a/docs/manual/images/font_loader_bitmap_t_0.png b/docs/manual/images/font_loader_bitmap_t_0.png
index 37622cb093..1c084b7b1f 100644
Binary files a/docs/manual/images/font_loader_bitmap_t_0.png and b/docs/manual/images/font_loader_bitmap_t_0.png differ
diff --git a/docs/manual/images/font_loader_ft_t_0.png b/docs/manual/images/font_loader_ft_t_0.png
index 1675a9dd20..0acb8944d1 100644
Binary files a/docs/manual/images/font_loader_ft_t_0.png and b/docs/manual/images/font_loader_ft_t_0.png differ
diff --git a/docs/manual/images/font_loader_stb_t_0.png b/docs/manual/images/font_loader_stb_t_0.png
index f96dd67d31..3db7b93399 100644
Binary files a/docs/manual/images/font_loader_stb_t_0.png and b/docs/manual/images/font_loader_stb_t_0.png differ
diff --git a/docs/manual/images/gif_image_t_0.png b/docs/manual/images/gif_image_t_0.png
index 1777db38f5..b84ce669fb 100644
Binary files a/docs/manual/images/gif_image_t_0.png and b/docs/manual/images/gif_image_t_0.png differ
diff --git a/docs/manual/images/grid_item_t_0.png b/docs/manual/images/grid_item_t_0.png
index 3a5ca0cec8..879ad6d800 100644
Binary files a/docs/manual/images/grid_item_t_0.png and b/docs/manual/images/grid_item_t_0.png differ
diff --git a/docs/manual/images/grid_t_0.png b/docs/manual/images/grid_t_0.png
index b6a12b485d..07cc9f93b7 100644
Binary files a/docs/manual/images/grid_t_0.png and b/docs/manual/images/grid_t_0.png differ
diff --git a/docs/manual/images/group_box_t_0.png b/docs/manual/images/group_box_t_0.png
index 6cab70e24d..3ab5b695d2 100644
Binary files a/docs/manual/images/group_box_t_0.png and b/docs/manual/images/group_box_t_0.png differ
diff --git a/docs/manual/images/guage_pointer_t_0.png b/docs/manual/images/guage_pointer_t_0.png
index 9396510d1e..a0c6049b2a 100644
Binary files a/docs/manual/images/guage_pointer_t_0.png and b/docs/manual/images/guage_pointer_t_0.png differ
diff --git a/docs/manual/images/guage_t_0.png b/docs/manual/images/guage_t_0.png
index b28551e7d3..1af7cdd848 100644
Binary files a/docs/manual/images/guage_t_0.png and b/docs/manual/images/guage_t_0.png differ
diff --git a/docs/manual/images/hscroll_label_t_0.png b/docs/manual/images/hscroll_label_t_0.png
index d4c410a33e..44e270359d 100644
Binary files a/docs/manual/images/hscroll_label_t_0.png and b/docs/manual/images/hscroll_label_t_0.png differ
diff --git a/docs/manual/images/idle_info_t_0.png b/docs/manual/images/idle_info_t_0.png
index b03f6fb3af..e418e572dd 100644
Binary files a/docs/manual/images/idle_info_t_0.png and b/docs/manual/images/idle_info_t_0.png differ
diff --git a/docs/manual/images/im_action_button_info_event_t_0.png b/docs/manual/images/im_action_button_info_event_t_0.png
index adfe314986..2d6a2f739b 100644
Binary files a/docs/manual/images/im_action_button_info_event_t_0.png and b/docs/manual/images/im_action_button_info_event_t_0.png differ
diff --git a/docs/manual/images/im_candidates_event_t_0.png b/docs/manual/images/im_candidates_event_t_0.png
index 223cd16194..3f55d20ea8 100644
Binary files a/docs/manual/images/im_candidates_event_t_0.png and b/docs/manual/images/im_candidates_event_t_0.png differ
diff --git a/docs/manual/images/im_commit_event_t_0.png b/docs/manual/images/im_commit_event_t_0.png
index 305dc233e9..ac7fb6c811 100644
Binary files a/docs/manual/images/im_commit_event_t_0.png and b/docs/manual/images/im_commit_event_t_0.png differ
diff --git a/docs/manual/images/image_animation_t_0.png b/docs/manual/images/image_animation_t_0.png
index 8acb1f5134..514ab84dc2 100644
Binary files a/docs/manual/images/image_animation_t_0.png and b/docs/manual/images/image_animation_t_0.png differ
diff --git a/docs/manual/images/image_base_t_0.png b/docs/manual/images/image_base_t_0.png
index d0bbe4a45c..2b8e74cd69 100644
Binary files a/docs/manual/images/image_base_t_0.png and b/docs/manual/images/image_base_t_0.png differ
diff --git a/docs/manual/images/image_base_t_1.png b/docs/manual/images/image_base_t_1.png
index f6430582a7..986c788246 100644
Binary files a/docs/manual/images/image_base_t_1.png and b/docs/manual/images/image_base_t_1.png differ
diff --git a/docs/manual/images/image_loader_stb_t_0.png b/docs/manual/images/image_loader_stb_t_0.png
index eebbf81250..fc6e8a0e3f 100644
Binary files a/docs/manual/images/image_loader_stb_t_0.png and b/docs/manual/images/image_loader_stb_t_0.png differ
diff --git a/docs/manual/images/image_t_0.png b/docs/manual/images/image_t_0.png
index f338b83a29..f490d9251c 100644
Binary files a/docs/manual/images/image_t_0.png and b/docs/manual/images/image_t_0.png differ
diff --git a/docs/manual/images/image_value_t_0.png b/docs/manual/images/image_value_t_0.png
index 38a337cc1f..5380787cf1 100644
Binary files a/docs/manual/images/image_value_t_0.png and b/docs/manual/images/image_value_t_0.png differ
diff --git a/docs/manual/images/input_engine_null_t_0.png b/docs/manual/images/input_engine_null_t_0.png
index 752691fe47..de0ee20a61 100644
Binary files a/docs/manual/images/input_engine_null_t_0.png and b/docs/manual/images/input_engine_null_t_0.png differ
diff --git a/docs/manual/images/input_engine_pinyin_t_0.png b/docs/manual/images/input_engine_pinyin_t_0.png
index 1aab67ab6f..d37c80f417 100644
Binary files a/docs/manual/images/input_engine_pinyin_t_0.png and b/docs/manual/images/input_engine_pinyin_t_0.png differ
diff --git a/docs/manual/images/input_engine_t_0.png b/docs/manual/images/input_engine_t_0.png
index 209dedbc34..0caa5e0ccb 100644
Binary files a/docs/manual/images/input_engine_t_0.png and b/docs/manual/images/input_engine_t_0.png differ
diff --git a/docs/manual/images/input_method_default_t_0.png b/docs/manual/images/input_method_default_t_0.png
index 56eb7a23d6..0c36f48541 100644
Binary files a/docs/manual/images/input_method_default_t_0.png and b/docs/manual/images/input_method_default_t_0.png differ
diff --git a/docs/manual/images/input_method_null_t_0.png b/docs/manual/images/input_method_null_t_0.png
index 3f25cf47b7..98dd274547 100644
Binary files a/docs/manual/images/input_method_null_t_0.png and b/docs/manual/images/input_method_null_t_0.png differ
diff --git a/docs/manual/images/input_method_sdl_t_0.png b/docs/manual/images/input_method_sdl_t_0.png
index 353c73cbb3..fc480a5d60 100644
Binary files a/docs/manual/images/input_method_sdl_t_0.png and b/docs/manual/images/input_method_sdl_t_0.png differ
diff --git a/docs/manual/images/input_method_t_0.png b/docs/manual/images/input_method_t_0.png
index 821d47f5a3..b60ce58ca5 100644
Binary files a/docs/manual/images/input_method_t_0.png and b/docs/manual/images/input_method_t_0.png differ
diff --git a/docs/manual/images/key_event_t_0.png b/docs/manual/images/key_event_t_0.png
index 86789f681b..d5576cd888 100644
Binary files a/docs/manual/images/key_event_t_0.png and b/docs/manual/images/key_event_t_0.png differ
diff --git a/docs/manual/images/keyboard_t_0.png b/docs/manual/images/keyboard_t_0.png
index 0c55124318..a96f1f85b3 100644
Binary files a/docs/manual/images/keyboard_t_0.png and b/docs/manual/images/keyboard_t_0.png differ
diff --git a/docs/manual/images/label_t_0.png b/docs/manual/images/label_t_0.png
index 022a3b19b2..835fd8accd 100644
Binary files a/docs/manual/images/label_t_0.png and b/docs/manual/images/label_t_0.png differ
diff --git a/docs/manual/images/lcd_mono_t_0.png b/docs/manual/images/lcd_mono_t_0.png
index f9cf46b28f..d0c0f01a0c 100644
Binary files a/docs/manual/images/lcd_mono_t_0.png and b/docs/manual/images/lcd_mono_t_0.png differ
diff --git a/docs/manual/images/lcd_profile_t_0.png b/docs/manual/images/lcd_profile_t_0.png
index 4966bf3bd3..c16881c286 100644
Binary files a/docs/manual/images/lcd_profile_t_0.png and b/docs/manual/images/lcd_profile_t_0.png differ
diff --git a/docs/manual/images/line_number_t_0.png b/docs/manual/images/line_number_t_0.png
index 65ed6be80e..51cc00b6d9 100644
Binary files a/docs/manual/images/line_number_t_0.png and b/docs/manual/images/line_number_t_0.png differ
diff --git a/docs/manual/images/list_item_t_0.png b/docs/manual/images/list_item_t_0.png
index ffae910dfc..fc202adbab 100644
Binary files a/docs/manual/images/list_item_t_0.png and b/docs/manual/images/list_item_t_0.png differ
diff --git a/docs/manual/images/list_view_h_t_0.png b/docs/manual/images/list_view_h_t_0.png
index 45a3001176..9eb733e7e3 100644
Binary files a/docs/manual/images/list_view_h_t_0.png and b/docs/manual/images/list_view_h_t_0.png differ
diff --git a/docs/manual/images/list_view_t_0.png b/docs/manual/images/list_view_t_0.png
index fcace9401f..d603b76c65 100644
Binary files a/docs/manual/images/list_view_t_0.png and b/docs/manual/images/list_view_t_0.png differ
diff --git a/docs/manual/images/mledit_t_0.png b/docs/manual/images/mledit_t_0.png
index 8b8df46742..2c748ffd02 100644
Binary files a/docs/manual/images/mledit_t_0.png and b/docs/manual/images/mledit_t_0.png differ
diff --git a/docs/manual/images/mutable_image_t_0.png b/docs/manual/images/mutable_image_t_0.png
index b2cfc03ff7..4cf8c8a4a5 100644
Binary files a/docs/manual/images/mutable_image_t_0.png and b/docs/manual/images/mutable_image_t_0.png differ
diff --git a/docs/manual/images/native_window_t_0.png b/docs/manual/images/native_window_t_0.png
index d5e2ff883b..847f493c10 100644
Binary files a/docs/manual/images/native_window_t_0.png and b/docs/manual/images/native_window_t_0.png differ
diff --git a/docs/manual/images/object_array_t_0.png b/docs/manual/images/object_array_t_0.png
index fc6b329923..a2a9e90a0a 100644
Binary files a/docs/manual/images/object_array_t_0.png and b/docs/manual/images/object_array_t_0.png differ
diff --git a/docs/manual/images/object_default_t_0.png b/docs/manual/images/object_default_t_0.png
index 578896521b..781428cd1f 100644
Binary files a/docs/manual/images/object_default_t_0.png and b/docs/manual/images/object_default_t_0.png differ
diff --git a/docs/manual/images/object_t_0.png b/docs/manual/images/object_t_0.png
index 992c32901b..e2e0356be4 100644
Binary files a/docs/manual/images/object_t_0.png and b/docs/manual/images/object_t_0.png differ
diff --git a/docs/manual/images/orientation_event_t_0.png b/docs/manual/images/orientation_event_t_0.png
index 311c270ce3..df5b6d3b1f 100644
Binary files a/docs/manual/images/orientation_event_t_0.png and b/docs/manual/images/orientation_event_t_0.png differ
diff --git a/docs/manual/images/overlay_t_0.png b/docs/manual/images/overlay_t_0.png
index 2e0b9789a5..221cdebf3e 100644
Binary files a/docs/manual/images/overlay_t_0.png and b/docs/manual/images/overlay_t_0.png differ
diff --git a/docs/manual/images/pages_t_0.png b/docs/manual/images/pages_t_0.png
index bc9b63fba4..43de0a0628 100644
Binary files a/docs/manual/images/pages_t_0.png and b/docs/manual/images/pages_t_0.png differ
diff --git a/docs/manual/images/paint_event_t_0.png b/docs/manual/images/paint_event_t_0.png
index fd39ad39d4..eb3ddcd871 100644
Binary files a/docs/manual/images/paint_event_t_0.png and b/docs/manual/images/paint_event_t_0.png differ
diff --git a/docs/manual/images/pointer_event_t_0.png b/docs/manual/images/pointer_event_t_0.png
index 081e0024d5..a198e57d58 100644
Binary files a/docs/manual/images/pointer_event_t_0.png and b/docs/manual/images/pointer_event_t_0.png differ
diff --git a/docs/manual/images/popup_t_0.png b/docs/manual/images/popup_t_0.png
index 6095cdc519..f2dda08c85 100644
Binary files a/docs/manual/images/popup_t_0.png and b/docs/manual/images/popup_t_0.png differ
diff --git a/docs/manual/images/progress_bar_t_0.png b/docs/manual/images/progress_bar_t_0.png
index bb9fdeed1f..d420a303fb 100644
Binary files a/docs/manual/images/progress_bar_t_0.png and b/docs/manual/images/progress_bar_t_0.png differ
diff --git a/docs/manual/images/progress_circle_t_0.png b/docs/manual/images/progress_circle_t_0.png
index e69593d6de..8e0917f13f 100644
Binary files a/docs/manual/images/progress_circle_t_0.png and b/docs/manual/images/progress_circle_t_0.png differ
diff --git a/docs/manual/images/prop_change_event_t_0.png b/docs/manual/images/prop_change_event_t_0.png
index 15528114b5..63ebe1094f 100644
Binary files a/docs/manual/images/prop_change_event_t_0.png and b/docs/manual/images/prop_change_event_t_0.png differ
diff --git a/docs/manual/images/rich_text_t_0.png b/docs/manual/images/rich_text_t_0.png
index fff1326954..816837982e 100644
Binary files a/docs/manual/images/rich_text_t_0.png and b/docs/manual/images/rich_text_t_0.png differ
diff --git a/docs/manual/images/row_t_0.png b/docs/manual/images/row_t_0.png
index fc1cad0809..aaa77efbf2 100644
Binary files a/docs/manual/images/row_t_0.png and b/docs/manual/images/row_t_0.png differ
diff --git a/docs/manual/images/scroll_bar_t_0.png b/docs/manual/images/scroll_bar_t_0.png
index 22310f566d..cf5f55b694 100644
Binary files a/docs/manual/images/scroll_bar_t_0.png and b/docs/manual/images/scroll_bar_t_0.png differ
diff --git a/docs/manual/images/scroll_view_t_0.png b/docs/manual/images/scroll_view_t_0.png
index 53f84021d6..b4e30591f5 100644
Binary files a/docs/manual/images/scroll_view_t_0.png and b/docs/manual/images/scroll_view_t_0.png differ
diff --git a/docs/manual/images/self_layouter_default_t_0.png b/docs/manual/images/self_layouter_default_t_0.png
index 3256c2f5bb..03a1564fda 100644
Binary files a/docs/manual/images/self_layouter_default_t_0.png and b/docs/manual/images/self_layouter_default_t_0.png differ
diff --git a/docs/manual/images/self_layouter_menu_t_0.png b/docs/manual/images/self_layouter_menu_t_0.png
index 895f79e462..0e9f6ce2e3 100644
Binary files a/docs/manual/images/self_layouter_menu_t_0.png and b/docs/manual/images/self_layouter_menu_t_0.png differ
diff --git a/docs/manual/images/slide_indicator_t_0.png b/docs/manual/images/slide_indicator_t_0.png
index e9a88fbccb..b353dba9a1 100644
Binary files a/docs/manual/images/slide_indicator_t_0.png and b/docs/manual/images/slide_indicator_t_0.png differ
diff --git a/docs/manual/images/slide_menu_t_0.png b/docs/manual/images/slide_menu_t_0.png
index d14ebe588f..3a58d89318 100644
Binary files a/docs/manual/images/slide_menu_t_0.png and b/docs/manual/images/slide_menu_t_0.png differ
diff --git a/docs/manual/images/slide_view_t_0.png b/docs/manual/images/slide_view_t_0.png
index 0cf388ccbf..a327509761 100644
Binary files a/docs/manual/images/slide_view_t_0.png and b/docs/manual/images/slide_view_t_0.png differ
diff --git a/docs/manual/images/slider_t_0.png b/docs/manual/images/slider_t_0.png
index bc8903acae..e4f0eeb48b 100644
Binary files a/docs/manual/images/slider_t_0.png and b/docs/manual/images/slider_t_0.png differ
diff --git a/docs/manual/images/spin_box_t_0.png b/docs/manual/images/spin_box_t_0.png
index eb063038b4..ec27ce57c3 100644
Binary files a/docs/manual/images/spin_box_t_0.png and b/docs/manual/images/spin_box_t_0.png differ
diff --git a/docs/manual/images/style_const_t_0.png b/docs/manual/images/style_const_t_0.png
index 818d4327f0..f2e7d10312 100644
Binary files a/docs/manual/images/style_const_t_0.png and b/docs/manual/images/style_const_t_0.png differ
diff --git a/docs/manual/images/style_mutable_t_0.png b/docs/manual/images/style_mutable_t_0.png
index 1017ff31c9..73d7787cfb 100644
Binary files a/docs/manual/images/style_mutable_t_0.png and b/docs/manual/images/style_mutable_t_0.png differ
diff --git a/docs/manual/images/svg_image_t_0.png b/docs/manual/images/svg_image_t_0.png
index 79733b4a40..f691cd4eec 100644
Binary files a/docs/manual/images/svg_image_t_0.png and b/docs/manual/images/svg_image_t_0.png differ
diff --git a/docs/manual/images/switch_t_0.png b/docs/manual/images/switch_t_0.png
index fd3bb11cee..88b99df8f2 100644
Binary files a/docs/manual/images/switch_t_0.png and b/docs/manual/images/switch_t_0.png differ
diff --git a/docs/manual/images/system_bar_t_0.png b/docs/manual/images/system_bar_t_0.png
index 7152961706..7f38e645ab 100644
Binary files a/docs/manual/images/system_bar_t_0.png and b/docs/manual/images/system_bar_t_0.png differ
diff --git a/docs/manual/images/system_info_t_0.png b/docs/manual/images/system_info_t_0.png
index 86df3f49b6..dd26179c8a 100644
Binary files a/docs/manual/images/system_info_t_0.png and b/docs/manual/images/system_info_t_0.png differ
diff --git a/docs/manual/images/tab_button_group_t_0.png b/docs/manual/images/tab_button_group_t_0.png
index 6ddb86d389..8a91ac5009 100644
Binary files a/docs/manual/images/tab_button_group_t_0.png and b/docs/manual/images/tab_button_group_t_0.png differ
diff --git a/docs/manual/images/tab_button_t_0.png b/docs/manual/images/tab_button_t_0.png
index f0fbe7d115..8653711830 100644
Binary files a/docs/manual/images/tab_button_t_0.png and b/docs/manual/images/tab_button_t_0.png differ
diff --git a/docs/manual/images/tab_control_t_0.png b/docs/manual/images/tab_control_t_0.png
index 58f6398807..63e470e941 100644
Binary files a/docs/manual/images/tab_control_t_0.png and b/docs/manual/images/tab_control_t_0.png differ
diff --git a/docs/manual/images/tab_control_t_1.png b/docs/manual/images/tab_control_t_1.png
index 18f483aa52..fe2276ffee 100644
Binary files a/docs/manual/images/tab_control_t_1.png and b/docs/manual/images/tab_control_t_1.png differ
diff --git a/docs/manual/images/text_selector_t_0.png b/docs/manual/images/text_selector_t_0.png
index 101c0d3032..10096da02f 100644
Binary files a/docs/manual/images/text_selector_t_0.png and b/docs/manual/images/text_selector_t_0.png differ
diff --git a/docs/manual/images/time_clock_t_0.png b/docs/manual/images/time_clock_t_0.png
index 7908424868..6103d39b01 100644
Binary files a/docs/manual/images/time_clock_t_0.png and b/docs/manual/images/time_clock_t_0.png differ
diff --git a/docs/manual/images/timer_info_t_0.png b/docs/manual/images/timer_info_t_0.png
index 77f65b6614..9f8476b464 100644
Binary files a/docs/manual/images/timer_info_t_0.png and b/docs/manual/images/timer_info_t_0.png differ
diff --git a/docs/manual/images/tk_iostream_mem_t_0.png b/docs/manual/images/tk_iostream_mem_t_0.png
index 7a3cfc63ae..e5bd5a2abb 100644
Binary files a/docs/manual/images/tk_iostream_mem_t_0.png and b/docs/manual/images/tk_iostream_mem_t_0.png differ
diff --git a/docs/manual/images/tk_iostream_noisy_t_0.png b/docs/manual/images/tk_iostream_noisy_t_0.png
index 750389bfbd..5fee414d78 100644
Binary files a/docs/manual/images/tk_iostream_noisy_t_0.png and b/docs/manual/images/tk_iostream_noisy_t_0.png differ
diff --git a/docs/manual/images/tk_iostream_serial_t_0.png b/docs/manual/images/tk_iostream_serial_t_0.png
index 6ac13f9802..3715d47283 100644
Binary files a/docs/manual/images/tk_iostream_serial_t_0.png and b/docs/manual/images/tk_iostream_serial_t_0.png differ
diff --git a/docs/manual/images/tk_iostream_shdlc_t_0.png b/docs/manual/images/tk_iostream_shdlc_t_0.png
index 783dddecca..8cc8f49b09 100644
Binary files a/docs/manual/images/tk_iostream_shdlc_t_0.png and b/docs/manual/images/tk_iostream_shdlc_t_0.png differ
diff --git a/docs/manual/images/tk_iostream_t_0.png b/docs/manual/images/tk_iostream_t_0.png
index ad3c2c3fb0..56382de8e8 100644
Binary files a/docs/manual/images/tk_iostream_t_0.png and b/docs/manual/images/tk_iostream_t_0.png differ
diff --git a/docs/manual/images/tk_iostream_tcp_t_0.png b/docs/manual/images/tk_iostream_tcp_t_0.png
index 8d902f6188..34d520b5ef 100644
Binary files a/docs/manual/images/tk_iostream_tcp_t_0.png and b/docs/manual/images/tk_iostream_tcp_t_0.png differ
diff --git a/docs/manual/images/tk_iostream_udp_t_0.png b/docs/manual/images/tk_iostream_udp_t_0.png
index 326f241563..1116281a13 100644
Binary files a/docs/manual/images/tk_iostream_udp_t_0.png and b/docs/manual/images/tk_iostream_udp_t_0.png differ
diff --git a/docs/manual/images/tk_istream_buffered_t_0.png b/docs/manual/images/tk_istream_buffered_t_0.png
index 51559a2a4c..23eb86bd81 100644
Binary files a/docs/manual/images/tk_istream_buffered_t_0.png and b/docs/manual/images/tk_istream_buffered_t_0.png differ
diff --git a/docs/manual/images/tk_istream_file_t_0.png b/docs/manual/images/tk_istream_file_t_0.png
index e8087bc73a..19cc69317d 100644
Binary files a/docs/manual/images/tk_istream_file_t_0.png and b/docs/manual/images/tk_istream_file_t_0.png differ
diff --git a/docs/manual/images/tk_istream_mem_t_0.png b/docs/manual/images/tk_istream_mem_t_0.png
index aafff9f093..0447cf6e9e 100644
Binary files a/docs/manual/images/tk_istream_mem_t_0.png and b/docs/manual/images/tk_istream_mem_t_0.png differ
diff --git a/docs/manual/images/tk_istream_serial_t_0.png b/docs/manual/images/tk_istream_serial_t_0.png
index 4984e4bfd9..7e626e15ef 100644
Binary files a/docs/manual/images/tk_istream_serial_t_0.png and b/docs/manual/images/tk_istream_serial_t_0.png differ
diff --git a/docs/manual/images/tk_istream_shdlc_t_0.png b/docs/manual/images/tk_istream_shdlc_t_0.png
index 5147bfde3a..c5cd27c0e8 100644
Binary files a/docs/manual/images/tk_istream_shdlc_t_0.png and b/docs/manual/images/tk_istream_shdlc_t_0.png differ
diff --git a/docs/manual/images/tk_istream_t_0.png b/docs/manual/images/tk_istream_t_0.png
index d878b68cd3..28f56ba252 100644
Binary files a/docs/manual/images/tk_istream_t_0.png and b/docs/manual/images/tk_istream_t_0.png differ
diff --git a/docs/manual/images/tk_istream_tcp_t_0.png b/docs/manual/images/tk_istream_tcp_t_0.png
index 7545c3b425..d7fb605ced 100644
Binary files a/docs/manual/images/tk_istream_tcp_t_0.png and b/docs/manual/images/tk_istream_tcp_t_0.png differ
diff --git a/docs/manual/images/tk_istream_udp_t_0.png b/docs/manual/images/tk_istream_udp_t_0.png
index fb86762927..8cf76599e6 100644
Binary files a/docs/manual/images/tk_istream_udp_t_0.png and b/docs/manual/images/tk_istream_udp_t_0.png differ
diff --git a/docs/manual/images/tk_ostream_buffered_t_0.png b/docs/manual/images/tk_ostream_buffered_t_0.png
index 02ecfac707..14c4053a1a 100644
Binary files a/docs/manual/images/tk_ostream_buffered_t_0.png and b/docs/manual/images/tk_ostream_buffered_t_0.png differ
diff --git a/docs/manual/images/tk_ostream_file_t_0.png b/docs/manual/images/tk_ostream_file_t_0.png
index 714a342b11..0278ecaca5 100644
Binary files a/docs/manual/images/tk_ostream_file_t_0.png and b/docs/manual/images/tk_ostream_file_t_0.png differ
diff --git a/docs/manual/images/tk_ostream_mem_t_0.png b/docs/manual/images/tk_ostream_mem_t_0.png
index 3a62f98a2f..fc0ec9b1d5 100644
Binary files a/docs/manual/images/tk_ostream_mem_t_0.png and b/docs/manual/images/tk_ostream_mem_t_0.png differ
diff --git a/docs/manual/images/tk_ostream_noisy_t_0.png b/docs/manual/images/tk_ostream_noisy_t_0.png
index 51297d4674..f1a5b511e3 100644
Binary files a/docs/manual/images/tk_ostream_noisy_t_0.png and b/docs/manual/images/tk_ostream_noisy_t_0.png differ
diff --git a/docs/manual/images/tk_ostream_serial_t_0.png b/docs/manual/images/tk_ostream_serial_t_0.png
index e8e664b20f..cb4be38548 100644
Binary files a/docs/manual/images/tk_ostream_serial_t_0.png and b/docs/manual/images/tk_ostream_serial_t_0.png differ
diff --git a/docs/manual/images/tk_ostream_shdlc_t_0.png b/docs/manual/images/tk_ostream_shdlc_t_0.png
index afc3c73445..538f09830b 100644
Binary files a/docs/manual/images/tk_ostream_shdlc_t_0.png and b/docs/manual/images/tk_ostream_shdlc_t_0.png differ
diff --git a/docs/manual/images/tk_ostream_t_0.png b/docs/manual/images/tk_ostream_t_0.png
index 4e7c1d5895..88efb7a706 100644
Binary files a/docs/manual/images/tk_ostream_t_0.png and b/docs/manual/images/tk_ostream_t_0.png differ
diff --git a/docs/manual/images/tk_ostream_tcp_t_0.png b/docs/manual/images/tk_ostream_tcp_t_0.png
index d34a04f104..b4a919dee6 100644
Binary files a/docs/manual/images/tk_ostream_tcp_t_0.png and b/docs/manual/images/tk_ostream_tcp_t_0.png differ
diff --git a/docs/manual/images/tk_ostream_udp_t_0.png b/docs/manual/images/tk_ostream_udp_t_0.png
index faa8f555f2..513c33ad94 100644
Binary files a/docs/manual/images/tk_ostream_udp_t_0.png and b/docs/manual/images/tk_ostream_udp_t_0.png differ
diff --git a/docs/manual/images/ui_binary_writer_t_0.png b/docs/manual/images/ui_binary_writer_t_0.png
index 006af099e9..fa5d845154 100644
Binary files a/docs/manual/images/ui_binary_writer_t_0.png and b/docs/manual/images/ui_binary_writer_t_0.png differ
diff --git a/docs/manual/images/ui_builder_default_t_0.png b/docs/manual/images/ui_builder_default_t_0.png
index 88c528a46c..1623100c53 100644
Binary files a/docs/manual/images/ui_builder_default_t_0.png and b/docs/manual/images/ui_builder_default_t_0.png differ
diff --git a/docs/manual/images/ui_builder_t_0.png b/docs/manual/images/ui_builder_t_0.png
index e5de585911..9097d246dd 100644
Binary files a/docs/manual/images/ui_builder_t_0.png and b/docs/manual/images/ui_builder_t_0.png differ
diff --git a/docs/manual/images/ui_loader_default_t_0.png b/docs/manual/images/ui_loader_default_t_0.png
index a36740b7fc..eb680f7ae5 100644
Binary files a/docs/manual/images/ui_loader_default_t_0.png and b/docs/manual/images/ui_loader_default_t_0.png differ
diff --git a/docs/manual/images/ui_loader_t_0.png b/docs/manual/images/ui_loader_t_0.png
index f2dc1d51f9..cfd9f418f4 100644
Binary files a/docs/manual/images/ui_loader_t_0.png and b/docs/manual/images/ui_loader_t_0.png differ
diff --git a/docs/manual/images/ui_loader_xml_t_0.png b/docs/manual/images/ui_loader_xml_t_0.png
index 5f6ff95a44..3f4c103c5a 100644
Binary files a/docs/manual/images/ui_loader_xml_t_0.png and b/docs/manual/images/ui_loader_xml_t_0.png differ
diff --git a/docs/manual/images/ui_xml_writer_t_0.png b/docs/manual/images/ui_xml_writer_t_0.png
index a38b4e0829..ca1ec311d3 100644
Binary files a/docs/manual/images/ui_xml_writer_t_0.png and b/docs/manual/images/ui_xml_writer_t_0.png differ
diff --git a/docs/manual/images/value_desc_binary_t_0.png b/docs/manual/images/value_desc_binary_t_0.png
index 4ad5612221..8137d88b35 100644
Binary files a/docs/manual/images/value_desc_binary_t_0.png and b/docs/manual/images/value_desc_binary_t_0.png differ
diff --git a/docs/manual/images/value_desc_bool_t_0.png b/docs/manual/images/value_desc_bool_t_0.png
index 0d8039f072..061f0092e4 100644
Binary files a/docs/manual/images/value_desc_bool_t_0.png and b/docs/manual/images/value_desc_bool_t_0.png differ
diff --git a/docs/manual/images/value_desc_double_t_0.png b/docs/manual/images/value_desc_double_t_0.png
index 959b48e7cd..b85bc0cc2d 100644
Binary files a/docs/manual/images/value_desc_double_t_0.png and b/docs/manual/images/value_desc_double_t_0.png differ
diff --git a/docs/manual/images/value_desc_float_t_0.png b/docs/manual/images/value_desc_float_t_0.png
index b3b6f92756..af5da46e04 100644
Binary files a/docs/manual/images/value_desc_float_t_0.png and b/docs/manual/images/value_desc_float_t_0.png differ
diff --git a/docs/manual/images/value_desc_int16_t_0.png b/docs/manual/images/value_desc_int16_t_0.png
index 171c347bb2..4d79688526 100644
Binary files a/docs/manual/images/value_desc_int16_t_0.png and b/docs/manual/images/value_desc_int16_t_0.png differ
diff --git a/docs/manual/images/value_desc_int32_t_0.png b/docs/manual/images/value_desc_int32_t_0.png
index cf3f10b11e..7aca4f3635 100644
Binary files a/docs/manual/images/value_desc_int32_t_0.png and b/docs/manual/images/value_desc_int32_t_0.png differ
diff --git a/docs/manual/images/value_desc_int64_t_0.png b/docs/manual/images/value_desc_int64_t_0.png
index 9f39c93e9a..54c680c86d 100644
Binary files a/docs/manual/images/value_desc_int64_t_0.png and b/docs/manual/images/value_desc_int64_t_0.png differ
diff --git a/docs/manual/images/value_desc_int8_t_0.png b/docs/manual/images/value_desc_int8_t_0.png
index 0ede582a81..c9cb4d164a 100644
Binary files a/docs/manual/images/value_desc_int8_t_0.png and b/docs/manual/images/value_desc_int8_t_0.png differ
diff --git a/docs/manual/images/value_desc_int_enums_t_0.png b/docs/manual/images/value_desc_int_enums_t_0.png
index e5809b8db5..fa64034b35 100644
Binary files a/docs/manual/images/value_desc_int_enums_t_0.png and b/docs/manual/images/value_desc_int_enums_t_0.png differ
diff --git a/docs/manual/images/value_desc_string_t_0.png b/docs/manual/images/value_desc_string_t_0.png
index 3dc4dd3a68..c3fb83eed5 100644
Binary files a/docs/manual/images/value_desc_string_t_0.png and b/docs/manual/images/value_desc_string_t_0.png differ
diff --git a/docs/manual/images/value_desc_uint16_t_0.png b/docs/manual/images/value_desc_uint16_t_0.png
index d3c859db96..42fa9753be 100644
Binary files a/docs/manual/images/value_desc_uint16_t_0.png and b/docs/manual/images/value_desc_uint16_t_0.png differ
diff --git a/docs/manual/images/value_desc_uint32_t_0.png b/docs/manual/images/value_desc_uint32_t_0.png
index 687f099a66..3eca64bea6 100644
Binary files a/docs/manual/images/value_desc_uint32_t_0.png and b/docs/manual/images/value_desc_uint32_t_0.png differ
diff --git a/docs/manual/images/value_desc_uint64_t_0.png b/docs/manual/images/value_desc_uint64_t_0.png
index ebc9c971a3..ec3a441d6a 100644
Binary files a/docs/manual/images/value_desc_uint64_t_0.png and b/docs/manual/images/value_desc_uint64_t_0.png differ
diff --git a/docs/manual/images/value_desc_uint8_t_0.png b/docs/manual/images/value_desc_uint8_t_0.png
index 61eadef94c..49368b915b 100644
Binary files a/docs/manual/images/value_desc_uint8_t_0.png and b/docs/manual/images/value_desc_uint8_t_0.png differ
diff --git a/docs/manual/images/vgcanvas_t_0.png b/docs/manual/images/vgcanvas_t_0.png
index 03c350fae9..6ea88fcc71 100644
Binary files a/docs/manual/images/vgcanvas_t_0.png and b/docs/manual/images/vgcanvas_t_0.png differ
diff --git a/docs/manual/images/view_t_0.png b/docs/manual/images/view_t_0.png
index 7baecc9060..39a425dd21 100644
Binary files a/docs/manual/images/view_t_0.png and b/docs/manual/images/view_t_0.png differ
diff --git a/docs/manual/images/wheel_event_t_0.png b/docs/manual/images/wheel_event_t_0.png
index d19dd3449e..306a645673 100644
Binary files a/docs/manual/images/wheel_event_t_0.png and b/docs/manual/images/wheel_event_t_0.png differ
diff --git a/docs/manual/images/widget_factory_t_0.png b/docs/manual/images/widget_factory_t_0.png
index 85ba84442f..4badc09273 100644
Binary files a/docs/manual/images/widget_factory_t_0.png and b/docs/manual/images/widget_factory_t_0.png differ
diff --git a/docs/manual/images/widget_t_0.png b/docs/manual/images/widget_t_0.png
index e9f08abe42..5883b24160 100644
Binary files a/docs/manual/images/widget_t_0.png and b/docs/manual/images/widget_t_0.png differ
diff --git a/docs/manual/images/widget_t_1.png b/docs/manual/images/widget_t_1.png
index 7f92c3d649..2d1c6a2b79 100644
Binary files a/docs/manual/images/widget_t_1.png and b/docs/manual/images/widget_t_1.png differ
diff --git a/docs/manual/images/widget_t_2.png b/docs/manual/images/widget_t_2.png
index 4711a5756a..c93eaf6cd4 100644
Binary files a/docs/manual/images/widget_t_2.png and b/docs/manual/images/widget_t_2.png differ
diff --git a/docs/manual/images/window_base_t_0.png b/docs/manual/images/window_base_t_0.png
index 82a745df7f..f4547f2ee5 100644
Binary files a/docs/manual/images/window_base_t_0.png and b/docs/manual/images/window_base_t_0.png differ
diff --git a/docs/manual/images/window_base_t_1.png b/docs/manual/images/window_base_t_1.png
index f12210f72c..34fcfdf4c0 100644
Binary files a/docs/manual/images/window_base_t_1.png and b/docs/manual/images/window_base_t_1.png differ
diff --git a/docs/manual/images/window_event_t_0.png b/docs/manual/images/window_event_t_0.png
index 8053d612df..7d5065c2f1 100644
Binary files a/docs/manual/images/window_event_t_0.png and b/docs/manual/images/window_event_t_0.png differ
diff --git a/docs/manual/images/window_manager_default_t_0.png b/docs/manual/images/window_manager_default_t_0.png
index 899d646253..e11a30a2a2 100644
Binary files a/docs/manual/images/window_manager_default_t_0.png and b/docs/manual/images/window_manager_default_t_0.png differ
diff --git a/docs/manual/images/window_manager_simple_t_0.png b/docs/manual/images/window_manager_simple_t_0.png
index e84b244f23..45f0ef9e49 100644
Binary files a/docs/manual/images/window_manager_simple_t_0.png and b/docs/manual/images/window_manager_simple_t_0.png differ
diff --git a/docs/manual/images/window_manager_t_0.png b/docs/manual/images/window_manager_t_0.png
index 0bbde4c50b..d6f99fd805 100644
Binary files a/docs/manual/images/window_manager_t_0.png and b/docs/manual/images/window_manager_t_0.png differ
diff --git a/docs/manual/images/window_t_0.png b/docs/manual/images/window_t_0.png
index cbd8a257ed..2814e22586 100644
Binary files a/docs/manual/images/window_t_0.png and b/docs/manual/images/window_t_0.png differ
diff --git a/docs/manual/indicator_default_paint_t.md b/docs/manual/indicator_default_paint_t.md
index d1b30e704a..57620e7956 100644
--- a/docs/manual/indicator_default_paint_t.md
+++ b/docs/manual/indicator_default_paint_t.md
@@ -1,7 +1,6 @@
## indicator\_default\_paint\_t
### 概述
指示器默认绘制的类型。
-
### 常量
diff --git a/docs/manual/input_engine_null_t.md b/docs/manual/input_engine_null_t.md
index 42c6a802cb..656a14158b 100644
--- a/docs/manual/input_engine_null_t.md
+++ b/docs/manual/input_engine_null_t.md
@@ -9,7 +9,6 @@
-
----------------------------------
### 函数
@@ -28,7 +27,6 @@
-
* 函数原型:
```
diff --git a/docs/manual/input_engine_pinyin_t.md b/docs/manual/input_engine_pinyin_t.md
index 2552e548ae..c421e4db80 100644
--- a/docs/manual/input_engine_pinyin_t.md
+++ b/docs/manual/input_engine_pinyin_t.md
@@ -9,7 +9,6 @@
-
----------------------------------
### 函数
@@ -28,7 +27,6 @@
-
* 函数原型:
```
diff --git a/docs/manual/input_engine_t.md b/docs/manual/input_engine_t.md
index 781bb25b0a..f9005513d5 100644
--- a/docs/manual/input_engine_t.md
+++ b/docs/manual/input_engine_t.md
@@ -11,7 +11,6 @@
![image](images/input_engine_t_0.png)
-
----------------------------------
### 函数
@@ -36,7 +35,6 @@
-
* 函数原型:
```
@@ -57,7 +55,6 @@ input_engine_t* input_engine_create ();
-
* 函数原型:
```
@@ -79,7 +76,6 @@ ret_t input_engine_destroy (input_engine_t* engine);
-
* 函数原型:
```
@@ -102,7 +98,6 @@ ret_t input_engine_input (input_engine_t* engine, int key);
-
* 函数原型:
```
diff --git a/docs/manual/input_method_default_t.md b/docs/manual/input_method_default_t.md
index f3e2813aa8..8114960588 100644
--- a/docs/manual/input_method_default_t.md
+++ b/docs/manual/input_method_default_t.md
@@ -11,7 +11,6 @@
-
----------------------------------
### 函数
@@ -30,7 +29,6 @@
-
* 函数原型:
```
diff --git a/docs/manual/input_method_null_t.md b/docs/manual/input_method_null_t.md
index ec27d3abf9..8524f4015c 100644
--- a/docs/manual/input_method_null_t.md
+++ b/docs/manual/input_method_null_t.md
@@ -9,7 +9,6 @@
-
----------------------------------
### 函数
@@ -28,7 +27,6 @@
-
* 函数原型:
```
diff --git a/docs/manual/input_method_sdl_t.md b/docs/manual/input_method_sdl_t.md
index 8a1c32f264..8bd8320c10 100644
--- a/docs/manual/input_method_sdl_t.md
+++ b/docs/manual/input_method_sdl_t.md
@@ -9,7 +9,6 @@
-
----------------------------------
### 函数
@@ -27,7 +26,6 @@
-
* 函数原型:
```
@@ -50,7 +48,6 @@ ret_t children_layouter_register_builtins ();
-
* 函数原型:
```
diff --git a/docs/manual/input_method_t.md b/docs/manual/input_method_t.md
index 28108520fc..50daaac614 100644
--- a/docs/manual/input_method_t.md
+++ b/docs/manual/input_method_t.md
@@ -16,7 +16,6 @@
> 输入类型请参考:[input\_type](input_type_t.md)
-
----------------------------------
### 函数
@@ -55,7 +54,6 @@
-
* 函数原型:
```
@@ -76,7 +74,6 @@ input_method_t* input_method ();
-
* 函数原型:
```
@@ -99,7 +96,6 @@ ret_t input_method_commit_text (input_method_t* im, char* text);
-
* 函数原型:
```
@@ -123,7 +119,6 @@ ret_t input_method_commit_text_ex (input_method_t* im, bool_t replace, char* tex
-
* 函数原型:
```
@@ -144,7 +139,6 @@ input_method_t* input_method_create ();
-
* 函数原型:
```
@@ -166,7 +160,6 @@ ret_t input_method_destroy (input_method_t* im);
-
* 函数原型:
```
@@ -189,7 +182,6 @@ ret_t input_method_dispatch (input_method_t* im, event_t* e);
-
* 函数原型:
```
@@ -211,7 +203,6 @@ ret_t input_method_dispatch_action (input_method_t* im);
-
* 函数原型:
```
@@ -235,7 +226,6 @@ ret_t input_method_dispatch_candidates (input_method_t* im, char* strs, uint32_t
-
* 函数原型:
```
@@ -258,7 +248,6 @@ ret_t input_method_dispatch_key (input_method_t* im, uint32_t key);
-
* 函数原型:
```
@@ -281,7 +270,6 @@ ret_t input_method_dispatch_to_widget (input_method_t* im, event_t* e);
-
* 函数原型:
```
@@ -304,7 +292,6 @@ ret_t input_method_off (input_method_t* im, uint32_t id);
-
* 函数原型:
```
@@ -329,7 +316,6 @@ uint32_t input_method_on (input_method_t* im, event_type_t type, event_func_t on
-
* 函数原型:
```
@@ -352,7 +338,6 @@ ret_t input_method_request (input_method_t* im, widget_t* widget);
-
* 函数原型:
```
@@ -374,7 +359,6 @@ ret_t input_method_set (input_method_t* im);
-
* 函数原型:
```
@@ -394,7 +378,6 @@ ret_t input_method_update_action_button_info (input_method_t* im, char* text, bo
>
软键盘的上的action按钮是否可用。
-
* 类型:bool\_t
| 特性 | 是否支持 |
@@ -406,7 +389,6 @@ ret_t input_method_update_action_button_info (input_method_t* im, char* text, bo
>
软键盘的上的action按钮文本。
-
* 类型:bool\_t
| 特性 | 是否支持 |
@@ -418,7 +400,6 @@ ret_t input_method_update_action_button_info (input_method_t* im, char* text, bo
>
当前输入的类型。
-
* 类型:input\_type\_t
| 特性 | 是否支持 |
diff --git a/docs/manual/input_type_t.md b/docs/manual/input_type_t.md
index 1235e80955..0513561c20 100644
--- a/docs/manual/input_type_t.md
+++ b/docs/manual/input_type_t.md
@@ -1,7 +1,6 @@
## input\_type\_t
### 概述
输入类型常量定义。
-
### 常量
diff --git a/docs/manual/key_code_t.md b/docs/manual/key_code_t.md
index 23648f8d86..bff242b041 100644
--- a/docs/manual/key_code_t.md
+++ b/docs/manual/key_code_t.md
@@ -1,7 +1,6 @@
## key\_code\_t
### 概述
key code。
-
### 常量
diff --git a/docs/manual/key_event_t.md b/docs/manual/key_event_t.md
index 474ba1b2a4..b1569bcfee 100644
--- a/docs/manual/key_event_t.md
+++ b/docs/manual/key_event_t.md
@@ -4,7 +4,6 @@
按键事件。
-
----------------------------------
### 函数
@@ -40,7 +39,6 @@
-
* 函数原型:
```
@@ -62,7 +60,6 @@ key_event_t* key_event_cast (event_t* event);
-
* 函数原型:
```
@@ -83,7 +80,6 @@ event_t* key_event_init (key_event_t* event, void* target, uint32_t type, int32_
>
alt键是否按下。
-
* 类型:bool\_t
| 特性 | 是否支持 |
@@ -96,7 +92,6 @@ event_t* key_event_init (key_event_t* event, void* target, uint32_t type, int32_
>
capslock键是否按下。
-
* 类型:bool\_t
| 特性 | 是否支持 |
@@ -110,7 +105,6 @@ event_t* key_event_init (key_event_t* event, void* target, uint32_t type, int32_
cmd/win键是否按下。
-
* 类型:bool\_t
| 特性 | 是否支持 |
@@ -124,7 +118,6 @@ event_t* key_event_init (key_event_t* event, void* target, uint32_t type, int32_
ctrl键是否按下。
-
* 类型:bool\_t
| 特性 | 是否支持 |
@@ -137,7 +130,6 @@ event_t* key_event_init (key_event_t* event, void* target, uint32_t type, int32_
>
键值。
-
* 类型:uint32\_t
| 特性 | 是否支持 |
@@ -150,7 +142,6 @@ event_t* key_event_init (key_event_t* event, void* target, uint32_t type, int32_
>
left alt键是否按下。
-
* 类型:bool\_t
| 特性 | 是否支持 |
@@ -163,7 +154,6 @@ event_t* key_event_init (key_event_t* event, void* target, uint32_t type, int32_
>
left ctrl键是否按下。
-
* 类型:bool\_t
| 特性 | 是否支持 |
@@ -176,7 +166,6 @@ event_t* key_event_init (key_event_t* event, void* target, uint32_t type, int32_
>
left shift键是否按下。
-
* 类型:bool\_t
| 特性 | 是否支持 |
@@ -189,7 +178,6 @@ event_t* key_event_init (key_event_t* event, void* target, uint32_t type, int32_
>
right alt键是否按下。
-
* 类型:bool\_t
| 特性 | 是否支持 |
@@ -215,7 +202,6 @@ event_t* key_event_init (key_event_t* event, void* target, uint32_t type, int32_
>
right ctrl键是否按下。
-
* 类型:bool\_t
| 特性 | 是否支持 |
@@ -228,7 +214,6 @@ event_t* key_event_init (key_event_t* event, void* target, uint32_t type, int32_
>
right shift键是否按下。
-
* 类型:bool\_t
| 特性 | 是否支持 |
@@ -241,7 +226,6 @@ event_t* key_event_init (key_event_t* event, void* target, uint32_t type, int32_
>
shift键是否按下。
-
* 类型:bool\_t
| 特性 | 是否支持 |
diff --git a/docs/manual/keyboard_t.md b/docs/manual/keyboard_t.md
index d0da1d6564..039424b110 100644
--- a/docs/manual/keyboard_t.md
+++ b/docs/manual/keyboard_t.md
@@ -38,7 +38,7 @@
> 更多用法请参考:
- [kb_default](https://github.com/zlgopen/awtk/blob/master/demos/assets/raw/ui/kb_default.xml)
+ [kb_default](https://github.com/zlgopen/awtk/blob/master/demos/assets/default/raw/ui/kb_default.xml)
----------------------------------
diff --git a/docs/manual/label_t.md b/docs/manual/label_t.md
index 1ac69fbe16..719a44c862 100644
--- a/docs/manual/label_t.md
+++ b/docs/manual/label_t.md
@@ -18,7 +18,7 @@
```
> 更多用法请参考:[label.xml](
-https://github.com/zlgopen/awtk/blob/master/demos/assets/raw/ui/label.xml)
+https://github.com/zlgopen/awtk/blob/master/demos/assets/default/raw/ui/label.xml)
在c代码中使用函数label\_create创建文本控件。如:
@@ -42,7 +42,7 @@ https://github.com/zlgopen/awtk-c-demos/blob/master/demos/label.c)
> 更多用法请参考:
[theme default](
-https://github.com/zlgopen/awtk/blob/master/demos/assets/raw/styles/default.xml#L144)
+https://github.com/zlgopen/awtk/blob/master/demos/assets/default/raw/styles/default.xml#L144)
----------------------------------
diff --git a/docs/manual/line_number_t.md b/docs/manual/line_number_t.md
index 6c02229a07..b9c5ae8921 100644
--- a/docs/manual/line_number_t.md
+++ b/docs/manual/line_number_t.md
@@ -18,7 +18,7 @@
```
> 更多用法请参考:[mledit.xml](
-https://github.com/zlgopen/awtk/blob/master/demos/assets/raw/ui/mledit.xml)
+https://github.com/zlgopen/awtk/blob/master/demos/assets/default/raw/ui/mledit.xml)
可用通过style来设置控件的显示风格,如字体的大小和颜色等等。如:
@@ -32,8 +32,7 @@ https://github.com/zlgopen/awtk/blob/master/demos/assets/raw/ui/mledit.xml)
> 更多用法请参考:
[theme default](
-https://github.com/zlgopen/awtk/blob/master/demos/assets/raw/styles/default.xml#L556)
-
+https://github.com/zlgopen/awtk/blob/master/demos/assets/default/raw/styles/default.xml#L556)
----------------------------------
@@ -57,7 +56,6 @@ https://github.com/zlgopen/awtk/blob/master/demos/assets/raw/styles/default.xml#
-
* 函数原型:
```
@@ -79,7 +77,6 @@ widget_t* line_number_cast (widget_t* widget);
-
* 函数原型:
```
@@ -105,7 +102,6 @@ widget_t* line_number_create (widget_t* parent, xy_t x, xy_t y, wh_t w, wh_t h);
-
* 函数原型:
```
@@ -128,7 +124,6 @@ ret_t line_number_set_bottom_margin (widget_t* widget, int32_t bottom_margin);
-
* 函数原型:
```
@@ -151,7 +146,6 @@ ret_t line_number_set_line_height (widget_t* widget, int32_t line_height);
-
* 函数原型:
```
@@ -174,7 +168,6 @@ ret_t line_number_set_top_margin (widget_t* widget, int32_t top_margin);
-
* 函数原型:
```
diff --git a/docs/manual/list_item_t.md b/docs/manual/list_item_t.md
index dacff28479..ca891f9b44 100644
--- a/docs/manual/list_item_t.md
+++ b/docs/manual/list_item_t.md
@@ -25,7 +25,7 @@
```
> 更多用法请参考:[list\_view\_m.xml](
-https://github.com/zlgopen/awtk/blob/master/demos/assets/raw/ui/list_view_m.xml)
+https://github.com/zlgopen/awtk/blob/master/demos/assets/default/raw/ui/list_view_m.xml)
在c代码中使用函数list\_item\_create创建列表项控件。如:
@@ -46,7 +46,7 @@ https://github.com/zlgopen/awtk/blob/master/demos/assets/raw/ui/list_view_m.xml)
```
> 更多用法请参考:[theme default](
-https://github.com/zlgopen/awtk/blob/master/demos/assets/raw/styles/default.xml#L372)
+https://github.com/zlgopen/awtk/blob/master/demos/assets/default/raw/styles/default.xml#L372)
----------------------------------
diff --git a/docs/manual/list_view_h_t.md b/docs/manual/list_view_h_t.md
index f910050ca1..b9cb7d96e0 100644
--- a/docs/manual/list_view_h_t.md
+++ b/docs/manual/list_view_h_t.md
@@ -21,7 +21,7 @@
> 更多用法请参考:[list\_view\_h.xml](
-https://github.com/zlgopen/awtk/blob/master/demos/assets/raw/ui/list_view_h.xml)
+https://github.com/zlgopen/awtk/blob/master/demos/assets/default/raw/ui/list_view_h.xml)
在c代码中使用函数list\_view\_h\_create创建水平列表视图控件。如:
diff --git a/docs/manual/list_view_t.md b/docs/manual/list_view_t.md
index 7981837268..be4094230d 100644
--- a/docs/manual/list_view_t.md
+++ b/docs/manual/list_view_t.md
@@ -9,7 +9,7 @@
如果不需要滚动,可以用view控件配置适当的layout参数作为列表控件。
列表视图中的列表项可以固定高度,也可以使用不同高度。请参考[变高列表项](
-https://github.com/zlgopen/awtk/blob/master/demos/assets/raw/ui/list_view_vh.xml)
+https://github.com/zlgopen/awtk/blob/master/demos/assets/default/raw/ui/list_view_vh.xml)
列表视图控件的中可以有滚动条,也可以没有滚动条。
可以使用移动设备风格的滚动条,也可以使用桌面风格的滚动条。
@@ -36,7 +36,7 @@ https://github.com/zlgopen/awtk/blob/master/demos/assets/raw/ui/list_view_vh.xml
> 更多用法请参考:[list\_view\_m.xml](
-https://github.com/zlgopen/awtk/blob/master/demos/assets/raw/ui/list_view_m.xml)
+https://github.com/zlgopen/awtk/blob/master/demos/assets/default/raw/ui/list_view_m.xml)
在c代码中使用函数list\_view\_create创建列表视图控件。如:
diff --git a/docs/manual/locale_info_t.md b/docs/manual/locale_info_t.md
index ef9d137924..0be7dfb725 100644
--- a/docs/manual/locale_info_t.md
+++ b/docs/manual/locale_info_t.md
@@ -3,7 +3,6 @@
本地化信息。提供字符串翻译数据管理,当前语言改变的事件通知等等。
-
----------------------------------
### 函数
@@ -16,6 +15,7 @@
| locale\_info\_destroy | 释放全部资源并销毁locale_info对象。 |
| locale\_info\_off | 注销指定事件的处理函数。 |
| locale\_info\_on | 注册指定事件的处理函数。 |
+| locale\_info\_reload | 重新加载字符串资源。 |
| locale\_info\_set | 设置缺省locale_info。 |
| locale\_info\_set\_assets\_manager | 设置资源管理器对象。 |
| locale\_info\_tr | 翻译字符串。 |
@@ -35,7 +35,6 @@
-
* 函数原型:
```
@@ -56,7 +55,6 @@ locale_info_t* locale_info ();
-
* 函数原型:
```
@@ -80,7 +78,6 @@ ret_t locale_info_change (locale_info_t* locale_info, char* language, char* coun
-
* 函数原型:
```
@@ -103,7 +100,6 @@ locale_info_t* locale_info_create (char* language, char* country);
-
* 函数原型:
```
@@ -125,7 +121,6 @@ ret_t locale_info_destroy (locale_info_t* locale_info);
-
* 函数原型:
```
@@ -137,7 +132,7 @@ ret_t locale_info_off (locale_info_t* locale_info, uint32_t id);
| 参数 | 类型 | 说明 |
| -------- | ----- | --------- |
| 返回值 | ret\_t | 返回RET\_OK表示成功,否则表示失败。 |
-| locale\_info | locale\_info\_t* | 控件对象。 |
+| locale\_info | locale\_info\_t* | locale\_info对象。 |
| id | uint32\_t | locale\_info\_on返回的ID。 |
#### locale\_info\_on 函数
-----------------------
@@ -148,7 +143,6 @@ ret_t locale_info_off (locale_info_t* locale_info, uint32_t id);
-
* 函数原型:
```
@@ -160,10 +154,32 @@ uint32_t locale_info_on (locale_info_t* locale_info, event_type_t type, event_fu
| 参数 | 类型 | 说明 |
| -------- | ----- | --------- |
| 返回值 | uint32\_t | 返回id,用于locale\_info\_off。 |
-| locale\_info | locale\_info\_t* | 控件对象。 |
+| locale\_info | locale\_info\_t* | locale\_info对象。 |
| type | event\_type\_t | 事件类型,目前固定为EVT\_LOCALE\_CHANGED。 |
| on\_event | event\_func\_t | 事件处理函数。 |
| ctx | void* | 事件处理函数上下文。 |
+#### locale\_info\_reload 函数
+-----------------------
+
+* 函数功能:
+
+>
重新加载字符串资源。
+
+
+
+
+* 函数原型:
+
+```
+ret_t locale_info_reload (locale_info_t* locale_info);
+```
+
+* 参数说明:
+
+| 参数 | 类型 | 说明 |
+| -------- | ----- | --------- |
+| 返回值 | ret\_t | 返回RET\_OK表示成功,否则表示失败。 |
+| locale\_info | locale\_info\_t* | locale\_info对象。 |
#### locale\_info\_set 函数
-----------------------
@@ -173,7 +189,6 @@ uint32_t locale_info_on (locale_info_t* locale_info, event_type_t type, event_fu
-
* 函数原型:
```
@@ -196,7 +211,6 @@ ret_t locale_info_set (locale_info_t* locale_info);
-
* 函数原型:
```
@@ -208,7 +222,7 @@ ret_t locale_info_set_assets_manager (locale_info_t* locale_info, assets_manager
| 参数 | 类型 | 说明 |
| -------- | ----- | --------- |
| 返回值 | ret\_t | 返回RET\_OK表示成功,否则表示失败。 |
-| locale\_info | locale\_info\_t* | 图片管理器对象。 |
+| locale\_info | locale\_info\_t* | locale\_info对象。 |
| assets\_manager | assets\_manager\_t* | 资源管理器。 |
#### locale\_info\_tr 函数
-----------------------
@@ -219,7 +233,6 @@ ret_t locale_info_set_assets_manager (locale_info_t* locale_info, assets_manager
-
* 函数原型:
```
@@ -238,7 +251,6 @@ char* locale_info_tr (locale_info_t* locale_info, char* text);
>
国家或地区。如:CN
-
* 类型:char*
| 特性 | 是否支持 |
@@ -250,7 +262,6 @@ char* locale_info_tr (locale_info_t* locale_info, char* text);
>
语言。如:zh
-
* 类型:char*
| 特性 | 是否支持 |
diff --git a/docs/manual/mledit_t.md b/docs/manual/mledit_t.md
index 1d63224fe4..3a81e877d9 100644
--- a/docs/manual/mledit_t.md
+++ b/docs/manual/mledit_t.md
@@ -13,7 +13,7 @@
```
> 更多用法请参考:[mledit.xml](
- https://github.com/zlgopen/awtk/blob/master/demos/assets/raw/ui/mledit.xml)
+ https://github.com/zlgopen/awtk/blob/master/demos/assets/default/raw/ui/mledit.xml)
在c代码中使用函数mledit\_create创建多行编辑器控件。如:
@@ -27,7 +27,6 @@
time\_clock一般不需要设置style。
-
----------------------------------
### 函数
@@ -70,7 +69,6 @@
-
* 函数原型:
```
@@ -92,7 +90,6 @@ widget_t* mledit_cast (widget_t* widget);
-
* 函数原型:
```
@@ -118,7 +115,6 @@ widget_t* mledit_create (widget_t* parent, xy_t x, xy_t y, wh_t w, wh_t h);
-
* 函数原型:
```
@@ -141,7 +137,6 @@ ret_t mledit_set_focus (widget_t* widget, bool_t focus);
-
* 函数原型:
```
@@ -164,7 +159,6 @@ ret_t mledit_set_input_tips (widget_t* widget, char* tips);
-
* 函数原型:
```
@@ -187,7 +181,6 @@ ret_t mledit_set_max_lines (widget_t* widget, uint32_t max_lines);
-
* 函数原型:
```
@@ -210,7 +203,6 @@ ret_t mledit_set_readonly (widget_t* widget, bool_t readonly);
-
* 函数原型:
```
@@ -229,7 +221,6 @@ ret_t mledit_set_wrap_word (widget_t* widget, bool_t wrap_word);
>
下边距。
-
* 类型:uint8\_t
| 特性 | 是否支持 |
@@ -244,7 +235,6 @@ ret_t mledit_set_wrap_word (widget_t* widget, bool_t wrap_word);
>
左边距。
-
* 类型:uint8\_t
| 特性 | 是否支持 |
@@ -259,7 +249,6 @@ ret_t mledit_set_wrap_word (widget_t* widget, bool_t wrap_word);
>
最大行数。
-
* 类型:uint32\_t
| 特性 | 是否支持 |
@@ -277,7 +266,6 @@ ret_t mledit_set_wrap_word (widget_t* widget, bool_t wrap_word);
>
编辑器是否为只读。
-
* 类型:bool\_t
| 特性 | 是否支持 |
@@ -295,7 +283,6 @@ ret_t mledit_set_wrap_word (widget_t* widget, bool_t wrap_word);
>
右边距。
-
* 类型:uint8\_t
| 特性 | 是否支持 |
@@ -310,7 +297,6 @@ ret_t mledit_set_wrap_word (widget_t* widget, bool_t wrap_word);
>
输入提示。
-
* 类型:char*
| 特性 | 是否支持 |
@@ -328,7 +314,6 @@ ret_t mledit_set_wrap_word (widget_t* widget, bool_t wrap_word);
>
上边距。
-
* 类型:uint8\_t
| 特性 | 是否支持 |
@@ -343,7 +328,6 @@ ret_t mledit_set_wrap_word (widget_t* widget, bool_t wrap_word);
>
是否自动折行。
-
* 类型:bool\_t
| 特性 | 是否支持 |
diff --git a/docs/manual/mutable_image_t.md b/docs/manual/mutable_image_t.md
index 3b0fd4b140..1927cc87fb 100644
--- a/docs/manual/mutable_image_t.md
+++ b/docs/manual/mutable_image_t.md
@@ -19,7 +19,7 @@
>更多用法请参考:
[mutable
- image](https://github.com/zlgopen/awtk/blob/master/demos/assets/raw/ui/mutable_image.xml)
+ image](https://github.com/zlgopen/awtk/blob/master/demos/assets/default/raw/ui/mutable_image.xml)
在c代码中使用函数mutable\_image\_create创建mutable图片控件。如:
diff --git a/docs/manual/named_value_t.md b/docs/manual/named_value_t.md
index 1f71805411..d0a828e6a5 100644
--- a/docs/manual/named_value_t.md
+++ b/docs/manual/named_value_t.md
@@ -3,7 +3,6 @@
命名的值。
-
----------------------------------
### 函数
@@ -36,7 +35,6 @@
-
* 函数原型:
```
@@ -59,7 +57,6 @@ named_value_t* named_value_cast (named_value_t* nv);
-
* 函数原型:
```
@@ -82,7 +79,6 @@ named_value_t* named_value_create ();
-
* 函数原型:
```
@@ -106,7 +102,6 @@ ret_t named_value_deinit (named_value_t* nv);
-
* 函数原型:
```
@@ -131,7 +126,6 @@ ret_t named_value_destroy (named_value_t* nv);
-
* 函数原型:
```
@@ -155,7 +149,6 @@ value_t* named_value_get_value (named_value_t* nv);
-
* 函数原型:
```
@@ -181,7 +174,6 @@ ret_t named_value_init (named_value_t* nv, const char* name, const value_t* valu
-
* 函数原型:
```
@@ -206,7 +198,6 @@ ret_t named_value_set_name (named_value_t* nv, const char* name);
-
* 函数原型:
```
@@ -225,7 +216,6 @@ ret_t named_value_set_value (named_value_t* nv, const value_t* value);
>
名称。
-
* 类型:char*
| 特性 | 是否支持 |
@@ -238,7 +228,6 @@ ret_t named_value_set_value (named_value_t* nv, const value_t* value);
>
值。
-
* 类型:value\_t
| 特性 | 是否支持 |
diff --git a/docs/manual/native_window_t.md b/docs/manual/native_window_t.md
index ac8d6a5f6e..32e4c30927 100644
--- a/docs/manual/native_window_t.md
+++ b/docs/manual/native_window_t.md
@@ -5,7 +5,6 @@
原生窗口。
-
----------------------------------
### 函数
@@ -26,7 +25,6 @@
-
* 函数原型:
```
@@ -49,7 +47,6 @@ native_window_t* native_window_create (const char* params);
-
* 函数原型:
```
@@ -71,7 +68,6 @@ canvas_t native_window_get_canvas (native_window_t* win);
-
* 函数原型:
```
@@ -95,7 +91,6 @@ ret_t native_window_invalidate (native_window_t* win, rect_t* r);
-
* 函数原型:
```
@@ -121,7 +116,6 @@ ret_t native_window_move (native_window_t* win, xy_t x, xy_t y, bool_t force);
-
* 函数原型:
```
diff --git a/docs/manual/object_array_t.md b/docs/manual/object_array_t.md
index f1ab75e0c0..94245a6259 100644
--- a/docs/manual/object_array_t.md
+++ b/docs/manual/object_array_t.md
@@ -11,7 +11,6 @@
* index 用于访问属性,-1可以用来追加新元素。
-
----------------------------------
### 函数
@@ -42,7 +41,6 @@
-
* 函数原型:
```
@@ -67,7 +65,6 @@ ret_t object_array_clear_props (object_t* obj);
-
* 函数原型:
```
@@ -91,7 +88,6 @@ object_t* object_array_create ();
-
* 函数原型:
```
@@ -116,7 +112,6 @@ object_t* object_array_create (object_array_t* o);
-
* 函数原型:
```
@@ -135,7 +130,6 @@ ret_t object_array_unref (object_t* obj);
-
* 类型:value\_t
| 特性 | 是否支持 |
@@ -148,7 +142,6 @@ ret_t object_array_unref (object_t* obj);
-
* 类型:uint32\_t
| 特性 | 是否支持 |
@@ -161,7 +154,6 @@ ret_t object_array_unref (object_t* obj);
-
* 类型:uint32\_t
| 特性 | 是否支持 |
diff --git a/docs/manual/object_default_t.md b/docs/manual/object_default_t.md
index cfa2b5a1b3..e30288786c 100644
--- a/docs/manual/object_default_t.md
+++ b/docs/manual/object_default_t.md
@@ -8,7 +8,6 @@
内部使用有序数组保存所有属性,可以快速查找指定名称的属性。
-
----------------------------------
### 函数
@@ -40,7 +39,6 @@
-
* 函数原型:
```
@@ -65,7 +63,6 @@ ret_t object_default_clear_props (object_t* obj);
-
* 函数原型:
```
@@ -89,7 +86,6 @@ object_t* object_default_create ();
-
* 函数原型:
```
@@ -114,7 +110,6 @@ object_t* object_default_create (object_default_t* o);
-
* 函数原型:
```
@@ -141,7 +136,6 @@ value_t* object_default_find_prop (object_t* obj, tk_compare_t cmp, const void*
-
* 函数原型:
```
@@ -160,7 +154,6 @@ ret_t object_default_unref (object_t* obj);
-
* 类型:named\_value\_t
| 特性 | 是否支持 |
@@ -173,7 +166,6 @@ ret_t object_default_unref (object_t* obj);
-
* 类型:uint32\_t
| 特性 | 是否支持 |
@@ -186,7 +178,6 @@ ret_t object_default_unref (object_t* obj);
-
* 类型:uint32\_t
| 特性 | 是否支持 |
diff --git a/docs/manual/object_t.md b/docs/manual/object_t.md
index c5cee95a0e..c5ac0d09f5 100644
--- a/docs/manual/object_t.md
+++ b/docs/manual/object_t.md
@@ -6,7 +6,6 @@
对象接口。
-
----------------------------------
### 函数
@@ -68,7 +67,6 @@
-
* 函数原型:
```
@@ -93,7 +91,6 @@ bool_t object_can_exec (object_t* obj, const char* name, const char* args);
-
* 函数原型:
```
@@ -117,7 +114,6 @@ int object_compare (object_t* obj, object_t* other);
-
* 函数原型:
```
@@ -144,7 +140,6 @@ ret_t object_copy_prop (object_t* obj, object_t* src, const char* name);
-
* 函数原型:
```
@@ -167,7 +162,6 @@ ret_t object_create (const object_vtable_t* vt);
-
* 函数原型:
```
@@ -191,7 +185,6 @@ ret_t object_eval (object_t* obj, const char* expr, value_t* v);
-
* 函数原型:
```
@@ -216,7 +209,6 @@ ret_t object_exec (object_t* obj, const char* name, const char* args);
-
* 函数原型:
```
@@ -241,7 +233,6 @@ ret_t object_foreach_prop (object_t* obj, tk_visit_t on_prop, void* ctx);
-
* 函数原型:
```
@@ -264,7 +255,6 @@ const char* object_get_desc (object_t* obj);
-
* 函数原型:
```
@@ -289,7 +279,6 @@ ret_t object_get_prop (object_t* obj, const char* name, value_t* v);
-
* 函数原型:
```
@@ -314,7 +303,6 @@ bool_t object_get_prop_bool (object_t* obj, const char* name, bool_t defval);
-
* 函数原型:
```
@@ -339,7 +327,6 @@ bool_t object_get_prop_bool_by_path (object_t* obj, const char* path, bool_t def
-
* 函数原型:
```
@@ -364,7 +351,6 @@ ret_t object_get_prop_by_path (object_t* obj, const char* path, value_t* v);
-
* 函数原型:
```
@@ -389,7 +375,6 @@ float_t object_get_prop_float (object_t* obj, const char* name, float_t defval);
-
* 函数原型:
```
@@ -414,7 +399,6 @@ float_t object_get_prop_float_by_path (object_t* obj, const char* path, float_t
-
* 函数原型:
```
@@ -439,7 +423,6 @@ int32_t object_get_prop_int (object_t* obj, const char* name, int32_t defval);
-
* 函数原型:
```
@@ -464,7 +447,6 @@ int32_t object_get_prop_int_by_path (object_t* obj, const char* path, int32_t de
-
* 函数原型:
```
@@ -488,7 +470,6 @@ object_t* object_get_prop_object (object_t* obj, const char* name);
-
* 函数原型:
```
@@ -512,7 +493,6 @@ object_t* object_get_prop_object_by_path (object_t* obj, const char* path);
-
* 函数原型:
```
@@ -536,7 +516,6 @@ void* object_get_prop_pointer (object_t* obj, const char* name);
-
* 函数原型:
```
@@ -560,7 +539,6 @@ void* object_get_prop_pointer_by_path (object_t* obj, const char* path);
-
* 函数原型:
```
@@ -584,7 +562,6 @@ const char* object_get_prop_str (object_t* obj, const char* name);
-
* 函数原型:
```
@@ -608,7 +585,6 @@ const char* object_get_prop_str_by_path (object_t* obj, const char* path);
-
* 函数原型:
```
@@ -631,7 +607,6 @@ uint32_t object_get_size (object_t* obj);
-
* 函数原型:
```
@@ -654,7 +629,6 @@ const char* object_get_type (object_t* obj);
-
* 函数原型:
```
@@ -678,7 +652,6 @@ bool_t object_has_prop (object_t* obj, const char* name);
-
* 函数原型:
```
@@ -701,7 +674,6 @@ bool_t object_is_collection (object_t* obj);
-
* 函数原型:
```
@@ -724,7 +696,6 @@ ret_t object_notify_changed (object_t* obj);
-
* 函数原型:
```
@@ -747,7 +718,6 @@ object_t* object_ref (object_t* obj);
-
* 函数原型:
```
@@ -771,7 +741,6 @@ ret_t object_remove_prop (object_t* obj, const char* name);
-
* 函数原型:
```
@@ -795,7 +764,6 @@ ret_t object_set_name (object_t* obj, const char* name);
-
* 函数原型:
```
@@ -820,7 +788,6 @@ ret_t object_set_prop (object_t* obj, const char* name, value_t* value);
-
* 函数原型:
```
@@ -845,7 +812,6 @@ ret_t object_set_prop_bool (object_t* obj, const char* name, bool_t value);
-
* 函数原型:
```
@@ -870,7 +836,6 @@ ret_t object_set_prop_float (object_t* obj, const char* name, float_t value);
-
* 函数原型:
```
@@ -895,7 +860,6 @@ ret_t object_set_prop_int (object_t* obj, const char* name, int32_t value);
-
* 函数原型:
```
@@ -920,7 +884,6 @@ ret_t object_set_prop_object (object_t* obj, const char* name, object_t* value);
-
* 函数原型:
```
@@ -945,7 +908,6 @@ ret_t object_set_prop_pointer (object_t* obj, const char* name, void* value);
-
* 函数原型:
```
@@ -970,7 +932,6 @@ ret_t object_set_prop_str (object_t* obj, const char* name, const char* value);
-
* 函数原型:
```
@@ -988,7 +949,6 @@ ret_t object_unref (object_t* obj);
>
对象的名称。
-
* 类型:char*
| 特性 | 是否支持 |
@@ -1001,7 +961,6 @@ ret_t object_unref (object_t* obj);
>
引用计数。
-
* 类型:int32\_t
| 特性 | 是否支持 |
diff --git a/docs/manual/orientation_event_t.md b/docs/manual/orientation_event_t.md
index 9d107a6b09..c4a8acf008 100644
--- a/docs/manual/orientation_event_t.md
+++ b/docs/manual/orientation_event_t.md
@@ -4,7 +4,6 @@
滚轮事件。
-
----------------------------------
### 函数
@@ -28,7 +27,6 @@
-
* 函数原型:
```
@@ -50,7 +48,6 @@ orientation_event_t* orientation_event_cast (event_t* event);
-
* 函数原型:
```
@@ -71,7 +68,6 @@ event_t* orientation_event_init (orientation_event_t* event, void* target, uint3
>
屏幕方向。
-
* 类型:int32\_t
| 特性 | 是否支持 |
diff --git a/docs/manual/overlay_t.md b/docs/manual/overlay_t.md
index 2d5f17daa5..8c521d7d16 100644
--- a/docs/manual/overlay_t.md
+++ b/docs/manual/overlay_t.md
@@ -19,7 +19,7 @@
```
>
- 更多用法请参考:[overlay.xml](https://github.com/zlgopen/awtk/blob/master/demos/assets/raw/ui/)
+ 更多用法请参考:[overlay.xml](https://github.com/zlgopen/awtk/blob/master/demos/assets/default/raw/ui/)
在c代码中使用函数overlay\_create创建窗口。如:
@@ -39,8 +39,7 @@
```
> 更多用法请参考:[theme
- default](https://github.com/zlgopen/awtk/blob/master/demos/assets/raw/styles/default.xml#L0)
-
+ default](https://github.com/zlgopen/awtk/blob/master/demos/assets/default/raw/styles/default.xml#L0)
----------------------------------
### 函数
@@ -59,7 +58,6 @@
-
* 函数原型:
```
@@ -81,7 +79,6 @@ widget_t* overlay_cast (widget_t* widget);
-
* 函数原型:
```
diff --git a/docs/manual/pages_t.md b/docs/manual/pages_t.md
index 591c3b23de..1afe3e3938 100644
--- a/docs/manual/pages_t.md
+++ b/docs/manual/pages_t.md
@@ -24,7 +24,7 @@
```
> 更多用法请参考:
- [tab control](https://github.com/zlgopen/awtk/blob/master/demos/assets/raw/ui/)
+ [tab control](https://github.com/zlgopen/awtk/blob/master/demos/assets/default/raw/ui/)
----------------------------------
diff --git a/docs/manual/paint_event_t.md b/docs/manual/paint_event_t.md
index c619fe92ac..c90db887f4 100644
--- a/docs/manual/paint_event_t.md
+++ b/docs/manual/paint_event_t.md
@@ -4,7 +4,6 @@
绘制事件。
-
----------------------------------
### 函数
@@ -28,7 +27,6 @@
-
* 函数原型:
```
@@ -50,7 +48,6 @@ paint_event_t* paint_event_cast (event_t* event);
-
* 函数原型:
```
@@ -71,7 +68,6 @@ event_t* paint_event_init (paint_event_t* event, void* target, uint32_t type, ca
>
canvas。
-
* 类型:canvas\_t*
| 特性 | 是否支持 |
diff --git a/docs/manual/point_t.md b/docs/manual/point_t.md
index 863e342ddb..b9132d26ec 100644
--- a/docs/manual/point_t.md
+++ b/docs/manual/point_t.md
@@ -2,7 +2,6 @@
### 概述
点。包括一个x坐标和一个y坐标。
-
----------------------------------
### 属性
@@ -16,7 +15,6 @@
>
x坐标。
-
* 类型:xy\_t
| 特性 | 是否支持 |
@@ -28,7 +26,6 @@
>
y坐标。
-
* 类型:xy\_t
| 特性 | 是否支持 |
diff --git a/docs/manual/pointer_event_t.md b/docs/manual/pointer_event_t.md
index 66ace4e7d5..e9d05cb134 100644
--- a/docs/manual/pointer_event_t.md
+++ b/docs/manual/pointer_event_t.md
@@ -4,7 +4,6 @@
指针事件。
-
----------------------------------
### 函数
@@ -36,7 +35,6 @@
-
* 函数原型:
```
@@ -58,7 +56,6 @@ pointer_event_t* pointer_event_cast (event_t* event);
-
* 函数原型:
```
@@ -80,7 +77,6 @@ event_t* pointer_event_init (pointer_event_t* event, void* target, uint32_t type
>
alt键是否按下。
-
* 类型:bool\_t
| 特性 | 是否支持 |
@@ -93,7 +89,6 @@ event_t* pointer_event_init (pointer_event_t* event, void* target, uint32_t type
>
button。
-
* 类型:uint8\_t
| 特性 | 是否支持 |
@@ -106,7 +101,6 @@ event_t* pointer_event_init (pointer_event_t* event, void* target, uint32_t type
>
cmd键是否按下。
-
* 类型:bool\_t
| 特性 | 是否支持 |
@@ -119,7 +113,6 @@ event_t* pointer_event_init (pointer_event_t* event, void* target, uint32_t type
>
ctrl键是否按下。
-
* 类型:bool\_t
| 特性 | 是否支持 |
@@ -132,7 +125,6 @@ event_t* pointer_event_init (pointer_event_t* event, void* target, uint32_t type
>
指针是否按下。
-
* 类型:bool\_t
| 特性 | 是否支持 |
@@ -158,7 +149,6 @@ event_t* pointer_event_init (pointer_event_t* event, void* target, uint32_t type
>
shift键是否按下。
-
* 类型:bool\_t
| 特性 | 是否支持 |
@@ -171,7 +161,6 @@ event_t* pointer_event_init (pointer_event_t* event, void* target, uint32_t type
>
x坐标。
-
* 类型:xy\_t
| 特性 | 是否支持 |
@@ -184,7 +173,6 @@ event_t* pointer_event_init (pointer_event_t* event, void* target, uint32_t type
>
y坐标。
-
* 类型:xy\_t
| 特性 | 是否支持 |
diff --git a/docs/manual/popup_t.md b/docs/manual/popup_t.md
index 23b213a368..a190a64a3c 100644
--- a/docs/manual/popup_t.md
+++ b/docs/manual/popup_t.md
@@ -23,7 +23,7 @@
```
>
- 更多用法请参考:[popup](https://github.com/zlgopen/awtk/blob/master/demos/assets/raw/ui/)
+ 更多用法请参考:[popup](https://github.com/zlgopen/awtk/blob/master/demos/assets/default/raw/ui/)
在c代码中使用函数popup\_create创建弹出窗口。如:
@@ -47,7 +47,7 @@
```
> 更多用法请参考:[theme
- default](https://github.com/zlgopen/awtk/blob/master/demos/assets/raw/styles/default.xml#L324)
+ default](https://github.com/zlgopen/awtk/blob/master/demos/assets/default/raw/styles/default.xml#L324)
----------------------------------
### 函数
diff --git a/docs/manual/preload_res_t.md b/docs/manual/preload_res_t.md
index 0695b17a92..02ffc28089 100644
--- a/docs/manual/preload_res_t.md
+++ b/docs/manual/preload_res_t.md
@@ -2,5 +2,4 @@
### 概述
预加载资源的描述信息。
-
----------------------------------
diff --git a/docs/manual/progress_bar_t.md b/docs/manual/progress_bar_t.md
index 5f65b0bd25..3f181c85c1 100644
--- a/docs/manual/progress_bar_t.md
+++ b/docs/manual/progress_bar_t.md
@@ -16,7 +16,7 @@
```
> 更多用法请参考:
- [basic demo](https://github.com/zlgopen/awtk/blob/master/demos/assets/raw/ui/basic.xml)
+ [basic demo](https://github.com/zlgopen/awtk/blob/master/demos/assets/default/raw/ui/basic.xml)
在c代码中使用函数progress\_bar\_create创建进度条控件。如:
@@ -37,7 +37,7 @@
> 更多用法请参考:
[theme
- default](https://github.com/zlgopen/awtk/blob/master/demos/assets/raw/styles/default.xml#L183)
+ default](https://github.com/zlgopen/awtk/blob/master/demos/assets/default/raw/styles/default.xml#L183)
----------------------------------
diff --git a/docs/manual/progress_circle_t.md b/docs/manual/progress_circle_t.md
index 79d05dd90a..065f17e803 100644
--- a/docs/manual/progress_circle_t.md
+++ b/docs/manual/progress_circle_t.md
@@ -13,7 +13,7 @@
```
> 更多用法请参考:
- [progress_circle.xml](https://github.com/zlgopen/awtk/blob/master/demos/assets/raw/ui/progress_circle.xml)
+ [progress_circle.xml](https://github.com/zlgopen/awtk/blob/master/demos/assets/default/raw/ui/progress_circle.xml)
在c代码中使用函数progress\_circle\_create创建进度圆环控件。如:
@@ -37,7 +37,7 @@
> 更多用法请参考:
[theme
- default](https://github.com/zlgopen/awtk/blob/master/demos/assets/raw/styles/default.xml#L467)
+ default](https://github.com/zlgopen/awtk/blob/master/demos/assets/default/raw/styles/default.xml#L467)
----------------------------------
diff --git a/docs/manual/prop_change_event_t.md b/docs/manual/prop_change_event_t.md
index 7823b856f3..8795bbeead 100644
--- a/docs/manual/prop_change_event_t.md
+++ b/docs/manual/prop_change_event_t.md
@@ -4,7 +4,6 @@
对象属性变化事件。
-
----------------------------------
### 函数
@@ -28,7 +27,6 @@
-
* 函数原型:
```
@@ -46,7 +44,6 @@ prop_change_event_t* prop_change_event_cast (event_t* event);
>
属性的名称。
-
* 类型:const char*
| 特性 | 是否支持 |
@@ -59,7 +56,6 @@ prop_change_event_t* prop_change_event_cast (event_t* event);
>
属性的值。
-
* 类型:const value\_t*
| 特性 | 是否支持 |
diff --git a/docs/manual/prop_desc_flags_t.md b/docs/manual/prop_desc_flags_t.md
index 2ecc7edad8..9acbe76049 100644
--- a/docs/manual/prop_desc_flags_t.md
+++ b/docs/manual/prop_desc_flags_t.md
@@ -1,7 +1,6 @@
## prop\_desc\_flags\_t
### 概述
属性描述范围常量定义。
-
### 常量
diff --git a/docs/manual/rbuffer_t.md b/docs/manual/rbuffer_t.md
index 500eb84382..031bc032cc 100644
--- a/docs/manual/rbuffer_t.md
+++ b/docs/manual/rbuffer_t.md
@@ -17,7 +17,6 @@
rbuffer_read_string(&rbuffer, &str);
```
-
----------------------------------
### 函数
@@ -53,7 +52,6 @@
-
* 函数原型:
```
@@ -75,7 +73,6 @@ bool_t rbuffer_has_more (rbuffer_t* rbuffer);
-
* 函数原型:
```
@@ -99,7 +96,6 @@ rbuffer_t* rbuffer_init (rbuffer_t* rbuffer, uint8_t* data, uint16_t capacity);
-
* 函数原型:
```
@@ -122,7 +118,6 @@ ret_t rbuffer_peek_uint16 (rbuffer_t* rbuffer, uint16_t* value);
-
* 函数原型:
```
@@ -145,7 +140,6 @@ ret_t rbuffer_peek_uint32 (rbuffer_t* rbuffer, uint32_t* value);
-
* 函数原型:
```
@@ -168,7 +162,6 @@ ret_t rbuffer_peek_uint8 (rbuffer_t* rbuffer, uint8_t* value);
-
* 函数原型:
```
@@ -192,7 +185,6 @@ ret_t rbuffer_read_binary (rbuffer_t* rbuffer, void* data, uint32_t size);
-
* 函数原型:
```
@@ -215,7 +207,6 @@ ret_t rbuffer_read_float (rbuffer_t* rbuffer, float_t* value);
-
* 函数原型:
```
@@ -238,7 +229,6 @@ ret_t rbuffer_read_string (rbuffer_t* rbuffer, char** str);
-
* 函数原型:
```
@@ -261,7 +251,6 @@ ret_t rbuffer_read_uint16 (rbuffer_t* rbuffer, uint16_t* value);
-
* 函数原型:
```
@@ -284,7 +273,6 @@ ret_t rbuffer_read_uint32 (rbuffer_t* rbuffer, uint32_t* value);
-
* 函数原型:
```
@@ -307,7 +295,6 @@ ret_t rbuffer_read_uint8 (rbuffer_t* rbuffer, uint8_t* value);
-
* 函数原型:
```
@@ -326,7 +313,6 @@ ret_t rbuffer_skip (rbuffer_t* rbuffer, int32_t offset);
>
缓存区最大容量。
-
* 类型:uint32\_t
| 特性 | 是否支持 |
@@ -338,7 +324,6 @@ ret_t rbuffer_skip (rbuffer_t* rbuffer, int32_t offset);
>
当前读取位置。
-
* 类型:uint32\_t
| 特性 | 是否支持 |
@@ -350,7 +335,6 @@ ret_t rbuffer_skip (rbuffer_t* rbuffer, int32_t offset);
>
缓存区。
-
* 类型:uint8\_t*
| 特性 | 是否支持 |
diff --git a/docs/manual/rect_t.md b/docs/manual/rect_t.md
index 37b1bc9301..abe97ab1b7 100644
--- a/docs/manual/rect_t.md
+++ b/docs/manual/rect_t.md
@@ -2,7 +2,6 @@
### 概述
矩形。包括一个x坐标、y坐标、宽度和高度。
-
----------------------------------
### 函数
@@ -33,7 +32,6 @@
-
* 函数原型:
```
@@ -58,7 +56,6 @@ rect_t* rect_cast (rect_t* rect);
-
* 函数原型:
```
@@ -86,7 +83,6 @@ rect_t* rect_create (xy_t x, xy_t y, wh_t w, wh_t h);
-
* 函数原型:
```
@@ -111,7 +107,6 @@ ret_t rect_destroy (rect_t* r);
-
* 函数原型:
```
@@ -133,7 +128,6 @@ rect_t* rect_set (rect_t* rect, xy_t x, xy_t y, wh_t w, wh_t h);
>
高度。
-
* 类型:wh\_t
| 特性 | 是否支持 |
@@ -146,7 +140,6 @@ rect_t* rect_set (rect_t* rect, xy_t x, xy_t y, wh_t w, wh_t h);
>
宽度。
-
* 类型:wh\_t
| 特性 | 是否支持 |
@@ -159,7 +152,6 @@ rect_t* rect_set (rect_t* rect, xy_t x, xy_t y, wh_t w, wh_t h);
>
x坐标。
-
* 类型:xy\_t
| 特性 | 是否支持 |
@@ -172,7 +164,6 @@ rect_t* rect_set (rect_t* rect, xy_t x, xy_t y, wh_t w, wh_t h);
>
y坐标。
-
* 类型:xy\_t
| 特性 | 是否支持 |
diff --git a/docs/manual/rgba_t.md b/docs/manual/rgba_t.md
index 312ce7796e..caa0be8fd9 100644
--- a/docs/manual/rgba_t.md
+++ b/docs/manual/rgba_t.md
@@ -3,7 +3,6 @@
颜色的四个通道。
-
----------------------------------
### 属性
@@ -19,7 +18,6 @@
>
alpha。
-
* 类型:uint8\_t
| 特性 | 是否支持 |
@@ -31,7 +29,6 @@
>
蓝色。
-
* 类型:uint8\_t
| 特性 | 是否支持 |
@@ -43,7 +40,6 @@
>
绿色。
-
* 类型:uint8\_t
| 特性 | 是否支持 |
@@ -55,7 +51,6 @@
>
红色。
-
* 类型:uint8\_t
| 特性 | 是否支持 |
diff --git a/docs/manual/rich_text_t.md b/docs/manual/rich_text_t.md
index 34923d706b..51fa261336 100644
--- a/docs/manual/rich_text_t.md
+++ b/docs/manual/rich_text_t.md
@@ -15,7 +15,7 @@
>
> 更多用法请参考:
- [rich_text.xml](https://github.com/zlgopen/awtk/blob/master/demos/assets/raw/ui/rich_text.xml)
+ [rich_text.xml](https://github.com/zlgopen/awtk/blob/master/demos/assets/default/raw/ui/rich_text.xml)
在c代码中使用函数rich\_text\_create创建图文混排控件。如:
@@ -52,7 +52,6 @@
* underline 下划线(暂不支持)
-
----------------------------------
### 函数
@@ -77,7 +76,6 @@
-
* 函数原型:
```
@@ -99,7 +97,6 @@ widget_t* rich_text_cast (widget_t* widget);
-
* 函数原型:
```
@@ -125,7 +122,6 @@ widget_t* rich_text_create (widget_t* parent, xy_t x, xy_t y, wh_t w, wh_t h);
-
* 函数原型:
```
@@ -144,7 +140,6 @@ ret_t rich_text_set_text (widget_t* widget, char* text);
>
行间距。
-
* 类型:int32\_t
| 特性 | 是否支持 |
diff --git a/docs/manual/ring_buffer_t.md b/docs/manual/ring_buffer_t.md
index da469e7426..925207d1e8 100644
--- a/docs/manual/ring_buffer_t.md
+++ b/docs/manual/ring_buffer_t.md
@@ -2,7 +2,6 @@
### 概述
循环缓存区。
-
----------------------------------
### 函数
@@ -47,7 +46,6 @@
-
* 函数原型:
```
@@ -70,7 +68,6 @@ uint32_t ring_buffer_capacity (ring_buffer_t* ring_buffer);
-
* 函数原型:
```
@@ -94,7 +91,6 @@ ring_buffer_t* ring_buffer_create (uint32_t init_capacity, uint32_t max_capacity
-
* 函数原型:
```
@@ -117,7 +113,6 @@ ret_t ring_buffer_destroy (ring_buffer_t* ring_buffer);
-
* 函数原型:
```
@@ -140,7 +135,6 @@ uint32_t ring_buffer_free_size (ring_buffer_t* ring_buffer);
-
* 函数原型:
```
@@ -163,7 +157,6 @@ bool_t ring_buffer_is_empty (ring_buffer_t* ring_buffer);
-
* 函数原型:
```
@@ -186,7 +179,6 @@ bool_t ring_buffer_is_full (ring_buffer_t* ring_buffer);
-
* 函数原型:
```
@@ -211,7 +203,6 @@ uint32_t ring_buffer_peek (ring_buffer_t* ring_buffer, void* buff, uint32_t size
-
* 函数原型:
```
@@ -236,7 +227,6 @@ uint32_t ring_buffer_read (ring_buffer_t* ring_buffer, void* buff, uint32_t size
-
* 函数原型:
```
@@ -261,7 +251,6 @@ ret_t ring_buffer_read_len (ring_buffer_t* ring_buffer, void* buff, uint32_t siz
-
* 函数原型:
```
@@ -284,7 +273,6 @@ ret_t ring_buffer_reset (ring_buffer_t* ring_buffer);
-
* 函数原型:
```
@@ -308,7 +296,6 @@ ret_t ring_buffer_set_read_cursor (ring_buffer_t* ring_buffer, uint32_t r);
-
* 函数原型:
```
@@ -332,7 +319,6 @@ ret_t ring_buffer_set_read_cursor_delta (ring_buffer_t* ring_buffer, uint32_t r_
-
* 函数原型:
```
@@ -356,7 +342,6 @@ ret_t ring_buffer_set_write_cursor (ring_buffer_t* ring_buffer, uint32_t w);
-
* 函数原型:
```
@@ -380,7 +365,6 @@ ret_t ring_buffer_set_write_cursor_delta (ring_buffer_t* ring_buffer, uint32_t w
-
* 函数原型:
```
@@ -404,7 +388,6 @@ uint32_t ring_buffer_size (ring_buffer_t* ring_buffer);
-
* 函数原型:
```
@@ -429,7 +412,6 @@ uint32_t ring_buffer_write (ring_buffer_t* ring_buffer, const void* buff, uint32
-
* 函数原型:
```
@@ -449,7 +431,6 @@ ret_t ring_buffer_write_len (ring_buffer_t* ring_buffer, const void* buff, uint3
>
当前容量。
-
* 类型:uint32\_t
| 特性 | 是否支持 |
@@ -461,7 +442,6 @@ ret_t ring_buffer_write_len (ring_buffer_t* ring_buffer, const void* buff, uint3
>
数据。
-
* 类型:uint8\_t*
| 特性 | 是否支持 |
@@ -473,7 +453,6 @@ ret_t ring_buffer_write_len (ring_buffer_t* ring_buffer, const void* buff, uint3
>
是否满。
-
* 类型:bool\_t
| 特性 | 是否支持 |
@@ -485,7 +464,6 @@ ret_t ring_buffer_write_len (ring_buffer_t* ring_buffer, const void* buff, uint3
>
最大容量。
-
* 类型:uint32\_t
| 特性 | 是否支持 |
@@ -497,7 +475,6 @@ ret_t ring_buffer_write_len (ring_buffer_t* ring_buffer, const void* buff, uint3
>
读取位置。
-
* 类型:uint32\_t
| 特性 | 是否支持 |
@@ -509,7 +486,6 @@ ret_t ring_buffer_write_len (ring_buffer_t* ring_buffer, const void* buff, uint3
>
写入位置。
-
* 类型:uint32\_t
| 特性 | 是否支持 |
diff --git a/docs/manual/scroll_bar_t.md b/docs/manual/scroll_bar_t.md
index 0afe159c16..712f8660dc 100644
--- a/docs/manual/scroll_bar_t.md
+++ b/docs/manual/scroll_bar_t.md
@@ -20,7 +20,7 @@
```
> 更多用法请参考:[list\_view\_m.xml](
-https://github.com/zlgopen/awtk/blob/master/demos/assets/raw/ui/list_view_m.xml)
+https://github.com/zlgopen/awtk/blob/master/demos/assets/default/raw/ui/list_view_m.xml)
在c代码中使用函数scroll\_bar\_create创建列表项控件。如:
@@ -37,7 +37,7 @@ https://github.com/zlgopen/awtk/blob/master/demos/assets/raw/ui/list_view_m.xml)
```
> 更多用法请参考:[theme default](
-https://github.com/zlgopen/awtk/blob/master/demos/assets/raw/styles/default.xml#L350)
+https://github.com/zlgopen/awtk/blob/master/demos/assets/default/raw/styles/default.xml#L350)
----------------------------------
diff --git a/docs/manual/scroll_view_t.md b/docs/manual/scroll_view_t.md
index 6a1da0c0c4..9f472aa76b 100644
--- a/docs/manual/scroll_view_t.md
+++ b/docs/manual/scroll_view_t.md
@@ -25,7 +25,7 @@
> 滚动视图一般作为列表视图的子控件使用。
> 更多用法请参考:[list\_view\_m.xml](
-https://github.com/zlgopen/awtk/blob/master/demos/assets/raw/ui/list_view_m.xml)
+https://github.com/zlgopen/awtk/blob/master/demos/assets/default/raw/ui/list_view_m.xml)
在c代码中使用函数scroll\_view\_create创建列表视图控件。如:
diff --git a/docs/manual/self_layouter_default_t.md b/docs/manual/self_layouter_default_t.md
index 725ea9fa48..551b8cd43e 100644
--- a/docs/manual/self_layouter_default_t.md
+++ b/docs/manual/self_layouter_default_t.md
@@ -9,7 +9,6 @@
https://github.com/zlgopen/awtk/blob/master/docs/self_layouter_default.md)
-
----------------------------------
### 函数
@@ -28,7 +27,6 @@ https://github.com/zlgopen/awtk/blob/master/docs/self_layouter_default.md)
-
* 函数原型:
```
diff --git a/docs/manual/self_layouter_factory_t.md b/docs/manual/self_layouter_factory_t.md
index 4578da8af8..44437cb9e3 100644
--- a/docs/manual/self_layouter_factory_t.md
+++ b/docs/manual/self_layouter_factory_t.md
@@ -3,7 +3,6 @@
控件自身布局算法工厂。
-
----------------------------------
### 函数
@@ -24,7 +23,6 @@
>
获取缺省的控件自身布局算法工厂对象。
-
* 函数原型:
```
@@ -45,7 +43,6 @@ self_layouter_factory_t* self_layouter_factory ();
-
* 函数原型:
```
@@ -66,7 +63,6 @@ self_layouter_factory_t* self_layouter_factory_create ();
-
* 函数原型:
```
@@ -89,7 +85,6 @@ self_layouter_t* self_layouter_factory_create_layouter (self_layouter_factory_t*
-
* 函数原型:
```
@@ -111,7 +106,6 @@ ret_t self_layouter_factory_destroy (self_layouter_factory_t* factory);
-
* 函数原型:
```
@@ -135,7 +129,6 @@ ret_t self_layouter_factory_register (self_layouter_factory_t* factory, const ch
-
* 函数原型:
```
diff --git a/docs/manual/self_layouter_menu_t.md b/docs/manual/self_layouter_menu_t.md
index cbe3e1d253..654bb1a144 100644
--- a/docs/manual/self_layouter_menu_t.md
+++ b/docs/manual/self_layouter_menu_t.md
@@ -9,7 +9,6 @@
https://github.com/zlgopen/awtk/blob/master/docs/self_layouter_menu.md)
-
----------------------------------
### 函数
@@ -29,7 +28,6 @@
-
* 函数原型:
```
@@ -51,7 +49,6 @@ self_layouter_t* self_layouter_create (const char* params);
-
* 函数原型:
```
@@ -73,7 +70,6 @@ ret_t self_layouter_destroy (self_layouter_t* layouter);
-
* 函数原型:
```
@@ -97,7 +93,6 @@ ret_t self_layouter_get_param (self_layouter_t* layouter, const char* name, valu
-
* 函数原型:
```
@@ -121,7 +116,6 @@ ret_t self_layouter_get_param_float (self_layouter_t* layouter, const char* name
-
* 函数原型:
```
@@ -145,7 +139,6 @@ ret_t self_layouter_get_param_int (self_layouter_t* layouter, const char* name,
-
* 函数原型:
```
@@ -169,7 +162,6 @@ ret_t self_layouter_layout (self_layouter_t* layouter, widget_t* widget, rect_t*
-
* 函数原型:
```
@@ -193,7 +185,6 @@ ret_t self_layouter_set_param (self_layouter_t* layouter, const char* name, cons
-
* 函数原型:
```
@@ -217,7 +208,6 @@ ret_t self_layouter_set_param_str (self_layouter_t* layouter, const char* name,
-
* 函数原型:
```
diff --git a/docs/manual/shortcut_t.md b/docs/manual/shortcut_t.md
index 2997004a70..ae4308c00e 100644
--- a/docs/manual/shortcut_t.md
+++ b/docs/manual/shortcut_t.md
@@ -2,7 +2,6 @@
### 概述
快捷键。
-
----------------------------------
### 函数
@@ -40,7 +39,6 @@
-
* 函数原型:
```
@@ -63,7 +61,6 @@ bool_t shortcut_equal (shortcut_t* shortcut1, shortcut_t* shortcut2);
-
* 函数原型:
```
@@ -84,7 +81,6 @@ shortcut_t* shortcut_init ();
-
* 函数原型:
```
@@ -106,7 +102,6 @@ shortcut_t* shortcut_init_with_str (shortcut_t* shortcut);
-
* 函数原型:
```
@@ -125,7 +120,6 @@ bool_t shortcut_match (shortcut_t* filter, shortcut_t* event);
>
alt键是否按下。
-
* 类型:bool\_t
| 特性 | 是否支持 |
@@ -137,7 +131,6 @@ bool_t shortcut_match (shortcut_t* filter, shortcut_t* event);
>
cmd/win键是否按下。
-
* 类型:bool\_t
| 特性 | 是否支持 |
@@ -149,7 +142,6 @@ bool_t shortcut_match (shortcut_t* filter, shortcut_t* event);
>
ctrl键是否按下。
-
* 类型:bool\_t
| 特性 | 是否支持 |
@@ -161,7 +153,6 @@ bool_t shortcut_match (shortcut_t* filter, shortcut_t* event);
>
是否有效。
-
* 类型:bool\_t
| 特性 | 是否支持 |
@@ -173,7 +164,6 @@ bool_t shortcut_match (shortcut_t* filter, shortcut_t* event);
>
键值。
-
* 类型:uint32\_t
| 特性 | 是否支持 |
@@ -185,7 +175,6 @@ bool_t shortcut_match (shortcut_t* filter, shortcut_t* event);
>
left alt键是否按下。
-
* 类型:bool\_t
| 特性 | 是否支持 |
@@ -197,7 +186,6 @@ bool_t shortcut_match (shortcut_t* filter, shortcut_t* event);
>
left ctrl键是否按下。
-
* 类型:bool\_t
| 特性 | 是否支持 |
@@ -209,7 +197,6 @@ bool_t shortcut_match (shortcut_t* filter, shortcut_t* event);
>
left shift键是否按下。
-
* 类型:bool\_t
| 特性 | 是否支持 |
@@ -221,7 +208,6 @@ bool_t shortcut_match (shortcut_t* filter, shortcut_t* event);
>
right alt键是否按下。
-
* 类型:bool\_t
| 特性 | 是否支持 |
@@ -245,7 +230,6 @@ bool_t shortcut_match (shortcut_t* filter, shortcut_t* event);
>
right ctrl键是否按下。
-
* 类型:bool\_t
| 特性 | 是否支持 |
@@ -257,7 +241,6 @@ bool_t shortcut_match (shortcut_t* filter, shortcut_t* event);
>
right shift键是否按下。
-
* 类型:bool\_t
| 特性 | 是否支持 |
@@ -269,7 +252,6 @@ bool_t shortcut_match (shortcut_t* filter, shortcut_t* event);
>
shift键是否按下。
-
* 类型:bool\_t
| 特性 | 是否支持 |
diff --git a/docs/manual/slide_indicator_t.md b/docs/manual/slide_indicator_t.md
index a70280903e..07a1765b79 100644
--- a/docs/manual/slide_indicator_t.md
+++ b/docs/manual/slide_indicator_t.md
@@ -18,7 +18,7 @@
```
> 更多用法请参考:[slide\_view.xml](
-https://github.com/zlgopen/awtk/blob/master/demos/assets/raw/ui/slide_view.xml)
+https://github.com/zlgopen/awtk/blob/master/demos/assets/default/raw/ui/slide_view.xml)
在c代码中使用函数slide\_indicator\_create创建指示器控件。如:
@@ -33,8 +33,7 @@ https://github.com/zlgopen/awtk/blob/master/demos/assets/raw/ui/slide_view.xml)
```
> 更多用法请参考:[theme default](
-https://github.com/zlgopen/awtk/blob/master/demos/assets/raw/styles/default.xml#L350)
-
+https://github.com/zlgopen/awtk/blob/master/demos/assets/default/raw/styles/default.xml#L350)
----------------------------------
@@ -80,7 +79,6 @@ https://github.com/zlgopen/awtk/blob/master/demos/assets/raw/styles/default.xml#
-
* 函数原型:
```
@@ -102,7 +100,6 @@ widget_t* slide_indicator_cast (widget_t* widget);
-
* 函数原型:
```
@@ -128,7 +125,6 @@ widget_t* slide_indicator_create (widget_t* parent, xy_t x, xy_t y, wh_t w, wh_t
-
* 函数原型:
```
@@ -154,7 +150,6 @@ widget_t* slide_indicator_create_arc (widget_t* parent, xy_t x, xy_t y, wh_t w,
-
* 函数原型:
```
@@ -180,7 +175,6 @@ widget_t* slide_indicator_create_linear (widget_t* parent, xy_t x, xy_t y, wh_t
-
* 函数原型:
```
@@ -204,7 +198,6 @@ ret_t slide_indicator_set_anchor (widget_t* widget, const char* anchor_x, const
-
* 函数原型:
```
@@ -227,7 +220,6 @@ ret_t slide_indicator_set_auto_hide (widget_t* widget, uint16_t auto_hide);
-
* 函数原型:
```
@@ -250,7 +242,6 @@ ret_t slide_indicator_set_default_paint (widget_t* widget, indicator_default_pai
-
* 函数原型:
```
@@ -273,7 +264,6 @@ ret_t slide_indicator_set_indicated_target (widget_t* widget, const char* indica
-
* 函数原型:
```
@@ -296,7 +286,6 @@ ret_t slide_indicator_set_margin (widget_t* widget, int32_t margin);
-
* 函数原型:
```
@@ -319,7 +308,6 @@ ret_t slide_indicator_set_max (widget_t* widget, uint32_t max);
-
* 函数原型:
```
@@ -342,7 +330,6 @@ ret_t slide_indicator_set_size (widget_t* widget, uint32_t size);
-
* 函数原型:
```
@@ -365,7 +352,6 @@ ret_t slide_indicator_set_spacing (widget_t* widget, float_t spacing);
-
* 函数原型:
```
@@ -384,7 +370,6 @@ ret_t slide_indicator_set_value (widget_t* widget, uint32_t value);
>
锚点x坐标。
-
* 类型:float\_t
| 特性 | 是否支持 |
@@ -402,7 +387,6 @@ ret_t slide_indicator_set_value (widget_t* widget, uint32_t value);
>
锚点y坐标。
-
* 类型:float\_t
| 特性 | 是否支持 |
@@ -420,7 +404,6 @@ ret_t slide_indicator_set_value (widget_t* widget, uint32_t value);
>
自动隐藏。0表示禁止,非0表示无操作后延迟多久隐藏。
-
* 类型:uint16\_t
| 特性 | 是否支持 |
@@ -438,7 +421,6 @@ ret_t slide_indicator_set_value (widget_t* widget, uint32_t value);
>
指示器的类型。
-
* 类型:indicator\_default\_paint\_t
| 特性 | 是否支持 |
@@ -456,7 +438,6 @@ ret_t slide_indicator_set_value (widget_t* widget, uint32_t value);
>
指示器指示的目标。
-
* 类型:char*
| 特性 | 是否支持 |
@@ -474,7 +455,6 @@ ret_t slide_indicator_set_value (widget_t* widget, uint32_t value);
>
指示器与边缘的边距。
-
* 类型:int32\_t
| 特性 | 是否支持 |
@@ -492,7 +472,6 @@ ret_t slide_indicator_set_value (widget_t* widget, uint32_t value);
>
最大值(缺省为100)。
-
* 类型:uint32\_t
| 特性 | 是否支持 |
@@ -510,7 +489,6 @@ ret_t slide_indicator_set_value (widget_t* widget, uint32_t value);
>
指示器的大小。
-
* 类型:uint32\_t
| 特性 | 是否支持 |
@@ -528,7 +506,6 @@ ret_t slide_indicator_set_value (widget_t* widget, uint32_t value);
>
指示器的中心之间的间距(圆弧显示时,间距的单位为弧度,否则为像素)。
-
* 类型:float\_t
| 特性 | 是否支持 |
@@ -546,7 +523,6 @@ ret_t slide_indicator_set_value (widget_t* widget, uint32_t value);
>
值(缺省为0)。
-
* 类型:uint32\_t
| 特性 | 是否支持 |
diff --git a/docs/manual/slide_menu_t.md b/docs/manual/slide_menu_t.md
index e106a392b5..6623e7163f 100644
--- a/docs/manual/slide_menu_t.md
+++ b/docs/manual/slide_menu_t.md
@@ -21,7 +21,7 @@
```
> 更多用法请参考:[slide_menu.xml](
- https://github.com/zlgopen/awtk/blob/master/demos/assets/raw/ui/slide_menu.xml)
+ https://github.com/zlgopen/awtk/blob/master/demos/assets/default/raw/ui/slide_menu.xml)
在c代码中使用函数slide\_menu\_create创建左右滑动菜单控件。如:
@@ -61,7 +61,7 @@
```
> 更多用法请参考:[theme default](
- https://github.com/zlgopen/awtk/blob/master/demos/assets/raw/styles/default.xml#L493)
+ https://github.com/zlgopen/awtk/blob/master/demos/assets/default/raw/styles/default.xml#L493)
----------------------------------
diff --git a/docs/manual/slide_view_t.md b/docs/manual/slide_view_t.md
index 3b099158d8..0e08ba6c6c 100644
--- a/docs/manual/slide_view_t.md
+++ b/docs/manual/slide_view_t.md
@@ -22,7 +22,7 @@
```
> 更多用法请参考:[slide_view.xml](
-https://github.com/zlgopen/awtk/blob/master/demos/assets/raw/ui/slide_view.xml)
+https://github.com/zlgopen/awtk/blob/master/demos/assets/default/raw/ui/slide_view.xml)
在c代码中使用函数slide\_view\_create创建滑动视图控件。如:
@@ -45,7 +45,7 @@ https://github.com/zlgopen/awtk/blob/master/demos/assets/raw/ui/slide_view.xml)
> 如果希望背景图片跟随滚动,请将背景图片设置到页面上,否则设置到slide\_view上。
> 更多用法请参考:[theme default](
- https://github.com/zlgopen/awtk/blob/master/demos/assets/raw/styles/default.xml#L458)
+ https://github.com/zlgopen/awtk/blob/master/demos/assets/default/raw/styles/default.xml#L458)
----------------------------------
diff --git a/docs/manual/slider_t.md b/docs/manual/slider_t.md
index 9a12bcc04d..6f70572885 100644
--- a/docs/manual/slider_t.md
+++ b/docs/manual/slider_t.md
@@ -15,7 +15,7 @@
```
> 更多用法请参考:
- [basic](https://github.com/zlgopen/awtk/blob/master/demos/assets/raw/ui/basic.xml)
+ [basic](https://github.com/zlgopen/awtk/blob/master/demos/assets/default/raw/ui/basic.xml)
在c代码中使用函数slider\_create创建滑块控件。如:
@@ -40,7 +40,7 @@
> 更多用法请参考:
[theme
- default](https://github.com/zlgopen/awtk/blob/master/demos/assets/raw/styles/default.xml#L179)
+ default](https://github.com/zlgopen/awtk/blob/master/demos/assets/default/raw/styles/default.xml#L179)
----------------------------------
diff --git a/docs/manual/slist_t.md b/docs/manual/slist_t.md
index 6a69bcdc50..0d79d34bbb 100644
--- a/docs/manual/slist_t.md
+++ b/docs/manual/slist_t.md
@@ -20,7 +20,6 @@
```
-
----------------------------------
### 函数
@@ -56,7 +55,6 @@
-
* 函数原型:
```
@@ -79,7 +77,6 @@ ret_t slist_append (slist_t* slist, void* data);
-
* 函数原型:
```
@@ -102,7 +99,6 @@ int32_t slist_count (slist_t* slist, void* ctx);
-
* 函数原型:
```
@@ -125,7 +121,6 @@ slist_t* slist_create (tk_destroy_t destroy, tk_compare_t compare);
-
* 函数原型:
```
@@ -148,7 +143,6 @@ ret_t slist_deinit (slist_t* slist);
-
* 函数原型:
```
@@ -170,7 +164,6 @@ ret_t slist_destroy (slist_t* slist);
-
* 函数原型:
```
@@ -193,7 +186,6 @@ void* slist_find (slist_t* slist, void* ctx);
-
* 函数原型:
```
@@ -217,7 +209,6 @@ ret_t slist_foreach (slist_t* slist, tk_visit_t visit, void* ctx);
-
* 函数原型:
```
@@ -241,7 +232,6 @@ slist_t* slist_init (slist_t* slist, tk_destroy_t destroy, tk_compare_t compare)
-
* 函数原型:
```
@@ -264,7 +254,6 @@ ret_t slist_prepend (slist_t* slist, void* data);
-
* 函数原型:
```
@@ -287,7 +276,6 @@ ret_t slist_remove (slist_t* slist, void* ctx);
-
* 函数原型:
```
@@ -309,7 +297,6 @@ ret_t slist_remove_all (slist_t* slist);
-
* 函数原型:
```
@@ -327,7 +314,6 @@ int32_t slist_size (slist_t* slist);
>
元素比较函数。
-
* 类型:tk\_compare\_t
| 特性 | 是否支持 |
@@ -339,7 +325,6 @@ int32_t slist_size (slist_t* slist);
>
元素销毁函数。
-
* 类型:tk\_destroy\_t
| 特性 | 是否支持 |
@@ -351,7 +336,6 @@ int32_t slist_size (slist_t* slist);
>
首节点。
-
* 类型:slist\_node\_t*
| 特性 | 是否支持 |
diff --git a/docs/manual/spin_box_t.md b/docs/manual/spin_box_t.md
index 06d659697b..ad8984cb2f 100644
--- a/docs/manual/spin_box_t.md
+++ b/docs/manual/spin_box_t.md
@@ -18,7 +18,7 @@
```
>
- 更多用法请参考:[spin_box.xml](https://github.com/zlgopen/awtk/blob/master/demos/assets/raw/ui/spinbox.xml)
+ 更多用法请参考:[spin_box.xml](https://github.com/zlgopen/awtk/blob/master/demos/assets/default/raw/ui/spinbox.xml)
在c代码中使用函数spin_box\_create创建spinbox控件。如:
@@ -49,7 +49,7 @@
```
> 更多用法请参考:[theme
- default](https://github.com/zlgopen/awtk/blob/master/demos/assets/raw/styles/default.xml#L128)
+ default](https://github.com/zlgopen/awtk/blob/master/demos/assets/default/raw/styles/default.xml#L128)
----------------------------------
diff --git a/docs/manual/str_t.md b/docs/manual/str_t.md
index ce0fc1684c..fbd2106b70 100644
--- a/docs/manual/str_t.md
+++ b/docs/manual/str_t.md
@@ -17,7 +17,6 @@
> 先调str\_init进行初始化,最后调用str\_reset释放内存。
-
----------------------------------
### 函数
@@ -73,7 +72,6 @@
-
* 函数原型:
```
@@ -96,7 +94,6 @@ ret_t str_append (str_t* str, char* text);
-
* 函数原型:
```
@@ -119,7 +116,6 @@ ret_t str_append_char (str_t* str, char c);
-
* 函数原型:
```
@@ -143,7 +139,6 @@ ret_t str_append_with_len (str_t* str, char* text, uint32_t len);
-
* 函数原型:
```
@@ -165,7 +160,6 @@ ret_t str_clear (str_t* str);
-
* 函数原型:
```
@@ -188,7 +182,6 @@ ret_t str_decode_xml_entity (str_t* str, char* text);
-
* 函数原型:
```
@@ -212,7 +205,6 @@ ret_t str_decode_xml_entity_with_len (str_t* str, char* text, uint32_t len);
-
* 函数原型:
```
@@ -235,7 +227,6 @@ bool_t str_end_with (str_t* str, char* text);
-
* 函数原型:
```
@@ -265,7 +256,6 @@ bool_t str_eq (str_t* str, char* text);
-
* 函数原型:
```
@@ -287,7 +277,6 @@ ret_t str_expand_vars (str_t* str);
-
* 函数原型:
```
@@ -310,7 +299,6 @@ ret_t str_extend (str_t* str, uint32_t capacity);
-
* 函数原型:
```
@@ -333,7 +321,6 @@ ret_t str_from_float (str_t* str, double v);
-
* 函数原型:
```
@@ -356,7 +343,6 @@ ret_t str_from_int (str_t* str, int32_t v);
-
* 函数原型:
```
@@ -379,7 +365,6 @@ ret_t str_from_value (str_t* str, value_t v);
-
* 函数原型:
```
@@ -402,7 +387,6 @@ ret_t str_from_wstr (str_t* str, wchar_t* wstr);
-
* 函数原型:
```
@@ -425,7 +409,6 @@ str_t* str_init (str_t* str, uint32_t capacity);
-
* 函数原型:
```
@@ -449,7 +432,6 @@ ret_t str_insert (str_t* str, uint32_t offset, char* text);
-
* 函数原型:
```
@@ -474,7 +456,6 @@ ret_t str_insert_with_len (str_t* str, uint32_t offset, char* text, uint32_t len
-
* 函数原型:
```
@@ -496,7 +477,6 @@ ret_t str_pop (str_t* str);
-
* 函数原型:
```
@@ -520,7 +500,6 @@ ret_t str_remove (str_t* str, uint32_t offset, uint32_t len);
-
* 函数原型:
```
@@ -544,7 +523,6 @@ ret_t str_replace (str_t* str, char* text, char* new_text);
-
* 函数原型:
```
@@ -566,7 +544,6 @@ ret_t str_reset (str_t* str);
-
* 函数原型:
```
@@ -589,7 +566,6 @@ ret_t str_set (str_t* str, char* text);
-
* 函数原型:
```
@@ -613,7 +589,6 @@ ret_t str_set_with_len (str_t* str, char* text, uint32_t len);
-
* 函数原型:
```
@@ -636,7 +611,6 @@ bool_t str_start_with (str_t* str, char* text);
-
* 函数原型:
```
@@ -659,7 +633,6 @@ ret_t str_to_float (str_t* str, double* v);
-
* 函数原型:
```
@@ -682,7 +655,6 @@ ret_t str_to_int (str_t* str, int32_t* v);
-
* 函数原型:
```
@@ -704,7 +676,6 @@ ret_t str_to_lower (str_t* str);
-
* 函数原型:
```
@@ -726,7 +697,6 @@ ret_t str_to_upper (str_t* str);
-
* 函数原型:
```
@@ -749,7 +719,6 @@ ret_t str_trim (str_t* str, char* text);
-
* 函数原型:
```
@@ -772,7 +741,6 @@ ret_t str_trim_left (str_t* str, char* text);
-
* 函数原型:
```
@@ -795,7 +763,6 @@ ret_t str_trim_right (str_t* str, char* text);
-
* 函数原型:
```
@@ -813,7 +780,6 @@ ret_t str_unescape (str_t* str);
>
容量。
-
* 类型:uint32\_t
| 特性 | 是否支持 |
@@ -825,7 +791,6 @@ ret_t str_unescape (str_t* str);
>
长度。
-
* 类型:uint32\_t
| 特性 | 是否支持 |
@@ -837,7 +802,6 @@ ret_t str_unescape (str_t* str);
>
字符串。
-
* 类型:char*
| 特性 | 是否支持 |
diff --git a/docs/manual/style_const_t.md b/docs/manual/style_const_t.md
index 11e35dab9c..675fe24a17 100644
--- a/docs/manual/style_const_t.md
+++ b/docs/manual/style_const_t.md
@@ -8,7 +8,6 @@
tools/theme_gen用于把XML的主题数据转换成常量数据。
-
----------------------------------
### 函数
@@ -26,7 +25,6 @@
-
* 函数原型:
```
diff --git a/docs/manual/style_factory_t.md b/docs/manual/style_factory_t.md
index 44ab60ae15..cfba50cc32 100644
--- a/docs/manual/style_factory_t.md
+++ b/docs/manual/style_factory_t.md
@@ -5,7 +5,6 @@
> 在特殊情况下,可以实现自己的style工厂,比如支持CSS和可实时修改的style。
-
----------------------------------
### 函数
@@ -23,7 +22,6 @@
>
获取缺省的style factory。
-
* 函数原型:
```
@@ -44,7 +42,6 @@ style_factory_t* style_factory ();
-
* 函数原型:
```
@@ -67,7 +64,6 @@ style_t* style_factory_create_style (style_factory_t* factory, widget_t* widget)
-
* 函数原型:
```
diff --git a/docs/manual/style_id_t.md b/docs/manual/style_id_t.md
index 5eed46aab7..64c73b3369 100644
--- a/docs/manual/style_id_t.md
+++ b/docs/manual/style_id_t.md
@@ -1,7 +1,6 @@
## style\_id\_t
### 概述
style常量定义。
-
### 常量
diff --git a/docs/manual/style_mutable_t.md b/docs/manual/style_mutable_t.md
index db3033ddb9..33a62635ea 100644
--- a/docs/manual/style_mutable_t.md
+++ b/docs/manual/style_mutable_t.md
@@ -8,7 +8,6 @@
style\_mutable也对style\_const进行了包装,当用户没修改某个值时,便从style\_const中获取。
-
----------------------------------
### 函数
@@ -42,7 +41,6 @@
-
* 函数原型:
```
@@ -64,7 +62,6 @@ style_t* style_mutable_cast (style_t* s);
-
* 函数原型:
```
@@ -90,7 +87,6 @@ ret_t style_mutable_copy (style_t* s, style_t* other);
-
* 函数原型:
```
@@ -113,7 +109,6 @@ style_t* style_mutable_create (widget_t* widget, style_t* default_style);
-
* 函数原型:
```
@@ -137,7 +132,6 @@ ret_t style_mutable_foreach (style_t* s, tk_on_style_item_t on_style_item, void*
-
* 函数原型:
```
@@ -159,7 +153,6 @@ const char* style_mutable_get_name (style_t* s);
-
* 函数原型:
```
@@ -184,7 +177,6 @@ ret_t style_mutable_get_value (style_t* s, const char* state, const char* name,
-
* 函数原型:
```
@@ -205,7 +197,6 @@ ret_t style_mutable_register ();
-
* 函数原型:
```
@@ -230,7 +221,6 @@ ret_t style_mutable_set_color (style_t* s, const char* state, const char* name,
-
* 函数原型:
```
@@ -255,7 +245,6 @@ ret_t style_mutable_set_int (style_t* s, const char* state, const char* name, in
-
* 函数原型:
```
@@ -278,7 +267,6 @@ ret_t style_mutable_set_name (style_t* s, const char* name);
-
* 函数原型:
```
@@ -303,7 +291,6 @@ ret_t style_mutable_set_str (style_t* s, const char* state, const char* name, co
-
* 函数原型:
```
@@ -324,7 +311,6 @@ ret_t style_mutable_set_value (style_t* s, const char* state, const char* name,
>
名称。
-
* 类型:char*
| 特性 | 是否支持 |
diff --git a/docs/manual/style_t.md b/docs/manual/style_t.md
index 59d7cf1cb9..941aeb6d53 100644
--- a/docs/manual/style_t.md
+++ b/docs/manual/style_t.md
@@ -14,7 +14,6 @@
属性名称的请参考[style\_id](style_id_t.md)
-
----------------------------------
### 函数
@@ -38,7 +37,6 @@
-
* 函数原型:
```
@@ -60,7 +58,6 @@ ret_t style_destroy (style_t* s);
-
* 函数原型:
```
@@ -84,7 +81,6 @@ color_t style_get_color (style_t* s, const char* name, color_t defval);
-
* 函数原型:
```
@@ -108,7 +104,6 @@ int32_t style_get_int (style_t* s, const char* name, int32_t defval);
-
* 函数原型:
```
@@ -132,7 +127,6 @@ const char* style_get_str (style_t* s, const char* name, const char* defval);
-
* 函数原型:
```
@@ -154,7 +148,6 @@ bool_t style_is_mutable (style_t* s);
-
* 函数原型:
```
@@ -176,7 +169,6 @@ bool_t style_is_valid (style_t* s);
-
* 函数原型:
```
@@ -199,7 +191,6 @@ ret_t style_notify_widget_state_changed (style_t* s, widget_t* widget);
-
* 函数原型:
```
diff --git a/docs/manual/suggest_words_t.md b/docs/manual/suggest_words_t.md
index a09e2bcd3e..5d005336b1 100644
--- a/docs/manual/suggest_words_t.md
+++ b/docs/manual/suggest_words_t.md
@@ -2,7 +2,6 @@
### 概述
输入法联想字词。
-
----------------------------------
### 函数
@@ -26,7 +25,6 @@
-
* 函数原型:
```
@@ -49,7 +47,6 @@ suggest_words_t* suggest_words_create (asset_info_t* res);
-
* 函数原型:
```
@@ -71,7 +68,6 @@ ret_t suggest_words_destroy (suggest_words_t* suggest_words);
-
* 函数原型:
```
diff --git a/docs/manual/svg_image_t.md b/docs/manual/svg_image_t.md
index 29fc85a6e0..544ebb2b7f 100644
--- a/docs/manual/svg_image_t.md
+++ b/docs/manual/svg_image_t.md
@@ -13,7 +13,7 @@
```
>更多用法请参考:[svg image](
- https://github.com/zlgopen/awtk/blob/master/demos/assets/raw/ui/svg_image.xml)
+ https://github.com/zlgopen/awtk/blob/master/demos/assets/default/raw/ui/svg_image.xml)
在c代码中使用函数svg\_image\_create创建SVG图片控件。如:
@@ -38,7 +38,7 @@
```
> 更多用法请参考:[theme default](
- https://github.com/zlgopen/awtk/blob/master/demos/assets/raw/styles/default.xml)
+ https://github.com/zlgopen/awtk/blob/master/demos/assets/default/raw/styles/default.xml)
----------------------------------
diff --git a/docs/manual/switch_t.md b/docs/manual/switch_t.md
index b1e13af81c..8635345bf1 100644
--- a/docs/manual/switch_t.md
+++ b/docs/manual/switch_t.md
@@ -13,7 +13,7 @@
```
> 更多用法请参考:[switch.xml](
- https://github.com/zlgopen/awtk/blob/master/demos/assets/raw/ui/switch.xml)
+ https://github.com/zlgopen/awtk/blob/master/demos/assets/default/raw/ui/switch.xml)
在c代码中使用函数switch\_create创建开关控件。如:
@@ -34,7 +34,7 @@
```
> 更多用法请参考:[theme default](
- https://github.com/zlgopen/awtk/blob/master/demos/assets/raw/styles/default.xml#L452)
+ https://github.com/zlgopen/awtk/blob/master/demos/assets/default/raw/styles/default.xml#L452)
----------------------------------
diff --git a/docs/manual/system_bar_t.md b/docs/manual/system_bar_t.md
index 39c1e335db..09b7ab4b61 100644
--- a/docs/manual/system_bar_t.md
+++ b/docs/manual/system_bar_t.md
@@ -29,7 +29,7 @@ system\_bar\_t是[window\_base\_t](window_base_t.md)的子类控件,
```
> 更多用法请参考:
- [system_bar](https://github.com/zlgopen/awtk/blob/master/demos/assets/raw/ui/system_bar.xml)
+ [system_bar](https://github.com/zlgopen/awtk/blob/master/demos/assets/default/raw/ui/system_bar.xml)
在c代码中使用函数system\_bar\_create创建system\_bar窗口。如:
@@ -50,7 +50,7 @@ system\_bar\_t是[window\_base\_t](window_base_t.md)的子类控件,
```
> 更多用法请参考:
- [system_bar.xml](https://github.com/zlgopen/awtk/blob/master/demos/assets/raw/styles/system_bar.xml)
+ [system_bar.xml](https://github.com/zlgopen/awtk/blob/master/demos/assets/default/raw/styles/system_bar.xml)
----------------------------------
diff --git a/docs/manual/system_info_t.md b/docs/manual/system_info_t.md
index 5265dc6cd1..b2ca287a31 100644
--- a/docs/manual/system_info_t.md
+++ b/docs/manual/system_info_t.md
@@ -4,7 +4,6 @@
当前系统的信息。
-
----------------------------------
### 函数
@@ -48,7 +47,6 @@
>
获取system_info对象。
-
* 函数原型:
```
@@ -69,7 +67,6 @@ system_info_t* system_info ();
-
* 函数原型:
```
@@ -91,7 +88,6 @@ ret_t system_info_deinit ();
-
* 函数原型:
```
@@ -113,7 +109,6 @@ const char* system_info_fix_font_name (const char* name);
-
* 函数原型:
```
@@ -138,7 +133,6 @@ ret_t system_info_init (app_type_t app_type, const char* app_name, const char* a
-
* 函数原型:
```
@@ -162,7 +156,6 @@ ret_t system_info_set_default_font (system_info_t* info info, const char* defaul
-
* 函数原型:
```
@@ -186,7 +179,6 @@ ret_t system_info_set_device_pixel_ratio (system_info_t* info info, float_t devi
-
* 函数原型:
```
@@ -210,7 +202,6 @@ ret_t system_info_set_font_scale (system_info_t* info info, float_t font_scale);
-
* 函数原型:
```
@@ -234,7 +225,6 @@ ret_t system_info_set_lcd_h (system_info_t* info info, uint32_t lcd_h);
-
* 函数原型:
```
@@ -258,7 +248,6 @@ ret_t system_info_set_lcd_orientation (system_info_t* info info, lcd_orientation
-
* 函数原型:
```
@@ -282,7 +271,6 @@ ret_t system_info_set_lcd_type (system_info_t* info info, lcd_type_t lcd_type);
-
* 函数原型:
```
@@ -301,7 +289,6 @@ ret_t system_info_set_lcd_w (system_info_t* info info, uint32_t lcd_w);
>
应用程序的名称。
-
* 类型:const char*
| 特性 | 是否支持 |
@@ -313,7 +300,6 @@ ret_t system_info_set_lcd_w (system_info_t* info info, uint32_t lcd_w);
>
应用程序的根目录,用于定位资源文件。
-
* 类型:const char*
| 特性 | 是否支持 |
@@ -325,7 +311,6 @@ ret_t system_info_set_lcd_w (system_info_t* info info, uint32_t lcd_w);
>
应用程序的类型。
-
* 类型:app\_type\_t
| 特性 | 是否支持 |
@@ -339,7 +324,6 @@ ret_t system_info_set_lcd_w (system_info_t* info info, uint32_t lcd_w);
> 只能通过object\_get\_prop函数访问。
-
* 类型:const char*
| 特性 | 是否支持 |
@@ -351,7 +335,6 @@ ret_t system_info_set_lcd_w (system_info_t* info info, uint32_t lcd_w);
>
缺省字体。
-
* 类型:const char*
| 特性 | 是否支持 |
@@ -365,7 +348,6 @@ ret_t system_info_set_lcd_w (system_info_t* info info, uint32_t lcd_w);
> 只能通过object\_get\_prop函数访问。
-
* 类型:const char*
| 特性 | 是否支持 |
@@ -377,7 +359,6 @@ ret_t system_info_set_lcd_w (system_info_t* info info, uint32_t lcd_w);
>
显示屏的密度。
-
* 类型:float\_t
| 特性 | 是否支持 |
@@ -389,7 +370,6 @@ ret_t system_info_set_lcd_w (system_info_t* info info, uint32_t lcd_w);
>
字体缩放比例,用于实现字体整体放大。
-
* 类型:float\_t
| 特性 | 是否支持 |
@@ -403,7 +383,6 @@ ret_t system_info_set_lcd_w (system_info_t* info info, uint32_t lcd_w);
> 只能通过object\_get\_prop函数访问。
-
* 类型:const char*
| 特性 | 是否支持 |
@@ -415,7 +394,6 @@ ret_t system_info_set_lcd_w (system_info_t* info info, uint32_t lcd_w);
>
显示屏的高度。
-
* 类型:uint32\_t
| 特性 | 是否支持 |
@@ -427,7 +405,6 @@ ret_t system_info_set_lcd_w (system_info_t* info info, uint32_t lcd_w);
>
显示屏的旋转角度。
-
* 类型:lcd\_orientation\_t
| 特性 | 是否支持 |
@@ -439,7 +416,6 @@ ret_t system_info_set_lcd_w (system_info_t* info info, uint32_t lcd_w);
>
显示屏的类型。
-
* 类型:lcd\_type\_t
| 特性 | 是否支持 |
@@ -451,7 +427,6 @@ ret_t system_info_set_lcd_w (system_info_t* info info, uint32_t lcd_w);
>
显示屏的宽度。
-
* 类型:uint32\_t
| 特性 | 是否支持 |
diff --git a/docs/manual/tab_button_group_t.md b/docs/manual/tab_button_group_t.md
index 93a559404c..5942c4e6e0 100644
--- a/docs/manual/tab_button_group_t.md
+++ b/docs/manual/tab_button_group_t.md
@@ -20,7 +20,7 @@
```
> 更多用法请参考:
- [tab control](https://github.com/zlgopen/awtk/blob/master/demos/assets/raw/ui/)
+ [tab control](https://github.com/zlgopen/awtk/blob/master/demos/assets/default/raw/ui/)
可用通过style来设置控件的显示风格,如颜色等等。如:
diff --git a/docs/manual/tab_button_t.md b/docs/manual/tab_button_t.md
index b402bfbb60..0b5458bf34 100644
--- a/docs/manual/tab_button_t.md
+++ b/docs/manual/tab_button_t.md
@@ -21,7 +21,7 @@
标签按钮一般放在标签按钮分组中,布局由标签按钮分组控件决定,不需要指定自己的布局参数和坐标。
> 更多用法请参考:
- [tab control](https://github.com/zlgopen/awtk/blob/master/demos/assets/raw/ui/)
+ [tab control](https://github.com/zlgopen/awtk/blob/master/demos/assets/default/raw/ui/)
可用通过style来设置控件的显示风格,如字体的大小和颜色等等。如:
diff --git a/docs/manual/tab_control_t.md b/docs/manual/tab_control_t.md
index 003e9b9d7f..0684503bb0 100644
--- a/docs/manual/tab_control_t.md
+++ b/docs/manual/tab_control_t.md
@@ -28,7 +28,7 @@
```
> 更多用法请参考:
- [tab control](https://github.com/zlgopen/awtk/blob/master/demos/assets/raw/ui/)
+ [tab control](https://github.com/zlgopen/awtk/blob/master/demos/assets/default/raw/ui/)
----------------------------------
diff --git a/docs/manual/text_edit_state_t.md b/docs/manual/text_edit_state_t.md
index 6280d0ee0a..918e4f8d91 100644
--- a/docs/manual/text_edit_state_t.md
+++ b/docs/manual/text_edit_state_t.md
@@ -1,5 +1,4 @@
## text\_edit\_state\_t
### 概述
-
----------------------------------
diff --git a/docs/manual/text_edit_t.md b/docs/manual/text_edit_t.md
index 86c14f5684..e1a8c3fca7 100644
--- a/docs/manual/text_edit_t.md
+++ b/docs/manual/text_edit_t.md
@@ -1,7 +1,6 @@
## text\_edit\_t
### 概述
-
----------------------------------
### 函数
@@ -43,7 +42,6 @@
-
* 函数原型:
```
@@ -67,7 +65,6 @@ ret_t text_edit_click (text_edit_t* text_edit, xy_t x, xy_t y);
-
* 函数原型:
```
@@ -89,7 +86,6 @@ ret_t text_edit_copy (text_edit_t* text_edit);
-
* 函数原型:
```
@@ -112,7 +108,6 @@ widget_t* text_edit_create (widget_t* widget, boo_t single_line);
-
* 函数原型:
```
@@ -134,7 +129,6 @@ ret_t text_edit_cut (text_edit_t* text_edit);
-
* 函数原型:
```
@@ -156,7 +150,6 @@ ret_t text_edit_destroy (text_edit_t* text_edit);
-
* 函数原型:
```
@@ -180,7 +173,6 @@ ret_t text_edit_drag (text_edit_t* text_edit, xy_t x, xy_t y);
-
* 函数原型:
```
@@ -202,7 +194,6 @@ uin32_t text_edit_get_cursor (text_edit_t* text_edit);
-
* 函数原型:
```
@@ -225,7 +216,6 @@ ret_t text_edit_get_state (text_edit_t* text_edit, text_edit_state_t* state);
-
* 函数原型:
```
@@ -247,7 +237,6 @@ ret_t text_edit_invert_caret_visible (text_edit_t* text_edit);
-
* 函数原型:
```
@@ -270,7 +259,6 @@ ret_t text_edit_key_down (text_edit_t* text_edit, key_event_t* evt);
-
* 函数原型:
```
@@ -292,7 +280,6 @@ ret_t text_edit_layout (text_edit_t* text_edit);
-
* 函数原型:
```
@@ -315,7 +302,6 @@ ret_t text_edit_paint (text_edit_t* text_edit, canvas_t* c);
-
* 函数原型:
```
@@ -339,7 +325,6 @@ ret_t text_edit_paste (text_edit_t* text_edit, const wchar_t* str, uint32_t size
-
* 函数原型:
```
@@ -361,7 +346,6 @@ ret_t text_edit_select_all (text_edit_t* text_edit);
-
* 函数原型:
```
@@ -384,7 +368,6 @@ ret_t text_edit_set_canvas (text_edit_t* text_edit, canvas_t* c);
-
* 函数原型:
```
@@ -407,7 +390,6 @@ ret_t text_edit_set_caret_visible (text_edit_t* text_edit, bool_t caret_visible)
-
* 函数原型:
```
@@ -430,7 +412,6 @@ ret_t text_edit_set_cursor (text_edit_t* text_edit, uint32_t cursor);
-
* 函数原型:
```
@@ -453,7 +434,6 @@ ret_t text_edit_set_mask (text_edit_t* text_edit, bool_t mask);
-
* 函数原型:
```
@@ -476,7 +456,6 @@ ret_t text_edit_set_mask_char (text_edit_t* text_edit, wchar_t mask_char);
-
* 函数原型:
```
@@ -499,7 +478,6 @@ ret_t text_edit_set_max_rows (text_edit_t* text_edit, uint32_t max_rows);
-
* 函数原型:
```
@@ -523,7 +501,6 @@ ret_t text_edit_set_offset (text_edit_t* text_edit, int32_t ox, int32_t oy);
-
* 函数原型:
```
@@ -547,7 +524,6 @@ ret_t text_edit_set_on_state_changed (text_edit_t* text_edit, text_edit_on_state
-
* 函数原型:
```
@@ -571,7 +547,6 @@ ret_t text_edit_set_select (text_edit_t* text_edit, uint32_t start, uint32_t end
-
* 函数原型:
```
@@ -594,7 +569,6 @@ ret_t text_edit_set_tips (text_edit_t* text_edit, const char* tips);
-
* 函数原型:
```
@@ -617,7 +591,6 @@ ret_t text_edit_set_wrap_word (text_edit_t* text_edit, bool_t wrap_word);
-
* 函数原型:
```
diff --git a/docs/manual/text_selector_t.md b/docs/manual/text_selector_t.md
index fddeff7f3a..0fc41c01c3 100644
--- a/docs/manual/text_selector_t.md
+++ b/docs/manual/text_selector_t.md
@@ -15,7 +15,7 @@
```
> 更多用法请参考:[text\_selector.xml](
- https://github.com/zlgopen/awtk/blob/master/demos/assets/raw/ui/text_selector.xml)
+ https://github.com/zlgopen/awtk/blob/master/demos/assets/default/raw/ui/text_selector.xml)
在c代码中使用函数text\_selector\_create创建文本选择器控件。如:
@@ -38,7 +38,7 @@
```
> 更多用法请参考:[theme default](
- https://github.com/zlgopen/awtk/blob/master/demos/assets/raw/styles/default.xml#L443)
+ https://github.com/zlgopen/awtk/blob/master/demos/assets/default/raw/styles/default.xml#L443)
----------------------------------
diff --git a/docs/manual/theme_t.md b/docs/manual/theme_t.md
index fc5b61a947..c0c7cc49e0 100644
--- a/docs/manual/theme_t.md
+++ b/docs/manual/theme_t.md
@@ -5,7 +5,6 @@
负责管理缺省的主题数据,方便实现style\_const。
-
----------------------------------
### 函数
@@ -27,7 +26,6 @@
>
获取缺省的主题对象。
-
* 函数原型:
```
@@ -48,7 +46,6 @@ theme_t* theme ();
-
* 函数原型:
```
@@ -70,7 +67,6 @@ theme_t* theme_create (const uint8_t* data);
-
* 函数原型:
```
@@ -92,7 +88,6 @@ ret_t theme_deinit (theme_t* theme);
-
* 函数原型:
```
@@ -114,7 +109,6 @@ ret_t theme_destroy (theme_t* theme);
-
* 函数原型:
```
@@ -139,7 +133,6 @@ theme_t* theme_find_style (theme_t* data, const char* widget_type, const char* n
-
* 函数原型:
```
@@ -162,7 +155,6 @@ theme_t* theme_init (theme_t* theme, const uint8_t* data);
-
* 函数原型:
```
diff --git a/docs/manual/time_clock_t.md b/docs/manual/time_clock_t.md
index ac15191358..ef2e760d85 100644
--- a/docs/manual/time_clock_t.md
+++ b/docs/manual/time_clock_t.md
@@ -14,7 +14,7 @@
```
> 更多用法请参考:[time\_clock.xml](
- https://github.com/zlgopen/awtk/blob/master/demos/assets/raw/ui/time_clock.xml)
+ https://github.com/zlgopen/awtk/blob/master/demos/assets/default/raw/ui/time_clock.xml)
在c代码中使用函数time\_clock\_create创建模拟时钟控件。如:
diff --git a/docs/manual/time_now_t.md b/docs/manual/time_now_t.md
index ae282d9dc4..b2cee06caf 100644
--- a/docs/manual/time_now_t.md
+++ b/docs/manual/time_now_t.md
@@ -4,7 +4,6 @@
这里的当前时间是相对的,在嵌入式系统一般相对于开机时间。
它本身并没有任何意义,一般用来计算时间间隔,如实现定时器和动画等等。
-
----------------------------------
### 函数
@@ -22,7 +21,6 @@
-
* 函数原型:
```
@@ -43,7 +41,6 @@ uint64_t time_now_ms ();
-
* 函数原型:
```
diff --git a/docs/manual/timer_info_t.md b/docs/manual/timer_info_t.md
index 632050e941..2bbd2423a0 100644
--- a/docs/manual/timer_info_t.md
+++ b/docs/manual/timer_info_t.md
@@ -5,7 +5,6 @@
单个定时器的信息。
-
----------------------------------
### 函数
@@ -36,7 +35,6 @@
-
* 函数原型:
```
@@ -55,7 +53,6 @@ timer_info_t* timer_info_cast (timer_info_t* timer);
-
* 类型:void*
| 特性 | 是否支持 |
@@ -69,7 +66,6 @@ timer_info_t* timer_info_cast (timer_info_t* timer);
-
* 类型:uint32\_t
| 特性 | 是否支持 |
@@ -83,7 +79,6 @@ timer_info_t* timer_info_cast (timer_info_t* timer);
> 为TK\_INVALID\_ID时表示无效定时器。
-
* 类型:uint32\_t
| 特性 | 是否支持 |
@@ -97,7 +92,6 @@ timer_info_t* timer_info_cast (timer_info_t* timer);
-
* 类型:uint64\_t
| 特性 | 是否支持 |
@@ -110,7 +104,6 @@ timer_info_t* timer_info_cast (timer_info_t* timer);
>
定时器销毁时的回调函数。
-
* 类型:tk\_destroy\_t
| 特性 | 是否支持 |
@@ -122,7 +115,6 @@ timer_info_t* timer_info_cast (timer_info_t* timer);
>
定时器销毁时的回调函数上下文。
-
* 类型:void*
| 特性 | 是否支持 |
@@ -134,7 +126,6 @@ timer_info_t* timer_info_cast (timer_info_t* timer);
>
定时器回调函数。
-
* 类型:timer\_func\_t
| 特性 | 是否支持 |
@@ -147,7 +138,6 @@ timer_info_t* timer_info_cast (timer_info_t* timer);
-
* 类型:uint64\_t
| 特性 | 是否支持 |
@@ -159,7 +149,6 @@ timer_info_t* timer_info_cast (timer_info_t* timer);
>
用户是否修改了系统时间。
-
* 类型:bool\_t
| 特性 | 是否支持 |
diff --git a/docs/manual/timer_t.md b/docs/manual/timer_t.md
index 5e84508fed..8a92beb70e 100644
--- a/docs/manual/timer_t.md
+++ b/docs/manual/timer_t.md
@@ -20,7 +20,6 @@
> 在非GUI线程请用timer\_queue。
-
----------------------------------
### 函数
@@ -44,7 +43,6 @@
-
* 函数原型:
```
@@ -68,7 +66,6 @@ uint32_t timer_add (timer_func_t on_timer, void* ctx, uint32_t duration);
-
* 函数原型:
```
@@ -89,7 +86,6 @@ uint32_t timer_count ();
-
* 函数原型:
```
@@ -112,7 +108,6 @@ ret_t timer_modify (uint32_t timer_id, uint32_t duration);
-
* 函数原型:
```
@@ -134,7 +129,6 @@ uint32_t timer_next_time ();
-
* 函数原型:
```
@@ -158,7 +152,6 @@ ret_t timer_queue (timer_func_t , void* ctx, uint32_t duration);
-
* 函数原型:
```
@@ -180,7 +173,6 @@ ret_t timer_remove (uint32_t timer_id);
-
* 函数原型:
```
@@ -202,7 +194,6 @@ ret_t timer_reset (uint32_t timer_id);
-
* 函数原型:
```
diff --git a/docs/manual/tk_cond_var_t.md b/docs/manual/tk_cond_var_t.md
index 66062960a9..ddd11766ff 100644
--- a/docs/manual/tk_cond_var_t.md
+++ b/docs/manual/tk_cond_var_t.md
@@ -2,7 +2,6 @@
### 概述
简化版的条件变量。
-
----------------------------------
### 函数
@@ -22,7 +21,6 @@
-
* 函数原型:
```
@@ -44,7 +42,6 @@ ret_t tk_cond_var_awake (tk_cond_var_t* cond_var);
-
* 函数原型:
```
@@ -65,7 +62,6 @@ tk_cond_var_t* tk_cond_var_create ();
-
* 函数原型:
```
@@ -87,7 +83,6 @@ ret_t tk_cond_var_destroy (tk_cond_var_t* cond_var);
-
* 函数原型:
```
diff --git a/docs/manual/tk_iostream_mem_t.md b/docs/manual/tk_iostream_mem_t.md
index b3d1934998..7003867a28 100644
--- a/docs/manual/tk_iostream_mem_t.md
+++ b/docs/manual/tk_iostream_mem_t.md
@@ -6,7 +6,6 @@
iostream base on mem
-
----------------------------------
### 函数
@@ -26,7 +25,6 @@
-
* 函数原型:
```
diff --git a/docs/manual/tk_iostream_noisy_t.md b/docs/manual/tk_iostream_noisy_t.md
index 715ada7c20..3a313929df 100644
--- a/docs/manual/tk_iostream_noisy_t.md
+++ b/docs/manual/tk_iostream_noisy_t.md
@@ -6,7 +6,6 @@
在输出流中注入错误,方便进行可靠性测试。
-
----------------------------------
### 函数
@@ -28,7 +27,6 @@
-
* 函数原型:
```
diff --git a/docs/manual/tk_iostream_serial_t.md b/docs/manual/tk_iostream_serial_t.md
index 758f379aa1..88b09dfaba 100644
--- a/docs/manual/tk_iostream_serial_t.md
+++ b/docs/manual/tk_iostream_serial_t.md
@@ -6,7 +6,6 @@
input stream base on serial port
-
----------------------------------
### 函数
@@ -26,7 +25,6 @@
-
* 函数原型:
```
diff --git a/docs/manual/tk_iostream_shdlc_t.md b/docs/manual/tk_iostream_shdlc_t.md
index b276cfde0c..51ceaa59ac 100644
--- a/docs/manual/tk_iostream_shdlc_t.md
+++ b/docs/manual/tk_iostream_shdlc_t.md
@@ -8,7 +8,6 @@
一般用于串口通信。
-
----------------------------------
### 函数
@@ -30,7 +29,6 @@
-
* 函数原型:
```
diff --git a/docs/manual/tk_iostream_t.md b/docs/manual/tk_iostream_t.md
index 80db2896d7..97ea8a4c8f 100644
--- a/docs/manual/tk_iostream_t.md
+++ b/docs/manual/tk_iostream_t.md
@@ -6,7 +6,6 @@
input/output stream interface
-
----------------------------------
### 函数
@@ -27,7 +26,6 @@
-
* 函数原型:
```
@@ -52,7 +50,6 @@ tk_istream_t* tk_iostream_get_istream (tk_iostream_t* stream);
-
* 函数原型:
```
diff --git a/docs/manual/tk_iostream_tcp_t.md b/docs/manual/tk_iostream_tcp_t.md
index faad7631f1..1b1d09fdee 100644
--- a/docs/manual/tk_iostream_tcp_t.md
+++ b/docs/manual/tk_iostream_tcp_t.md
@@ -6,7 +6,6 @@
input stream base on socket
-
----------------------------------
### 函数
@@ -26,7 +25,6 @@
-
* 函数原型:
```
diff --git a/docs/manual/tk_iostream_udp_t.md b/docs/manual/tk_iostream_udp_t.md
index 2d43d408d7..b6fe4f8e34 100644
--- a/docs/manual/tk_iostream_udp_t.md
+++ b/docs/manual/tk_iostream_udp_t.md
@@ -6,7 +6,6 @@
input stream base on socket
-
----------------------------------
### 函数
@@ -27,7 +26,6 @@
-
* 函数原型:
```
@@ -52,7 +50,6 @@ tk_iostream_t* tk_iostream_udp_create (int sock);
-
* 函数原型:
```
diff --git a/docs/manual/tk_istream_buffered_t.md b/docs/manual/tk_istream_buffered_t.md
index fd58a71d4b..8b7729eb5c 100644
--- a/docs/manual/tk_istream_buffered_t.md
+++ b/docs/manual/tk_istream_buffered_t.md
@@ -8,7 +8,6 @@
如果调用者每次只读取少量数据,可以使用本类对底层istream进行装饰,以提高读取效率。
-
----------------------------------
### 函数
@@ -30,7 +29,6 @@
-
* 函数原型:
```
diff --git a/docs/manual/tk_istream_file_t.md b/docs/manual/tk_istream_file_t.md
index 0af084f777..8f92a41c75 100644
--- a/docs/manual/tk_istream_file_t.md
+++ b/docs/manual/tk_istream_file_t.md
@@ -6,7 +6,6 @@
input stream base on file
-
----------------------------------
### 函数
@@ -26,7 +25,6 @@
-
* 函数原型:
```
diff --git a/docs/manual/tk_istream_mem_t.md b/docs/manual/tk_istream_mem_t.md
index 5ed4a57b8f..821483ccf3 100644
--- a/docs/manual/tk_istream_mem_t.md
+++ b/docs/manual/tk_istream_mem_t.md
@@ -6,7 +6,6 @@
input stream base on memory
-
----------------------------------
### 函数
@@ -26,7 +25,6 @@
-
* 函数原型:
```
diff --git a/docs/manual/tk_istream_serial_t.md b/docs/manual/tk_istream_serial_t.md
index a062b1eb6b..f6f1bdf96c 100644
--- a/docs/manual/tk_istream_serial_t.md
+++ b/docs/manual/tk_istream_serial_t.md
@@ -6,7 +6,6 @@
input stream base on fd
-
----------------------------------
### 函数
@@ -26,7 +25,6 @@
-
* 函数原型:
```
diff --git a/docs/manual/tk_istream_shdlc_t.md b/docs/manual/tk_istream_shdlc_t.md
index 349ce0317d..256c7cce7a 100644
--- a/docs/manual/tk_istream_shdlc_t.md
+++ b/docs/manual/tk_istream_shdlc_t.md
@@ -6,7 +6,6 @@
reliable istream base on simple HDLC
-
----------------------------------
### 函数
@@ -35,7 +34,6 @@
-
* 函数原型:
```
@@ -53,7 +51,6 @@ tk_istream_t* tk_istream_shdlc_create (tk_iostream_shdlc_t* iostream);
>
失败重传次数。
-
* 类型:uint32\_t
#### timeout 属性
@@ -61,6 +58,5 @@ tk_istream_t* tk_istream_shdlc_create (tk_iostream_shdlc_t* iostream);
>
读写超时时间(ms)
-
* 类型:uint32\_t
diff --git a/docs/manual/tk_istream_t.md b/docs/manual/tk_istream_t.md
index 135e62cc8d..75de6de45b 100644
--- a/docs/manual/tk_istream_t.md
+++ b/docs/manual/tk_istream_t.md
@@ -6,7 +6,6 @@
input stream interface
-
----------------------------------
### 函数
@@ -31,7 +30,6 @@
-
* 函数原型:
```
@@ -56,7 +54,6 @@ ret_t tk_istream_flush (tk_istream_t* stream);
-
* 函数原型:
```
@@ -83,7 +80,6 @@ int32_t tk_istream_read (tk_istream_t* stream, uint8_t* buff, uint32_t max_size)
-
* 函数原型:
```
@@ -111,7 +107,6 @@ int32_t tk_istream_read_len (tk_istream_t* stream, uint8_t* buff, uint32_t max_s
-
* 函数原型:
```
@@ -139,7 +134,6 @@ int32_t tk_istream_read_line (tk_istream_t* stream, uint8_t* buff, uint32_t max_
-
* 函数原型:
```
@@ -165,7 +159,6 @@ ret_t tk_istream_seek (tk_istream_t* stream, uint32_t offset);
-
* 函数原型:
```
diff --git a/docs/manual/tk_istream_tcp_t.md b/docs/manual/tk_istream_tcp_t.md
index 6ba2de9141..652d2c16be 100644
--- a/docs/manual/tk_istream_tcp_t.md
+++ b/docs/manual/tk_istream_tcp_t.md
@@ -6,7 +6,6 @@
input stream base on socket
-
----------------------------------
### 函数
@@ -26,7 +25,6 @@
-
* 函数原型:
```
diff --git a/docs/manual/tk_istream_udp_t.md b/docs/manual/tk_istream_udp_t.md
index bdb8def31e..92801e232a 100644
--- a/docs/manual/tk_istream_udp_t.md
+++ b/docs/manual/tk_istream_udp_t.md
@@ -6,7 +6,6 @@
input stream base on socket
-
----------------------------------
### 函数
@@ -28,7 +27,6 @@
-
* 函数原型:
```
@@ -53,7 +51,6 @@ tk_istream_t* tk_istream_udp_create (int sock);
-
* 函数原型:
```
@@ -79,7 +76,6 @@ ret_t tk_istream_udp_set_target_with_addr (tk_istream_t* stream, struct sockaddr
-
* 函数原型:
```
diff --git a/docs/manual/tk_mem_t.md b/docs/manual/tk_mem_t.md
index f49c901104..1cfa2c5451 100644
--- a/docs/manual/tk_mem_t.md
+++ b/docs/manual/tk_mem_t.md
@@ -18,7 +18,6 @@
TKMEM_FREE(str);
```
-
----------------------------------
### 函数
@@ -39,7 +38,6 @@
-
* 函数原型:
```
@@ -62,7 +60,6 @@ void* TKMEM_ALLOC (uint32_t size);
-
* 函数原型:
```
@@ -86,7 +83,6 @@ void* TKMEM_CALLOC (uint32_t nmemb, uint32_t size);
-
* 函数原型:
```
@@ -109,7 +105,6 @@ void TKMEM_FREE (void* p);
-
* 函数原型:
```
diff --git a/docs/manual/tk_mutex_t.md b/docs/manual/tk_mutex_t.md
index 6ebb4c73be..c73a63d7dd 100644
--- a/docs/manual/tk_mutex_t.md
+++ b/docs/manual/tk_mutex_t.md
@@ -2,7 +2,6 @@
### 概述
互斥锁。
-
----------------------------------
### 函数
@@ -22,7 +21,6 @@
-
* 函数原型:
```
@@ -43,7 +41,6 @@ tk_mutex_t* tk_mutex_create ();
-
* 函数原型:
```
@@ -65,7 +62,6 @@ ret_t tk_mutex_destroy (tk_mutex_t* mutex);
-
* 函数原型:
```
@@ -87,7 +83,6 @@ ret_t tk_mutex_lock (tk_mutex_t* mutex);
-
* 函数原型:
```
diff --git a/docs/manual/tk_ostream_buffered_t.md b/docs/manual/tk_ostream_buffered_t.md
index 9a78bd9ca1..3515d88968 100644
--- a/docs/manual/tk_ostream_buffered_t.md
+++ b/docs/manual/tk_ostream_buffered_t.md
@@ -6,7 +6,6 @@
先将数据写入一个缓存区,调用flush时才真正写入底层的ostream。
-
----------------------------------
### 函数
@@ -29,7 +28,6 @@
-
* 函数原型:
```
@@ -54,7 +52,6 @@ tk_ostream_t* tk_ostream_buffered_create (tk_ostream_t* real_ostream);
-
* 函数原型:
```
diff --git a/docs/manual/tk_ostream_file_t.md b/docs/manual/tk_ostream_file_t.md
index 3cb8c2f3d2..bf92a23c37 100644
--- a/docs/manual/tk_ostream_file_t.md
+++ b/docs/manual/tk_ostream_file_t.md
@@ -6,7 +6,6 @@
input stream base on file
-
----------------------------------
### 函数
@@ -26,7 +25,6 @@
-
* 函数原型:
```
diff --git a/docs/manual/tk_ostream_mem_t.md b/docs/manual/tk_ostream_mem_t.md
index 921b433fcb..c41c93ff68 100644
--- a/docs/manual/tk_ostream_mem_t.md
+++ b/docs/manual/tk_ostream_mem_t.md
@@ -6,7 +6,6 @@
output stream base on memory
-
----------------------------------
### 函数
@@ -26,7 +25,6 @@
-
* 函数原型:
```
diff --git a/docs/manual/tk_ostream_noisy_t.md b/docs/manual/tk_ostream_noisy_t.md
index fdafae2ca8..7d70f3af22 100644
--- a/docs/manual/tk_ostream_noisy_t.md
+++ b/docs/manual/tk_ostream_noisy_t.md
@@ -6,7 +6,6 @@
在输出流中注入错误,方便进行可靠性测试。
-
----------------------------------
### 函数
@@ -36,7 +35,6 @@
-
* 函数原型:
```
@@ -54,7 +52,6 @@ tk_ostream_t* tk_ostream_noisy_create (tk_ostream_t* real_ostream);
>
注入的错误数。
-
* 类型:uint32\_t
#### error\_level 属性
@@ -63,7 +60,6 @@ tk_ostream_t* tk_ostream_noisy_create (tk_ostream_t* real_ostream);
-
* 类型:uint32\_t
#### write\_count 属性
@@ -71,6 +67,5 @@ tk_ostream_t* tk_ostream_noisy_create (tk_ostream_t* real_ostream);
>
写入的次数。
-
* 类型:uint32\_t
diff --git a/docs/manual/tk_ostream_serial_t.md b/docs/manual/tk_ostream_serial_t.md
index 00bf103c76..75cbc710d2 100644
--- a/docs/manual/tk_ostream_serial_t.md
+++ b/docs/manual/tk_ostream_serial_t.md
@@ -6,7 +6,6 @@
input stream base on fd
-
----------------------------------
### 函数
@@ -26,7 +25,6 @@
-
* 函数原型:
```
diff --git a/docs/manual/tk_ostream_shdlc_t.md b/docs/manual/tk_ostream_shdlc_t.md
index 2d9df5405a..d84f1ca54f 100644
--- a/docs/manual/tk_ostream_shdlc_t.md
+++ b/docs/manual/tk_ostream_shdlc_t.md
@@ -6,7 +6,6 @@
reliable ostream base on simple HDLC
-
----------------------------------
### 函数
@@ -36,7 +35,6 @@
-
* 函数原型:
```
@@ -54,7 +52,6 @@ tk_ostream_t* tk_ostream_shdlc_create (tk_iostream_shdlc_t* iostream);
>
激活压缩的阈值。
-
* 类型:uint32\_t
#### retry\_times 属性
@@ -62,7 +59,6 @@ tk_ostream_t* tk_ostream_shdlc_create (tk_iostream_shdlc_t* iostream);
>
失败重传次数。
-
* 类型:uint32\_t
#### timeout 属性
@@ -70,6 +66,5 @@ tk_ostream_t* tk_ostream_shdlc_create (tk_iostream_shdlc_t* iostream);
>
读写超时时间(ms)
-
* 类型:uint32\_t
diff --git a/docs/manual/tk_ostream_t.md b/docs/manual/tk_ostream_t.md
index 77c0ac32e1..d674470e5b 100644
--- a/docs/manual/tk_ostream_t.md
+++ b/docs/manual/tk_ostream_t.md
@@ -6,7 +6,6 @@
input stream interface
-
----------------------------------
### 函数
@@ -30,7 +29,6 @@
-
* 函数原型:
```
@@ -55,7 +53,6 @@ ret_t tk_ostream_flush (tk_ostream_t* stream);
-
* 函数原型:
```
@@ -81,7 +78,6 @@ ret_t tk_ostream_seek (tk_ostream_t* stream, uint32_t offset);
-
* 函数原型:
```
@@ -108,7 +104,6 @@ int32_t tk_ostream_write (tk_ostream_t* stream, const uint8_t* buff, uint32_t ma
-
* 函数原型:
```
@@ -134,7 +129,6 @@ ret_t tk_ostream_write_byte (tk_ostream_t* stream, uint8_t byte);
-
* 函数原型:
```
diff --git a/docs/manual/tk_ostream_tcp_t.md b/docs/manual/tk_ostream_tcp_t.md
index 0cd5939f38..d508243d67 100644
--- a/docs/manual/tk_ostream_tcp_t.md
+++ b/docs/manual/tk_ostream_tcp_t.md
@@ -6,7 +6,6 @@
input stream base on socket
-
----------------------------------
### 函数
@@ -26,7 +25,6 @@
-
* 函数原型:
```
diff --git a/docs/manual/tk_ostream_udp_t.md b/docs/manual/tk_ostream_udp_t.md
index 2bdaff09f1..0abd3f86f1 100644
--- a/docs/manual/tk_ostream_udp_t.md
+++ b/docs/manual/tk_ostream_udp_t.md
@@ -6,7 +6,6 @@
input stream base on socket
-
----------------------------------
### 函数
@@ -28,7 +27,6 @@
-
* 函数原型:
```
@@ -53,7 +51,6 @@ tk_ostream_t* tk_ostream_udp_create (int sock);
-
* 函数原型:
```
@@ -79,7 +76,6 @@ ret_t tk_ostream_udp_set_target_with_addr (tk_ostream_t* stream, struct sockaddr
-
* 函数原型:
```
diff --git a/docs/manual/tk_thread_t.md b/docs/manual/tk_thread_t.md
index 61bb058ff3..075ebc2761 100644
--- a/docs/manual/tk_thread_t.md
+++ b/docs/manual/tk_thread_t.md
@@ -2,7 +2,6 @@
### 概述
线程对象。
-
----------------------------------
### 函数
@@ -12,6 +11,9 @@
| tk\_thread\_create | 创建thread对象。 |
| tk\_thread\_destroy | 销毁thread对象。 |
| tk\_thread\_join | 等待线程退出。 |
+| tk\_thread\_set\_name | 设置线程的名称。 |
+| tk\_thread\_set\_priority | 设置线程的栈大小。 |
+| tk\_thread\_set\_stack\_size | 设置线程的栈大小。 |
| tk\_thread\_start | 启动线程。 |
#### tk\_thread\_create 函数
-----------------------
@@ -26,7 +28,7 @@
* 函数原型:
```
-tk_thread_t* tk_thread_create ();
+tk_thread_t* tk_thread_create (tk_thread_entry_t entry, void* args);
```
* 参数说明:
@@ -34,6 +36,8 @@ tk_thread_t* tk_thread_create ();
| 参数 | 类型 | 说明 |
| -------- | ----- | --------- |
| 返回值 | tk\_thread\_t* | thread对象。 |
+| entry | tk\_thread\_entry\_t | 线程函数。 |
+| args | void* | 线程函数的上下文。 |
#### tk\_thread\_destroy 函数
-----------------------
@@ -43,7 +47,6 @@ tk_thread_t* tk_thread_create ();
-
* 函数原型:
```
@@ -65,7 +68,6 @@ ret_t tk_thread_destroy (tk_thread_t* thread);
-
* 函数原型:
```
@@ -78,6 +80,78 @@ ret_t tk_thread_join (tk_thread_t* thread);
| -------- | ----- | --------- |
| 返回值 | ret\_t | 返回RET\_OK表示成功,否则表示失败。 |
| thread | tk\_thread\_t* | thread对象。 |
+#### tk\_thread\_set\_name 函数
+-----------------------
+
+* 函数功能:
+
+>
设置线程的名称。
+
+ > 需要在调用start之前调用本函数。
+
+
+
+* 函数原型:
+
+```
+ret_t tk_thread_set_name (tk_thread_t* thread, const char* name);
+```
+
+* 参数说明:
+
+| 参数 | 类型 | 说明 |
+| -------- | ----- | --------- |
+| 返回值 | ret\_t | 返回RET\_OK表示成功,否则表示失败。 |
+| thread | tk\_thread\_t* | thread对象。 |
+| name | const char* | 名称。 |
+#### tk\_thread\_set\_priority 函数
+-----------------------
+
+* 函数功能:
+
+>
设置线程的栈大小。
+
+ > 需要在调用start之前调用本函数。
+
+
+
+* 函数原型:
+
+```
+ret_t tk_thread_set_priority (tk_thread_t* thread, uint32_t priority);
+```
+
+* 参数说明:
+
+| 参数 | 类型 | 说明 |
+| -------- | ----- | --------- |
+| 返回值 | ret\_t | 返回RET\_OK表示成功,否则表示失败。 |
+| thread | tk\_thread\_t* | thread对象。 |
+| priority | uint32\_t | 栈的大小。 |
+#### tk\_thread\_set\_stack\_size 函数
+-----------------------
+
+* 函数功能:
+
+>
设置线程的栈大小。
+
+ > 需要在调用start之前调用本函数。
+
+
+
+* 函数原型:
+
+```
+ret_t tk_thread_set_stack_size (tk_thread_t* thread, uint32_t stack_size);
+```
+
+* 参数说明:
+
+| 参数 | 类型 | 说明 |
+| -------- | ----- | --------- |
+| 返回值 | ret\_t | 返回RET\_OK表示成功,否则表示失败。 |
+| thread | tk\_thread\_t* | thread对象。 |
+| stack\_size | uint32\_t | 栈的大小。 |
#### tk\_thread\_start 函数
-----------------------
@@ -87,7 +161,6 @@ ret_t tk_thread_join (tk_thread_t* thread);
-
* 函数原型:
```
diff --git a/docs/manual/tokenizer_t.md b/docs/manual/tokenizer_t.md
index 06796686c3..f45f656b19 100644
--- a/docs/manual/tokenizer_t.md
+++ b/docs/manual/tokenizer_t.md
@@ -2,7 +2,6 @@
### 概述
从字符串中解析出一个一个的token。
-
----------------------------------
### 函数
@@ -36,7 +35,6 @@
-
* 函数原型:
```
@@ -58,7 +56,6 @@ ret_t tokenizer_deinit (tokenizer_t* tokenizer);
-
* 函数原型:
```
@@ -80,7 +77,6 @@ bool_t tokenizer_has_more (tokenizer_t* tokenizer);
-
* 函数原型:
```
@@ -105,7 +101,6 @@ tokenizer_t* tokenizer_init (tokenizer_t* tokenizer, char* str, uint32_t size, c
-
* 函数原型:
```
@@ -131,7 +126,6 @@ tokenizer_t* tokenizer_init_ex (tokenizer_t* tokenizer, char* str, uint32_t size
-
* 函数原型:
```
@@ -153,7 +147,6 @@ char* tokenizer_next (tokenizer_t* tokenizer);
-
* 函数原型:
```
@@ -176,7 +169,6 @@ char* tokenizer_next_float (tokenizer_t* tokenizer, float defval);
-
* 函数原型:
```
@@ -199,7 +191,6 @@ char* tokenizer_next_int (tokenizer_t* tokenizer, int defval);
-
* 函数原型:
```
@@ -218,7 +209,6 @@ char* tokenizer_next_until (tokenizer_t* tokenizer, const char* str);
>
当前位置。
-
* 类型:uint32\_t
| 特性 | 是否支持 |
@@ -230,7 +220,6 @@ char* tokenizer_next_until (tokenizer_t* tokenizer, const char* str);
>
分隔字符串。
-
* 类型:char*
| 特性 | 是否支持 |
@@ -242,7 +231,6 @@ char* tokenizer_next_until (tokenizer_t* tokenizer, const char* str);
>
单字符的token。
-
* 类型:char*
| 特性 | 是否支持 |
@@ -254,7 +242,6 @@ char* tokenizer_next_until (tokenizer_t* tokenizer, const char* str);
>
字符串的长度。
-
* 类型:uint32\_t
| 特性 | 是否支持 |
@@ -266,7 +253,6 @@ char* tokenizer_next_until (tokenizer_t* tokenizer, const char* str);
>
字符串。
-
* 类型:char*
| 特性 | 是否支持 |
diff --git a/docs/manual/ui_binary_writer_t.md b/docs/manual/ui_binary_writer_t.md
index a37f50b495..71c1c2c6ec 100644
--- a/docs/manual/ui_binary_writer_t.md
+++ b/docs/manual/ui_binary_writer_t.md
@@ -6,7 +6,6 @@
生成二进制格式的UI描述数据。
-
----------------------------------
### 函数
@@ -25,7 +24,6 @@
-
* 函数原型:
```
diff --git a/docs/manual/ui_builder_default_t.md b/docs/manual/ui_builder_default_t.md
index 3377799f6c..f90c6561da 100644
--- a/docs/manual/ui_builder_default_t.md
+++ b/docs/manual/ui_builder_default_t.md
@@ -7,7 +7,6 @@
构建widget树。
-
----------------------------------
### 函数
@@ -26,7 +25,6 @@
-
* 函数原型:
```
diff --git a/docs/manual/ui_builder_t.md b/docs/manual/ui_builder_t.md
index 97f4d0c55e..bcd4cb937f 100644
--- a/docs/manual/ui_builder_t.md
+++ b/docs/manual/ui_builder_t.md
@@ -14,7 +14,6 @@
![image](images/ui_builder_t_0.png)
-
----------------------------------
### 函数
@@ -38,7 +37,6 @@
-
* 函数原型:
```
@@ -62,7 +60,6 @@ ret_t ui_builder_on_end (ui_builder_t* builder);
-
* 函数原型:
```
@@ -86,7 +83,6 @@ ret_t ui_builder_on_start (ui_builder_t* builder);
-
* 函数原型:
```
@@ -110,7 +106,6 @@ ret_t ui_builder_on_widget_end (ui_builder_t* builder);
-
* 函数原型:
```
@@ -136,7 +131,6 @@ ret_t ui_builder_on_widget_prop (ui_builder_t* builder, const char* name, const
-
* 函数原型:
```
@@ -160,7 +154,6 @@ ret_t ui_builder_on_widget_prop (ui_builder_t* builder);
-
* 函数原型:
```
diff --git a/docs/manual/ui_feedback_t.md b/docs/manual/ui_feedback_t.md
index 4567f19508..9b758056c9 100644
--- a/docs/manual/ui_feedback_t.md
+++ b/docs/manual/ui_feedback_t.md
@@ -3,7 +3,6 @@
提供按键音、触屏音和震动等反馈。
-
----------------------------------
### 函数
@@ -23,7 +22,6 @@
-
* 函数原型:
```
@@ -47,7 +45,6 @@ ret_t ui_feedback_init (ui_on_feedback_t on_feedback, void* ctx);
-
* 函数原型:
```
diff --git a/docs/manual/ui_loader_default_t.md b/docs/manual/ui_loader_default_t.md
index 32255b8875..378cbf4655 100644
--- a/docs/manual/ui_loader_default_t.md
+++ b/docs/manual/ui_loader_default_t.md
@@ -7,7 +7,6 @@
-
----------------------------------
### 函数
@@ -26,7 +25,6 @@
-
* 函数原型:
```
diff --git a/docs/manual/ui_loader_t.md b/docs/manual/ui_loader_t.md
index d2ce7895e0..588cc06209 100644
--- a/docs/manual/ui_loader_t.md
+++ b/docs/manual/ui_loader_t.md
@@ -15,7 +15,6 @@
-
----------------------------------
### 函数
@@ -35,7 +34,6 @@
-
* 函数原型:
```
@@ -65,7 +63,6 @@ ret_t ui_loader_load (ui_loader_t* loader, const uint8_t* data, uint32_t size, u
-
* 函数原型:
```
diff --git a/docs/manual/ui_loader_xml_t.md b/docs/manual/ui_loader_xml_t.md
index 068e605afe..acdb48cff2 100644
--- a/docs/manual/ui_loader_xml_t.md
+++ b/docs/manual/ui_loader_xml_t.md
@@ -7,7 +7,6 @@
-
----------------------------------
### 函数
@@ -26,7 +25,6 @@
-
* 函数原型:
```
diff --git a/docs/manual/ui_xml_writer_t.md b/docs/manual/ui_xml_writer_t.md
index b9b2ba6d25..9ac2ed4cc4 100644
--- a/docs/manual/ui_xml_writer_t.md
+++ b/docs/manual/ui_xml_writer_t.md
@@ -6,7 +6,6 @@
生成XML格式的UI描述数据。
-
----------------------------------
### 函数
@@ -25,7 +24,6 @@
-
* 函数原型:
```
diff --git a/docs/manual/value_desc_binary_t.md b/docs/manual/value_desc_binary_t.md
index cf9c3facd2..cca28c06c0 100644
--- a/docs/manual/value_desc_binary_t.md
+++ b/docs/manual/value_desc_binary_t.md
@@ -4,7 +4,6 @@
二进制类型属性描述。
-
----------------------------------
### 属性
@@ -18,7 +17,6 @@
>
最大长度。
-
* 类型:uint32\_t
| 特性 | 是否支持 |
@@ -30,7 +28,6 @@
>
最小长度。
-
* 类型:uint32\_t
| 特性 | 是否支持 |
diff --git a/docs/manual/value_desc_bool_t.md b/docs/manual/value_desc_bool_t.md
index f03e2003ba..8ee626415b 100644
--- a/docs/manual/value_desc_bool_t.md
+++ b/docs/manual/value_desc_bool_t.md
@@ -4,7 +4,6 @@
布尔类型属性描述。
-
----------------------------------
### 属性
@@ -17,7 +16,6 @@
>
缺省值。
-
* 类型:bool\_t
| 特性 | 是否支持 |
diff --git a/docs/manual/value_desc_double_t.md b/docs/manual/value_desc_double_t.md
index 66f5638988..a9a74ef617 100644
--- a/docs/manual/value_desc_double_t.md
+++ b/docs/manual/value_desc_double_t.md
@@ -4,7 +4,6 @@
单精度浮点数类型属性描述。
-
----------------------------------
### 属性
@@ -21,7 +20,6 @@
>
缺省值。
-
* 类型:double
| 特性 | 是否支持 |
@@ -33,7 +31,6 @@
>
最大值。
-
* 类型:double
| 特性 | 是否支持 |
@@ -45,7 +42,6 @@
>
最小值。
-
* 类型:double
| 特性 | 是否支持 |
@@ -57,7 +53,6 @@
>
步长。
-
* 类型:double\_t
| 特性 | 是否支持 |
@@ -69,7 +64,6 @@
>
单位。
-
* 类型:const char*
| 特性 | 是否支持 |
diff --git a/docs/manual/value_desc_float_t.md b/docs/manual/value_desc_float_t.md
index 947027a3a8..3bfd501e63 100644
--- a/docs/manual/value_desc_float_t.md
+++ b/docs/manual/value_desc_float_t.md
@@ -4,7 +4,6 @@
单精度浮点数类型属性描述。
-
----------------------------------
### 属性
@@ -21,7 +20,6 @@
>
缺省值。
-
* 类型:float
| 特性 | 是否支持 |
@@ -33,7 +31,6 @@
>
最大值。
-
* 类型:float
| 特性 | 是否支持 |
@@ -45,7 +42,6 @@
>
最小值。
-
* 类型:float
| 特性 | 是否支持 |
@@ -57,7 +53,6 @@
>
步长。
-
* 类型:float\_t
| 特性 | 是否支持 |
@@ -69,7 +64,6 @@
>
单位。
-
* 类型:const char*
| 特性 | 是否支持 |
diff --git a/docs/manual/value_desc_int16_t.md b/docs/manual/value_desc_int16_t.md
index 8d75602b64..096749c05d 100644
--- a/docs/manual/value_desc_int16_t.md
+++ b/docs/manual/value_desc_int16_t.md
@@ -4,7 +4,6 @@
有符号16位整数类型属性描述。
-
----------------------------------
### 属性
@@ -21,7 +20,6 @@
>
缺省值。
-
* 类型:int16\_t
| 特性 | 是否支持 |
@@ -33,7 +31,6 @@
>
最大值。
-
* 类型:int16\_t
| 特性 | 是否支持 |
@@ -45,7 +42,6 @@
>
最小值。
-
* 类型:int16\_t
| 特性 | 是否支持 |
@@ -57,7 +53,6 @@
>
步长。
-
* 类型:int16\_t
| 特性 | 是否支持 |
@@ -69,7 +64,6 @@
>
单位。
-
* 类型:const char*
| 特性 | 是否支持 |
diff --git a/docs/manual/value_desc_int32_t.md b/docs/manual/value_desc_int32_t.md
index 6d86b189fa..7ee7366bb5 100644
--- a/docs/manual/value_desc_int32_t.md
+++ b/docs/manual/value_desc_int32_t.md
@@ -4,7 +4,6 @@
有符号32位整数类型属性描述。
-
----------------------------------
### 属性
@@ -21,7 +20,6 @@
>
缺省值。
-
* 类型:int32\_t
| 特性 | 是否支持 |
@@ -33,7 +31,6 @@
>
最大值。
-
* 类型:int32\_t
| 特性 | 是否支持 |
@@ -45,7 +42,6 @@
>
最小值。
-
* 类型:int32\_t
| 特性 | 是否支持 |
@@ -57,7 +53,6 @@
>
步长。
-
* 类型:int32\_t
| 特性 | 是否支持 |
@@ -69,7 +64,6 @@
>
单位。
-
* 类型:const char*
| 特性 | 是否支持 |
diff --git a/docs/manual/value_desc_int64_t.md b/docs/manual/value_desc_int64_t.md
index cfaae3b753..d5606beb73 100644
--- a/docs/manual/value_desc_int64_t.md
+++ b/docs/manual/value_desc_int64_t.md
@@ -4,7 +4,6 @@
有符号64位整数类型属性描述。
-
----------------------------------
### 属性
@@ -21,7 +20,6 @@
>
缺省值。
-
* 类型:int64\_t
| 特性 | 是否支持 |
@@ -33,7 +31,6 @@
>
最大值。
-
* 类型:int64\_t
| 特性 | 是否支持 |
@@ -45,7 +42,6 @@
>
最小值。
-
* 类型:int64\_t
| 特性 | 是否支持 |
@@ -57,7 +53,6 @@
>
步长。
-
* 类型:int64\_t
| 特性 | 是否支持 |
@@ -69,7 +64,6 @@
>
单位。
-
* 类型:const char*
| 特性 | 是否支持 |
diff --git a/docs/manual/value_desc_int8_t.md b/docs/manual/value_desc_int8_t.md
index 9f585b4c61..36a5dca674 100644
--- a/docs/manual/value_desc_int8_t.md
+++ b/docs/manual/value_desc_int8_t.md
@@ -4,7 +4,6 @@
有符号8位整数类型属性描述。
-
----------------------------------
### 属性
@@ -21,7 +20,6 @@
>
缺省值。
-
* 类型:int8\_t
| 特性 | 是否支持 |
@@ -33,7 +31,6 @@
>
最大值。
-
* 类型:int8\_t
| 特性 | 是否支持 |
@@ -45,7 +42,6 @@
>
最小值。
-
* 类型:int8\_t
| 特性 | 是否支持 |
@@ -57,7 +53,6 @@
>
步长。
-
* 类型:int8\_t
| 特性 | 是否支持 |
@@ -69,7 +64,6 @@
>
单位。
-
* 类型:const char*
| 特性 | 是否支持 |
diff --git a/docs/manual/value_desc_int_enums_t.md b/docs/manual/value_desc_int_enums_t.md
index 64311deefe..40a6c96f95 100644
--- a/docs/manual/value_desc_int_enums_t.md
+++ b/docs/manual/value_desc_int_enums_t.md
@@ -4,7 +4,6 @@
整数枚举类型属性描述。
-
----------------------------------
### 属性
@@ -18,7 +17,6 @@
>
缺省值。
-
* 类型:int32\_t
| 特性 | 是否支持 |
@@ -30,7 +28,6 @@
>
枚举值(每一项用英文冒号分隔值和名称)。
-
* 类型:const char**
| 特性 | 是否支持 |
diff --git a/docs/manual/value_desc_string_enums_t.md b/docs/manual/value_desc_string_enums_t.md
index c9fa7d4341..3fd1238e1a 100644
--- a/docs/manual/value_desc_string_enums_t.md
+++ b/docs/manual/value_desc_string_enums_t.md
@@ -3,7 +3,6 @@
字符串枚举类型属性描述。
-
----------------------------------
### 属性
@@ -17,7 +16,6 @@
>
缺省值。
-
* 类型:const char*
| 特性 | 是否支持 |
@@ -29,7 +27,6 @@
>
枚举值。
-
* 类型:const char**
| 特性 | 是否支持 |
diff --git a/docs/manual/value_desc_string_t.md b/docs/manual/value_desc_string_t.md
index 4096b35923..2938d7388d 100644
--- a/docs/manual/value_desc_string_t.md
+++ b/docs/manual/value_desc_string_t.md
@@ -4,7 +4,6 @@
字符串类型属性描述。
-
----------------------------------
### 属性
@@ -19,7 +18,6 @@
>
缺省值。
-
* 类型:const char*
| 特性 | 是否支持 |
@@ -31,7 +29,6 @@
>
最大长度。
-
* 类型:uint32\_t
| 特性 | 是否支持 |
@@ -43,7 +40,6 @@
>
最小长度。
-
* 类型:uint32\_t
| 特性 | 是否支持 |
diff --git a/docs/manual/value_desc_t.md b/docs/manual/value_desc_t.md
index b0c10253c9..0dca486469 100644
--- a/docs/manual/value_desc_t.md
+++ b/docs/manual/value_desc_t.md
@@ -2,7 +2,6 @@
### 概述
属性描述。
-
----------------------------------
### 属性
@@ -20,7 +19,6 @@
>
描述。
-
* 类型:const char*
| 特性 | 是否支持 |
@@ -32,7 +30,6 @@
>
显示名称。
-
* 类型:const char*
| 特性 | 是否支持 |
@@ -44,7 +41,6 @@
>
flags。
-
* 类型:uint8\_t
| 特性 | 是否支持 |
@@ -56,7 +52,6 @@
>
格式。
-
* 类型:uint8\_t
| 特性 | 是否支持 |
@@ -68,7 +63,6 @@
>
名称。
-
* 类型:const char*
| 特性 | 是否支持 |
@@ -80,7 +74,6 @@
>
类型。
-
* 类型:uint8\_t
| 特性 | 是否支持 |
diff --git a/docs/manual/value_desc_type_t.md b/docs/manual/value_desc_type_t.md
index d93350983d..384032ecbe 100644
--- a/docs/manual/value_desc_type_t.md
+++ b/docs/manual/value_desc_type_t.md
@@ -1,7 +1,6 @@
## value\_desc\_type\_t
### 概述
属性描述类型常量定义。
-
### 常量
diff --git a/docs/manual/value_desc_uint16_t.md b/docs/manual/value_desc_uint16_t.md
index a7bae02f8e..37d9c4629c 100644
--- a/docs/manual/value_desc_uint16_t.md
+++ b/docs/manual/value_desc_uint16_t.md
@@ -4,7 +4,6 @@
无符号16位整数类型属性描述。
-
----------------------------------
### 属性
@@ -21,7 +20,6 @@
>
缺省值。
-
* 类型:uint16\_t
| 特性 | 是否支持 |
@@ -33,7 +31,6 @@
>
最大值。
-
* 类型:uint16\_t
| 特性 | 是否支持 |
@@ -45,7 +42,6 @@
>
最小值。
-
* 类型:uint16\_t
| 特性 | 是否支持 |
@@ -57,7 +53,6 @@
>
步长。
-
* 类型:uint16\_t
| 特性 | 是否支持 |
@@ -69,7 +64,6 @@
>
单位。
-
* 类型:const char*
| 特性 | 是否支持 |
diff --git a/docs/manual/value_desc_uint32_t.md b/docs/manual/value_desc_uint32_t.md
index 585af84fbd..faf6df93f8 100644
--- a/docs/manual/value_desc_uint32_t.md
+++ b/docs/manual/value_desc_uint32_t.md
@@ -4,7 +4,6 @@
无符号32位整数类型属性描述。
-
----------------------------------
### 属性
@@ -21,7 +20,6 @@
>
缺省值。
-
* 类型:uint32\_t
| 特性 | 是否支持 |
@@ -33,7 +31,6 @@
>
最大值。
-
* 类型:uint32\_t
| 特性 | 是否支持 |
@@ -45,7 +42,6 @@
>
最小值。
-
* 类型:uint32\_t
| 特性 | 是否支持 |
@@ -57,7 +53,6 @@
>
步长。
-
* 类型:uint32\_t
| 特性 | 是否支持 |
@@ -69,7 +64,6 @@
>
单位。
-
* 类型:const char*
| 特性 | 是否支持 |
diff --git a/docs/manual/value_desc_uint64_t.md b/docs/manual/value_desc_uint64_t.md
index cfd318cbfb..36b86a9091 100644
--- a/docs/manual/value_desc_uint64_t.md
+++ b/docs/manual/value_desc_uint64_t.md
@@ -4,7 +4,6 @@
无符号64位整数类型属性描述。
-
----------------------------------
### 属性
@@ -21,7 +20,6 @@
>
缺省值。
-
* 类型:uint64\_t
| 特性 | 是否支持 |
@@ -33,7 +31,6 @@
>
最大值。
-
* 类型:uint64\_t
| 特性 | 是否支持 |
@@ -45,7 +42,6 @@
>
最小值。
-
* 类型:uint64\_t
| 特性 | 是否支持 |
@@ -57,7 +53,6 @@
>
步长。
-
* 类型:uint64\_t
| 特性 | 是否支持 |
@@ -69,7 +64,6 @@
>
单位。
-
* 类型:const char*
| 特性 | 是否支持 |
diff --git a/docs/manual/value_desc_uint8_t.md b/docs/manual/value_desc_uint8_t.md
index 7aba72e753..cf3881a4ad 100644
--- a/docs/manual/value_desc_uint8_t.md
+++ b/docs/manual/value_desc_uint8_t.md
@@ -4,7 +4,6 @@
无符号8位整数类型属性描述。
-
----------------------------------
### 属性
@@ -21,7 +20,6 @@
>
缺省值。
-
* 类型:uint8\_t
| 特性 | 是否支持 |
@@ -33,7 +31,6 @@
>
最大值。
-
* 类型:uint8\_t
| 特性 | 是否支持 |
@@ -45,7 +42,6 @@
>
最小值。
-
* 类型:uint8\_t
| 特性 | 是否支持 |
@@ -57,7 +53,6 @@
>
步长。
-
* 类型:uint8\_t
| 特性 | 是否支持 |
@@ -69,7 +64,6 @@
>
单位。
-
* 类型:const char*
| 特性 | 是否支持 |
diff --git a/docs/manual/value_format_type_t.md b/docs/manual/value_format_type_t.md
index c0e6fe7839..b348fbba64 100644
--- a/docs/manual/value_format_type_t.md
+++ b/docs/manual/value_format_type_t.md
@@ -1,7 +1,6 @@
## value\_format\_type\_t
### 概述
属性描述格式常量定义。
-
### 常量
diff --git a/docs/manual/value_t.md b/docs/manual/value_t.md
index 35a5cc3a30..781c790ab4 100644
--- a/docs/manual/value_t.md
+++ b/docs/manual/value_t.md
@@ -12,7 +12,6 @@
> 在脚本语言中,需要动态创建对象。
-
----------------------------------
### 函数
@@ -79,7 +78,6 @@
-
* 函数原型:
```
@@ -101,7 +99,6 @@ binary_data_t* value_binary_data (value_t* v);
-
* 函数原型:
```
@@ -125,7 +122,6 @@ bool_t value_bool (value_t* v);
-
* 函数原型:
```
@@ -147,7 +143,6 @@ value_t* value_cast (value_t* value);
-
* 函数原型:
```
@@ -170,7 +165,6 @@ ret_t value_copy (value_t* dst, value_t* src);
-
* 函数原型:
```
@@ -191,7 +185,6 @@ value_t* value_create ();
-
* 函数原型:
```
@@ -214,7 +207,6 @@ ret_t value_deep_copy (value_t* dst, value_t* src);
-
* 函数原型:
```
@@ -236,7 +228,6 @@ ret_t value_destroy (value_t* v);
-
* 函数原型:
```
@@ -260,7 +251,6 @@ double value_double (value_t* v);
-
* 函数原型:
```
@@ -283,7 +273,6 @@ value_t* value_dup_str (value_t* v, const char* value);
-
* 函数原型:
```
@@ -306,7 +295,6 @@ bool_t value_equal (value_t* value, value_t* other);
-
* 函数原型:
```
@@ -328,7 +316,6 @@ float_t value_float (value_t* v);
-
* 函数原型:
```
@@ -350,7 +337,6 @@ float value_float32 (value_t* v);
-
* 函数原型:
```
@@ -372,7 +358,6 @@ int value_int (value_t* v);
-
* 函数原型:
```
@@ -394,7 +379,6 @@ int16_t value_int16 (value_t* v);
-
* 函数原型:
```
@@ -416,7 +400,6 @@ int32_t value_int32 (value_t* v);
-
* 函数原型:
```
@@ -438,7 +421,6 @@ int64_t value_int64 (value_t* v);
-
* 函数原型:
```
@@ -460,7 +442,6 @@ int8_t value_int8 (value_t* v);
-
* 函数原型:
```
@@ -482,7 +463,6 @@ bool_t value_is_null (value_t* value);
-
* 函数原型:
```
@@ -504,7 +484,6 @@ object_t* value_object (value_t* v);
-
* 函数原型:
```
@@ -526,7 +505,6 @@ void* value_pointer (value_t* v);
-
* 函数原型:
```
@@ -548,7 +526,6 @@ ret_t value_reset (value_t* v);
-
* 函数原型:
```
@@ -572,7 +549,6 @@ value_t* value_set_binary_data (value_t* v, void* value, uint32_t size);
-
* 函数原型:
```
@@ -595,7 +571,6 @@ value_t* value_set_bool (value_t* v, bool_t value);
-
* 函数原型:
```
@@ -618,7 +593,6 @@ value_t* value_set_double (value_t* v, double value);
-
* 函数原型:
```
@@ -641,7 +615,6 @@ value_t* value_set_float (value_t* v, float_t value);
-
* 函数原型:
```
@@ -664,7 +637,6 @@ value_t* value_set_float32 (value_t* v, float value);
-
* 函数原型:
```
@@ -687,7 +659,6 @@ value_t* value_set_int (value_t* v, int32_t value);
-
* 函数原型:
```
@@ -710,7 +681,6 @@ value_t* value_set_int16 (value_t* v, int16_t value);
-
* 函数原型:
```
@@ -733,7 +703,6 @@ value_t* value_set_int32 (value_t* v, int32_t value);
-
* 函数原型:
```
@@ -756,7 +725,6 @@ value_t* value_set_int64 (value_t* v, int64_t value);
-
* 函数原型:
```
@@ -779,7 +747,6 @@ value_t* value_set_int8 (value_t* v, int8_t value);
-
* 函数原型:
```
@@ -802,7 +769,6 @@ value_t* value_set_object (value_t* v, object_t* value);
-
* 函数原型:
```
@@ -825,7 +791,6 @@ value_t* value_set_pointer (value_t* v, pointer_t value);
-
* 函数原型:
```
@@ -849,7 +814,6 @@ value_t* value_set_sized_str (value_t* v, char* str, uint32_t size);
-
* 函数原型:
```
@@ -872,7 +836,6 @@ value_t* value_set_str (value_t* v, const char* value);
-
* 函数原型:
```
@@ -895,7 +858,6 @@ value_t* value_set_token (value_t* v, uint32_t value);
-
* 函数原型:
```
@@ -919,7 +881,6 @@ value_t* value_set_ubjson (value_t* v, void* value, uint32_t size);
-
* 函数原型:
```
@@ -942,7 +903,6 @@ value_t* value_set_uint16 (value_t* v, uint16_t value);
-
* 函数原型:
```
@@ -965,7 +925,6 @@ value_t* value_set_uint32 (value_t* v, uint32_t value);
-
* 函数原型:
```
@@ -988,7 +947,6 @@ value_t* value_set_uint64 (value_t* v, uint64_t value);
-
* 函数原型:
```
@@ -1011,7 +969,6 @@ value_t* value_set_uint8 (value_t* v, uint8_t value);
-
* 函数原型:
```
@@ -1034,7 +991,6 @@ value_t* value_set_wstr (value_t* v, const wchar_t* value);
-
* 函数原型:
```
@@ -1056,7 +1012,6 @@ sized_str_t* value_sized_str (value_t* v);
-
* 函数原型:
```
@@ -1078,7 +1033,6 @@ const char* value_str (value_t* v);
-
* 函数原型:
```
@@ -1100,7 +1054,6 @@ uint32_t value_token (value_t* v);
-
* 函数原型:
```
@@ -1122,7 +1075,6 @@ binary_data_t* value_ubjson (value_t* v);
-
* 函数原型:
```
@@ -1144,7 +1096,6 @@ uint16_t value_uint16 (value_t* v);
-
* 函数原型:
```
@@ -1166,7 +1117,6 @@ uint32_t value_uint32 (value_t* v);
-
* 函数原型:
```
@@ -1188,7 +1138,6 @@ uint64_t value_uint64 (value_t* v);
-
* 函数原型:
```
@@ -1210,7 +1159,6 @@ int8_t value_uint8 (value_t* v);
-
* 函数原型:
```
diff --git a/docs/manual/value_type_t.md b/docs/manual/value_type_t.md
index 1963f64f64..8a03ab7c1f 100644
--- a/docs/manual/value_type_t.md
+++ b/docs/manual/value_type_t.md
@@ -1,7 +1,6 @@
## value\_type\_t
### 概述
类型常量定义。
-
### 常量
diff --git a/docs/manual/vgcanvas_t.md b/docs/manual/vgcanvas_t.md
index 60bfcc7806..9ce7e7db8a 100644
--- a/docs/manual/vgcanvas_t.md
+++ b/docs/manual/vgcanvas_t.md
@@ -34,7 +34,6 @@
>请参考:https://www.w3schools.com/tags/ref_canvas.asp
-
----------------------------------
### 函数
@@ -127,7 +126,6 @@
-
* 函数原型:
```
@@ -156,7 +154,6 @@ ret_t vgcanvas_arc (vgcanvas_t* vg, float_t x, float_t y, float_t r, float_t sta
-
* 函数原型:
```
@@ -184,7 +181,6 @@ ret_t vgcanvas_arc_to (vgcanvas_t* vg, float_t x1, float_t y1, float_t x2, float
-
* 函数原型:
```
@@ -208,7 +204,6 @@ ret_t vgcanvas_begin_frame (vgcanvas_t* vg, rect_t* dirty_rect);
-
* 函数原型:
```
@@ -231,7 +226,6 @@ ret_t vgcanvas_begin_path (vgcanvas_t* vg);
-
* 函数原型:
```
@@ -259,7 +253,6 @@ ret_t vgcanvas_bezier_to (vgcanvas_t* vg, float_t cp1x, float_t cp1y, float_t cp
-
* 函数原型:
```
@@ -282,7 +275,6 @@ vgcanvas_t* vgcanvas_cast (vgcanvas_t* vg);
-
* 函数原型:
```
@@ -310,7 +302,6 @@ ret_t vgcanvas_clear_rect (vgcanvas_t* vg, float_t x, float_t y, float_t w, floa
-
* 函数原型:
```
@@ -339,7 +330,6 @@ ret_t vgcanvas_clip_rect (vgcanvas_t* vg, float_t x, float_t y, float_t w, float
-
* 函数原型:
```
@@ -361,7 +351,6 @@ ret_t vgcanvas_close_path (vgcanvas_t* vg);
-
* 函数原型:
```
@@ -387,7 +376,6 @@ vgcanvas_t vgcanvas_create (uint32_t w, uint32_t h, uint32_t stride, bitmap_form
-
* 函数原型:
```
@@ -412,7 +400,6 @@ ret_t vgcanvas_destroy (vgcanvas_t* vg);
-
* 函数原型:
```
@@ -444,7 +431,6 @@ ret_t vgcanvas_draw_icon (vgcanvas_t* vg, bitmap_t* img, float_t sx, float_t sy,
-
* 函数原型:
```
@@ -476,7 +462,6 @@ ret_t vgcanvas_draw_image (vgcanvas_t* vg, bitmap_t* img, float_t sx, float_t sy
-
* 函数原型:
```
@@ -502,7 +487,6 @@ ret_t vgcanvas_ellipse (vgcanvas_t* vg, float_t x, float_t y, float_t rx, float_
-
* 函数原型:
```
@@ -525,7 +509,6 @@ ret_t vgcanvas_end_frame (vgcanvas_t* vg);
-
* 函数原型:
```
@@ -548,7 +531,6 @@ ret_t vgcanvas_fill (vgcanvas_t* vg);
-
* 函数原型:
```
@@ -575,7 +557,6 @@ ret_t vgcanvas_fill_text (vgcanvas_t* vg, char* text, float_t x, float_t y, floa
-
* 函数原型:
```
@@ -597,7 +578,6 @@ ret_t vgcanvas_flush (vgcanvas_t* vg);
-
* 函数原型:
```
@@ -619,7 +599,6 @@ wh_t vgcanvas_get_height (vgcanvas_t* vgcanvas);
-
* 函数原型:
```
@@ -642,7 +621,6 @@ wh_t vgcanvas_get_width (vgcanvas_t* vgcanvas);
-
* 函数原型:
```
@@ -667,7 +645,6 @@ bool_t vgcanvas_is_point_in_path (vgcanvas_t* vg, float_t x, float_t y);
-
* 函数原型:
```
@@ -692,7 +669,6 @@ ret_t vgcanvas_line_to (vgcanvas_t* vg, float_t x, float_t y);
-
* 函数原型:
```
@@ -716,7 +692,6 @@ float_t vgcanvas_measure_text (vgcanvas_t* vg, char* text);
-
* 函数原型:
```
@@ -742,7 +717,6 @@ ret_t vgcanvas_move_to (vgcanvas_t* vg, float_t x, float_t y);
-
* 函数原型:
```
@@ -767,7 +741,6 @@ ret_t vgcanvas_paint (vgcanvas_t* vg, bool_t stroke, bitmap_t* img);
-
* 函数原型:
```
@@ -794,7 +767,6 @@ ret_t vgcanvas_quad_to (vgcanvas_t* vg, float_t cpx, float_t cpy, float_t x, flo
-
* 函数原型:
```
@@ -821,7 +793,6 @@ ret_t vgcanvas_rect (vgcanvas_t* vg, float_t x, float_t y, float_t w, float_t h)
-
* 函数原型:
```
@@ -849,7 +820,6 @@ ret_t vgcanvas_reinit (vgcanvas_t* vg, uint32_t w, uint32_t h, uint32_t stride,
-
* 函数原型:
```
@@ -874,7 +844,6 @@ ret_t vgcanvas_reset (vgcanvas_t* vg);
-
* 函数原型:
```
@@ -897,7 +866,6 @@ ret_t vgcanvas_restore (vgcanvas_t* vg);
-
* 函数原型:
```
@@ -921,7 +889,6 @@ ret_t vgcanvas_rotate (vgcanvas_t* vg, float_t rad);
-
* 函数原型:
```
@@ -951,7 +918,6 @@ ret_t vgcanvas_rounded_rect (vgcanvas_t* vg, float_t x, float_t y, float_t w, fl
-
* 函数原型:
```
@@ -974,7 +940,6 @@ ret_t vgcanvas_save (vgcanvas_t* vg);
-
* 函数原型:
```
@@ -999,7 +964,6 @@ ret_t vgcanvas_scale (vgcanvas_t* vg, float_t x, float_t y);
-
* 函数原型:
```
@@ -1023,7 +987,6 @@ ret_t vgcanvas_set_antialias (vgcanvas_t* vg, bool_t value);
-
* 函数原型:
```
@@ -1047,7 +1010,6 @@ ret_t vgcanvas_set_fill_color (vgcanvas_t* vg, color_t color);
-
* 函数原型:
```
@@ -1071,7 +1033,6 @@ ret_t vgcanvas_set_fill_color_str (vgcanvas_t* vg, const char* color);
-
* 函数原型:
```
@@ -1100,7 +1061,6 @@ ret_t vgcanvas_set_fill_linear_gradient (vgcanvas_t* vg, float_t sx, float_t sy,
-
* 函数原型:
```
@@ -1129,7 +1089,6 @@ ret_t vgcanvas_set_fill_radial_gradient (vgcanvas_t* vg, float_t cx, float_t cy,
-
* 函数原型:
```
@@ -1153,7 +1112,6 @@ ret_t vgcanvas_set_font (vgcanvas_t* vg, char* font);
-
* 函数原型:
```
@@ -1177,7 +1135,6 @@ ret_t vgcanvas_set_font_size (vgcanvas_t* vg, float_t font);
-
* 函数原型:
```
@@ -1201,7 +1158,6 @@ ret_t vgcanvas_set_global_alpha (vgcanvas_t* vg, float_t alpha);
-
* 函数原型:
```
@@ -1225,7 +1181,6 @@ ret_t vgcanvas_set_line_cap (vgcanvas_t* vg, char* value);
-
* 函数原型:
```
@@ -1249,7 +1204,6 @@ ret_t vgcanvas_set_line_join (vgcanvas_t* vg, char* value);
-
* 函数原型:
```
@@ -1273,7 +1227,6 @@ ret_t vgcanvas_set_line_width (vgcanvas_t* vg, float_t value);
-
* 函数原型:
```
@@ -1297,7 +1250,6 @@ ret_t vgcanvas_set_miter_limit (vgcanvas_t* vg, float_t value);
-
* 函数原型:
```
@@ -1321,7 +1273,6 @@ ret_t vgcanvas_set_stroke_color (vgcanvas_t* vg, color_t color);
-
* 函数原型:
```
@@ -1345,7 +1296,6 @@ ret_t vgcanvas_set_stroke_color_str (vgcanvas_t* vg, const char* color);
-
* 函数原型:
```
@@ -1374,7 +1324,6 @@ ret_t vgcanvas_set_stroke_linear_gradient (vgcanvas_t* vg, float_t sx, float_t s
-
* 函数原型:
```
@@ -1403,7 +1352,6 @@ ret_t vgcanvas_set_stroke_radial_gradient (vgcanvas_t* vg, float_t cx, float_t c
-
* 函数原型:
```
@@ -1427,7 +1375,6 @@ ret_t vgcanvas_set_text_align (vgcanvas_t* vg, char* value);
-
* 函数原型:
```
@@ -1451,7 +1398,6 @@ ret_t vgcanvas_set_text_baseline (vgcanvas_t* vg, char* value);
-
* 函数原型:
```
@@ -1480,7 +1426,6 @@ ret_t vgcanvas_set_transform (vgcanvas_t* vg, float_t a, float_t b, float_t c, f
-
* 函数原型:
```
@@ -1503,7 +1448,6 @@ ret_t vgcanvas_stroke (vgcanvas_t* vg);
-
* 函数原型:
```
@@ -1532,7 +1476,6 @@ ret_t vgcanvas_transform (vgcanvas_t* vg, float_t a, float_t b, float_t c, float
-
* 函数原型:
```
@@ -1552,7 +1495,6 @@ ret_t vgcanvas_translate (vgcanvas_t* vg, float_t x, float_t y);
>
是否启用反走样功能。
-
* 类型:bool\_t
| 特性 | 是否支持 |
@@ -1565,7 +1507,6 @@ ret_t vgcanvas_translate (vgcanvas_t* vg, float_t x, float_t y);
>
填充颜色
-
* 类型:color\_t
| 特性 | 是否支持 |
@@ -1577,7 +1518,6 @@ ret_t vgcanvas_translate (vgcanvas_t* vg, float_t x, float_t y);
>
字体。
-
* 类型:char*
| 特性 | 是否支持 |
@@ -1590,7 +1530,6 @@ ret_t vgcanvas_translate (vgcanvas_t* vg, float_t x, float_t y);
>
字体大小。
-
* 类型:float\_t
| 特性 | 是否支持 |
@@ -1603,7 +1542,6 @@ ret_t vgcanvas_translate (vgcanvas_t* vg, float_t x, float_t y);
>
全局alpha。
-
* 类型:float\_t
| 特性 | 是否支持 |
@@ -1616,7 +1554,6 @@ ret_t vgcanvas_translate (vgcanvas_t* vg, float_t x, float_t y);
>
canvas的高度
-
* 类型:wh\_t
| 特性 | 是否支持 |
@@ -1630,7 +1567,6 @@ ret_t vgcanvas_translate (vgcanvas_t* vg, float_t x, float_t y);
@see http://www.w3school.com.cn/tags/canvas_linecap.asp
-
* 类型:const char*
| 特性 | 是否支持 |
@@ -1644,7 +1580,6 @@ ret_t vgcanvas_translate (vgcanvas_t* vg, float_t x, float_t y);
@see http://www.w3school.com.cn/tags/canvas_linejoin.asp
-
* 类型:const char*
| 特性 | 是否支持 |
@@ -1657,7 +1592,6 @@ ret_t vgcanvas_translate (vgcanvas_t* vg, float_t x, float_t y);
>
线宽。
-
* 类型:float\_t
| 特性 | 是否支持 |
@@ -1671,7 +1605,6 @@ ret_t vgcanvas_translate (vgcanvas_t* vg, float_t x, float_t y);
@see http://www.w3school.com.cn/tags/canvas_miterlimit.asp
-
* 类型:float\_t
| 特性 | 是否支持 |
@@ -1684,7 +1617,6 @@ ret_t vgcanvas_translate (vgcanvas_t* vg, float_t x, float_t y);
>
显示比例。
-
* 类型:float\_t
| 特性 | 是否支持 |
@@ -1697,7 +1629,6 @@ ret_t vgcanvas_translate (vgcanvas_t* vg, float_t x, float_t y);
>
线条颜色
-
* 类型:color\_t
| 特性 | 是否支持 |
@@ -1711,7 +1642,6 @@ ret_t vgcanvas_translate (vgcanvas_t* vg, float_t x, float_t y);
@see http://www.w3school.com.cn/tags/canvas_textalign.asp
-
* 类型:const char*
| 特性 | 是否支持 |
@@ -1726,7 +1656,6 @@ ret_t vgcanvas_translate (vgcanvas_t* vg, float_t x, float_t y);
@see http://www.w3school.com.cn/tags/canvas_textbaseline.asp
-
* 类型:const char*
| 特性 | 是否支持 |
@@ -1739,7 +1668,6 @@ ret_t vgcanvas_translate (vgcanvas_t* vg, float_t x, float_t y);
>
canvas的宽度
-
* 类型:wh\_t
| 特性 | 是否支持 |
diff --git a/docs/manual/wbuffer_t.md b/docs/manual/wbuffer_t.md
index 015a9b6032..e63e31d9a9 100644
--- a/docs/manual/wbuffer_t.md
+++ b/docs/manual/wbuffer_t.md
@@ -29,7 +29,6 @@
-
----------------------------------
### 函数
@@ -65,7 +64,6 @@
-
* 函数原型:
```
@@ -87,7 +85,6 @@ ret_t wbuffer_deinit (wbuffer_t* wbuffer);
-
* 函数原型:
```
@@ -110,7 +107,6 @@ ret_t wbuffer_extend_capacity (wbuffer_t* wbuffer, uint32_t capacity);
-
* 函数原型:
```
@@ -135,7 +131,6 @@ wbuffer_t* wbuffer_init (wbuffer_t* wbuffer, uint8_t* data, uint16_t capacity);
-
* 函数原型:
```
@@ -157,7 +152,6 @@ wbuffer_t* wbuffer_init_extendable (wbuffer_t* wbuffer);
-
* 函数原型:
```
@@ -180,7 +174,6 @@ ret_t wbuffer_skip (wbuffer_t* wbuffer, int32_t delta);
-
* 函数原型:
```
@@ -204,7 +197,6 @@ ret_t wbuffer_write_binary (wbuffer_t* wbuffer, void* data, uint32_t size);
-
* 函数原型:
```
@@ -227,7 +219,6 @@ ret_t wbuffer_write_float (wbuffer_t* wbuffer, float_t value);
-
* 函数原型:
```
@@ -250,7 +241,6 @@ ret_t wbuffer_write_string (wbuffer_t* wbuffer, char* data);
-
* 函数原型:
```
@@ -273,7 +263,6 @@ ret_t wbuffer_write_uint16 (wbuffer_t* wbuffer, uint16_t value);
-
* 函数原型:
```
@@ -296,7 +285,6 @@ ret_t wbuffer_write_uint32 (wbuffer_t* wbuffer, uint32_t value);
-
* 函数原型:
```
@@ -315,7 +303,6 @@ ret_t wbuffer_write_uint8 (wbuffer_t* wbuffer, uint8_t value);
>
缓存区最大容量。
-
* 类型:uint32\_t
| 特性 | 是否支持 |
@@ -327,7 +314,6 @@ ret_t wbuffer_write_uint8 (wbuffer_t* wbuffer, uint8_t value);
>
当前写入位置。
-
* 类型:uint32\_t
| 特性 | 是否支持 |
@@ -339,7 +325,6 @@ ret_t wbuffer_write_uint8 (wbuffer_t* wbuffer, uint8_t value);
>
缓存区。
-
* 类型:uint8\_t*
| 特性 | 是否支持 |
@@ -351,7 +336,6 @@ ret_t wbuffer_write_uint8 (wbuffer_t* wbuffer, uint8_t value);
>
容量是否可扩展。
-
* 类型:bool\_t
| 特性 | 是否支持 |
diff --git a/docs/manual/wheel_event_t.md b/docs/manual/wheel_event_t.md
index a3b9d7aec8..00193051c6 100644
--- a/docs/manual/wheel_event_t.md
+++ b/docs/manual/wheel_event_t.md
@@ -4,7 +4,6 @@
滚轮事件。
-
----------------------------------
### 函数
@@ -31,7 +30,6 @@
-
* 函数原型:
```
@@ -53,7 +51,6 @@ wheel_event_t* wheel_event_cast (event_t* event);
-
* 函数原型:
```
@@ -74,7 +71,6 @@ event_t* wheel_event_init (wheel_event_t* event, void* target, uint32_t type, in
>
alt键是否按下。
-
* 类型:bool\_t
| 特性 | 是否支持 |
@@ -87,7 +83,6 @@ event_t* wheel_event_init (wheel_event_t* event, void* target, uint32_t type, in
>
ctrl键是否按下。
-
* 类型:bool\_t
| 特性 | 是否支持 |
@@ -100,7 +95,6 @@ event_t* wheel_event_init (wheel_event_t* event, void* target, uint32_t type, in
>
滚轮的y值。
-
* 类型:int32\_t
| 特性 | 是否支持 |
@@ -113,7 +107,6 @@ event_t* wheel_event_init (wheel_event_t* event, void* target, uint32_t type, in
>
shift键是否按下。
-
* 类型:bool\_t
| 特性 | 是否支持 |
diff --git a/docs/manual/widget_animator_prop2_t.md b/docs/manual/widget_animator_prop2_t.md
index 70efb587ba..19858a12d8 100644
--- a/docs/manual/widget_animator_prop2_t.md
+++ b/docs/manual/widget_animator_prop2_t.md
@@ -2,7 +2,6 @@
### 概述
通过修改对象的两个指定属性形成动画效果。
-
----------------------------------
### 函数
@@ -20,7 +19,6 @@
-
* 函数原型:
```
@@ -47,7 +45,6 @@ widget_animator_t* widget_animator_prop2_create (widget_t* widget, uint32_t dura
-
* 函数原型:
```
diff --git a/docs/manual/widget_animator_prop_t.md b/docs/manual/widget_animator_prop_t.md
index ff60353101..9ba01da372 100644
--- a/docs/manual/widget_animator_prop_t.md
+++ b/docs/manual/widget_animator_prop_t.md
@@ -2,7 +2,6 @@
### 概述
通过修改对象的指定属性形成动画效果。
-
----------------------------------
### 函数
@@ -20,7 +19,6 @@
-
* 函数原型:
```
@@ -46,7 +44,6 @@ widget_animator_t* widget_animator_prop_create (widget_t* widget, uint32_t durat
-
* 函数原型:
```
diff --git a/docs/manual/widget_animator_scroll_t.md b/docs/manual/widget_animator_scroll_t.md
index 56c0696fc7..44b1df1eb0 100644
--- a/docs/manual/widget_animator_scroll_t.md
+++ b/docs/manual/widget_animator_scroll_t.md
@@ -3,7 +3,6 @@
滚动控件的动画。
本动画也可以用widget_animator_prop2实现,但滚动控件需要访问内部数据结构,出于可读性考虑保留独立实现。
-
----------------------------------
### 函数
@@ -21,7 +20,6 @@
-
* 函数原型:
```
@@ -46,7 +44,6 @@ widget_animator_t* widget_animator_scroll_create (widget_t* widget, uint32_t dur
-
* 函数原型:
```
diff --git a/docs/manual/widget_animator_t.md b/docs/manual/widget_animator_t.md
index 6a09c80394..21ce20061c 100644
--- a/docs/manual/widget_animator_t.md
+++ b/docs/manual/widget_animator_t.md
@@ -2,7 +2,6 @@
### 概述
控件动画接口。
-
----------------------------------
### 函数
@@ -37,7 +36,6 @@
-
* 函数原型:
```
@@ -59,7 +57,6 @@ ret_t widget_animator_destroy (widget_animator_t* animator);
-
* 函数原型:
```
@@ -85,7 +82,6 @@ ret_t widget_animator_init (widget_animator_t* animator, widget_t* widget, uint3
-
* 函数原型:
```
@@ -109,7 +105,6 @@ ret_t widget_animator_off (widget_animator_t* animator, uint32_t id);
-
* 函数原型:
```
@@ -134,7 +129,6 @@ uint32_t widget_animator_on (widget_animator_t* animator, event_type_t , event_f
-
* 函数原型:
```
@@ -156,7 +150,6 @@ ret_t widget_animator_pause (widget_animator_t* animator);
-
* 函数原型:
```
@@ -179,7 +172,6 @@ ret_t widget_animator_set_destroy_when_done (widget_animator_t* animator, bool_t
-
* 函数原型:
```
@@ -202,7 +194,6 @@ ret_t widget_animator_set_name (widget_animator_t* animator, const char* name);
-
* 函数原型:
```
@@ -225,7 +216,6 @@ ret_t widget_animator_set_repeat (widget_animator_t* animator, uint32_t repeat_t
-
* 函数原型:
```
@@ -248,7 +238,6 @@ ret_t widget_animator_set_reversed (widget_animator_t* animator, bool_t value);
-
* 函数原型:
```
@@ -271,7 +260,6 @@ ret_t widget_animator_set_time_scale (widget_animator_t* animator, float_t time_
-
* 函数原型:
```
@@ -294,7 +282,6 @@ ret_t widget_animator_set_yoyo (widget_animator_t* animator, uint32_t yoyo_times
-
* 函数原型:
```
@@ -316,7 +303,6 @@ ret_t widget_animator_start (widget_animator_t* animator);
-
* 函数原型:
```
@@ -334,6 +320,5 @@ ret_t widget_animator_stop (widget_animator_t* animator);
>
名称。
-
* 类型:char*
diff --git a/docs/manual/widget_factory_t.md b/docs/manual/widget_factory_t.md
index abfc030093..7374598a82 100644
--- a/docs/manual/widget_factory_t.md
+++ b/docs/manual/widget_factory_t.md
@@ -8,7 +8,6 @@
用户注册自定义控件,可以获得内置控件同等待遇。
-
----------------------------------
### 函数
@@ -29,7 +28,6 @@
>
获取缺省的控件工厂对象。
-
* 函数原型:
```
@@ -50,7 +48,6 @@ widget_factory_t* widget_factory ();
-
* 函数原型:
```
@@ -71,7 +68,6 @@ widget_factory_t* widget_factory_create ();
-
* 函数原型:
```
@@ -98,7 +94,6 @@ widget_t* widget_factory_create_widget (widget_factory_t* factory, const char* t
-
* 函数原型:
```
@@ -120,7 +115,6 @@ ret_t widget_factory_destroy (widget_factory_t* factory);
-
* 函数原型:
```
@@ -144,7 +138,6 @@ ret_t widget_factory_register (widget_factory_t* factory, const char* type, widg
-
* 函数原型:
```
diff --git a/docs/manual/widget_prop_t.md b/docs/manual/widget_prop_t.md
index f99ff4a2f0..98ad6a4f9f 100644
--- a/docs/manual/widget_prop_t.md
+++ b/docs/manual/widget_prop_t.md
@@ -1,7 +1,6 @@
## widget\_prop\_t
### 概述
控件的属性。
-
### 常量
diff --git a/docs/manual/widget_state_t.md b/docs/manual/widget_state_t.md
index f900c49251..238f785311 100644
--- a/docs/manual/widget_state_t.md
+++ b/docs/manual/widget_state_t.md
@@ -3,7 +3,6 @@
控件状态常量定义。
这里指定常用的状态值,扩展控件可以在自己的头文件中定义私有的状态。
-
### 常量
diff --git a/docs/manual/widget_t.md b/docs/manual/widget_t.md
index b03ab9da7d..f2ab58d604 100644
--- a/docs/manual/widget_t.md
+++ b/docs/manual/widget_t.md
@@ -45,7 +45,6 @@
```
-
----------------------------------
### 函数
@@ -101,8 +100,11 @@
| widget\_move | 移动控件。 |
| widget\_move\_resize | 移动控件并调整控件的大小。 |
| widget\_off | 注销指定事件的处理函数。 |
-| widget\_off\_by\_func | 注销指定事件的处理函数。 |
+| widget\_off\_by\_ctx | 注销指定ctx的事件处理函数。 |
+| widget\_off\_by\_func | 注销指定函数的事件处理函数。 |
+| widget\_off\_by\_tag | 注销指定tag的事件处理函数。 |
| widget\_on | 注册指定事件的处理函数。 |
+| widget\_on\_with\_tag | 注册指定tag的事件处理函数。 |
| widget\_pause\_animator | 暂停动画。 |
| widget\_remove\_child | 移出指定的子控件(并不销毁)。 |
| widget\_resize | 调整控件的大小。 |
@@ -220,7 +222,6 @@
-
* 函数原型:
```
@@ -245,7 +246,6 @@ ret_t widget_add_child (widget_t* widget, widget_t* child);
-
* 函数原型:
```
@@ -283,7 +283,6 @@ uint32_t widget_add_idle (widget_t* widget, idle_func_t on_idle);
-
* 函数原型:
```
@@ -308,7 +307,6 @@ uint32_t widget_add_timer (widget_t* widget, timer_func_t on_timer, uint32_t dur
-
* 函数原型:
```
@@ -332,7 +330,6 @@ ret_t widget_add_value (widget_t* widget, int32_t delta);
-
* 函数原型:
```
@@ -356,7 +353,6 @@ ret_t widget_animate_value_to (widget_t* widget, int32_t value, uint32_t duratio
-
* 函数原型:
```
@@ -378,7 +374,6 @@ widget_t* widget_cast (widget_t* widget);
-
* 函数原型:
```
@@ -402,7 +397,6 @@ widget_t* widget_child (widget_t* widget, char* name);
-
* 函数原型:
```
@@ -428,7 +422,6 @@ int32_t widget_child_on (widget_t* widget, char* name, uint32_t type, event_func
-
* 函数原型:
```
@@ -451,7 +444,6 @@ widget_t* widget_clone (widget_t* widget, widget_t* parent);
-
* 函数原型:
```
@@ -478,7 +470,6 @@ int32_t widget_count_children (widget_t* widget);
-
* 函数原型:
```
@@ -502,7 +493,6 @@ ret_t widget_create_animator (widget_t* widget, const char* animation);
-
* 函数原型:
```
@@ -530,7 +520,6 @@ ret_t widget_destroy (widget_t* widget);
-
* 函数原型:
```
@@ -553,7 +542,6 @@ ret_t widget_destroy_animator (widget_t* widget, char* name);
-
* 函数原型:
```
@@ -575,7 +563,6 @@ ret_t widget_destroy_children (widget_t* widget);
-
* 函数原型:
```
@@ -598,7 +585,6 @@ ret_t widget_dispatch (widget_t* widget, event_t* e);
-
* 函数原型:
```
@@ -622,7 +608,6 @@ bool_t widget_equal (widget_t* widget, widget_t* other);
-
* 函数原型:
```
@@ -645,7 +630,6 @@ widget_animator_t* widget_find_animator (widget_t* widget, char* name);
-
* 函数原型:
```
@@ -669,7 +653,6 @@ ret_t widget_foreach (widget_t* widget, tk_visit_t visit, void* ctx);
-
* 函数原型:
```
@@ -690,7 +673,6 @@ canvas_t* widget_get_canvas ();
-
* 函数原型:
```
@@ -713,7 +695,6 @@ widget_t* widget_get_child (widget_t* widget, int32_t index);
-
* 函数原型:
```
@@ -737,7 +718,6 @@ ret_t widget_get_prop (widget_t* widget, const char* name, value_t* v);
-
* 函数原型:
```
@@ -761,7 +741,6 @@ bool_t widget_get_prop_bool (widget_t* widget, const char* name, bool_t defval);
-
* 函数原型:
```
@@ -785,7 +764,6 @@ ret_t widget_get_prop_default_value (widget_t* widget, const char* name, value_t
-
* 函数原型:
```
@@ -809,7 +787,6 @@ int32_t widget_get_prop_int (widget_t* widget, const char* name, int32_t defval)
-
* 函数原型:
```
@@ -832,7 +809,6 @@ void* widget_get_prop_pointer (widget_t* widget, const char* name);
-
* 函数原型:
```
@@ -857,7 +833,6 @@ const char* widget_get_prop_str (widget_t* widget, const char* name, const char*
-
* 函数原型:
```
@@ -879,7 +854,6 @@ wchar_t* widget_get_text (widget_t* widget);
-
* 函数原型:
```
@@ -901,7 +875,6 @@ char* widget_get_type (widget_t* widget);
-
* 函数原型:
```
@@ -923,7 +896,6 @@ int32_t widget_get_value (widget_t* widget);
-
* 函数原型:
```
@@ -945,7 +917,6 @@ widget_t* widget_get_window (widget_t* widget);
-
* 函数原型:
```
@@ -968,7 +939,6 @@ widget_t* widget_get_window_manager (widget_t* widget);
-
* 函数原型:
```
@@ -991,7 +961,6 @@ ret_t widget_grab (widget_t* widget, widget_t* child);
-
* 函数原型:
```
@@ -1013,7 +982,6 @@ int32_t widget_index_of (widget_t* widget);
-
* 函数原型:
```
@@ -1037,7 +1005,6 @@ ret_t widget_insert_child (widget_t* widget, uint32_t index, widget_t* child);
-
* 函数原型:
```
@@ -1060,7 +1027,6 @@ ret_t widget_invalidate (widget_t* widget, rect_t* r);
-
* 函数原型:
```
@@ -1083,7 +1049,6 @@ ret_t widget_invalidate_force (widget_t* widget, rect_t* r);
-
* 函数原型:
```
@@ -1105,7 +1070,6 @@ bool_t widget_is_designing_window (widget_t* widget);
-
* 函数原型:
```
@@ -1127,7 +1091,6 @@ bool_t widget_is_window (widget_t* widget);
-
* 函数原型:
```
@@ -1149,7 +1112,6 @@ bool_t widget_is_window_manager (widget_t* widget);
-
* 函数原型:
```
@@ -1171,7 +1133,6 @@ bool_t widget_is_window_opened (widget_t* widget);
-
* 函数原型:
```
@@ -1193,7 +1154,6 @@ ret_t widget_layout (widget_t* widget);
-
* 函数原型:
```
@@ -1223,7 +1183,6 @@ ret_t widget_layout_children (widget_t* widget);
-
* 函数原型:
```
@@ -1257,7 +1216,6 @@ const asset_info_t* widget_load_asset (widget_t* widget, asset_type_t type, cons
-
* 函数原型:
```
@@ -1281,7 +1239,6 @@ ret_t widget_load_image (widget_t* widget, const char* name, bitmap_t* bitmap);
-
* 函数原型:
```
@@ -1305,7 +1262,6 @@ widget_t* widget_lookup (widget_t* widget, char* name, bool_t recursive);
-
* 函数原型:
```
@@ -1329,7 +1285,6 @@ widget_t* widget_lookup_by_type (widget_t* widget, char* type, bool_t recursive)
-
* 函数原型:
```
@@ -1353,7 +1308,6 @@ ret_t widget_move (widget_t* widget, xy_t x, xy_t y);
-
* 函数原型:
```
@@ -1379,7 +1333,6 @@ ret_t widget_move_resize (widget_t* widget, xy_t x, xy_t y, wh_t w, wh_t h);
-
* 函数原型:
```
@@ -1393,14 +1346,34 @@ ret_t widget_off (widget_t* widget, int32_t id);
| 返回值 | ret\_t | 返回RET\_OK表示成功,否则表示失败。 |
| widget | widget\_t* | 控件对象。 |
| id | int32\_t | widget\_on返回的ID。 |
-#### widget\_off\_by\_func 函数
+#### widget\_off\_by\_ctx 函数
-----------------------
* 函数功能:
->
注销指定事件的处理函数。
- 仅用于辅助实现脚本绑定。
+>
注销指定ctx的事件处理函数。
+
+
+
+* 函数原型:
+
+```
+ret_t widget_off_by_ctx (widget_t* widget, void* ctx);
+```
+
+* 参数说明:
+
+| 参数 | 类型 | 说明 |
+| -------- | ----- | --------- |
+| 返回值 | ret\_t | 返回RET\_OK表示成功,否则表示失败。 |
+| widget | widget\_t* | 控件对象。 |
+| ctx | void* | 事件处理函数上下文。 |
+#### widget\_off\_by\_func 函数
+-----------------------
+* 函数功能:
+
+>
注销指定函数的事件处理函数。
@@ -1419,6 +1392,28 @@ ret_t widget_off_by_func (widget_t* widget, uint32_t type, event_func_t on_event
| type | uint32\_t | 事件类型。 |
| on\_event | event\_func\_t | 事件处理函数。 |
| ctx | void* | 事件处理函数上下文。 |
+#### widget\_off\_by\_tag 函数
+-----------------------
+
+* 函数功能:
+
+>
注销指定tag的事件处理函数。
+
+
+
+* 函数原型:
+
+```
+ret_t widget_off_by_tag (widget_t* widget, uint32_t tag);
+```
+
+* 参数说明:
+
+| 参数 | 类型 | 说明 |
+| -------- | ----- | --------- |
+| 返回值 | ret\_t | 返回RET\_OK表示成功,否则表示失败。 |
+| widget | widget\_t* | 控件对象。 |
+| tag | uint32\_t | tag。 |
#### widget\_on 函数
-----------------------
@@ -1435,7 +1430,6 @@ ret_t widget_off_by_func (widget_t* widget, uint32_t type, event_func_t on_event
-
* 函数原型:
```
@@ -1451,6 +1445,34 @@ int32_t widget_on (widget_t* widget, uint32_t type, event_func_t on_event, void*
| type | uint32\_t | 事件类型。 |
| on\_event | event\_func\_t | 事件处理函数。 |
| ctx | void* | 事件处理函数上下文。 |
+#### widget\_on\_with\_tag 函数
+-----------------------
+
+* 函数功能:
+
+>
注册指定tag的事件处理函数。
+
+ > 注册时指定一个tag,可用widget\_off\_by\_tag注销相同tag的事件处理函数。
+
+
+
+
+* 函数原型:
+
+```
+int32_t widget_on_with_tag (widget_t* widget, uint32_t type, event_func_t on_event, void* ctx, uint32_t tag);
+```
+
+* 参数说明:
+
+| 参数 | 类型 | 说明 |
+| -------- | ----- | --------- |
+| 返回值 | int32\_t | 返回id,用于widget\_off。 |
+| widget | widget\_t* | 控件对象。 |
+| type | uint32\_t | 事件类型。 |
+| on\_event | event\_func\_t | 事件处理函数。 |
+| ctx | void* | 事件处理函数上下文。 |
+| tag | uint32\_t | tag。 |
#### widget\_pause\_animator 函数
-----------------------
@@ -1466,7 +1488,6 @@ int32_t widget_on (widget_t* widget, uint32_t type, event_func_t on_event, void*
-
* 函数原型:
```
@@ -1489,7 +1510,6 @@ ret_t widget_pause_animator (widget_t* widget, char* name);
-
* 函数原型:
```
@@ -1512,7 +1532,6 @@ ret_t widget_remove_child (widget_t* widget, widget_t* child);
-
* 函数原型:
```
@@ -1536,7 +1555,6 @@ ret_t widget_resize (widget_t* widget, wh_t w, wh_t h);
-
* 函数原型:
```
@@ -1561,7 +1579,6 @@ ret_t widget_restack (widget_t* widget, uint32_t index);
-
* 函数原型:
```
@@ -1590,7 +1607,6 @@ ret_t widget_set_animation (widget_t* widget, const char* animation);
-
* 函数原型:
```
@@ -1614,7 +1630,6 @@ ret_t widget_set_animator_time_scale (widget_t* widget, const char* name, float_
-
* 函数原型:
```
@@ -1637,7 +1652,6 @@ ret_t widget_set_children_layout (widget_t* widget, const char* params);
-
* 函数原型:
```
@@ -1660,7 +1674,6 @@ ret_t widget_set_cursor (widget_t* widget, char* cursor);
-
* 函数原型:
```
@@ -1683,7 +1696,6 @@ ret_t widget_set_enable (widget_t* widget, bool_t enable);
-
* 函数原型:
```
@@ -1706,7 +1718,6 @@ ret_t widget_set_feedback (widget_t* widget, bool_t feedback);
-
* 函数原型:
```
@@ -1729,7 +1740,6 @@ ret_t widget_set_floating (widget_t* widget, bool_t floating);
-
* 函数原型:
```
@@ -1752,7 +1762,6 @@ ret_t widget_set_focused (widget_t* widget, bool_t focused);
-
* 函数原型:
```
@@ -1778,7 +1787,6 @@ ret_t widget_set_name (widget_t* widget, char* name);
-
* 函数原型:
```
@@ -1801,7 +1809,6 @@ ret_t widget_set_opacity (widget_t* widget, uint8_t opacity);
-
* 函数原型:
```
@@ -1825,7 +1832,6 @@ ret_t widget_set_prop (widget_t* widget, const char* name, value_t* v);
-
* 函数原型:
```
@@ -1849,7 +1855,6 @@ ret_t widget_set_prop_bool (widget_t* widget, const char* name, bool_t v);
-
* 函数原型:
```
@@ -1873,7 +1878,6 @@ ret_t widget_set_prop_int (widget_t* widget, const char* name, int32_t v);
-
* 函数原型:
```
@@ -1897,7 +1901,6 @@ ret_t widget_set_prop_pointer (widget_t* widget, const char* name, void** v);
-
* 函数原型:
```
@@ -1921,7 +1924,6 @@ ret_t widget_set_prop_str (widget_t* widget, const char* name, const char* v);
-
* 函数原型:
```
@@ -1944,7 +1946,6 @@ ret_t widget_set_self_layout (widget_t* widget, const char* params);
-
* 函数原型:
```
@@ -1970,7 +1971,6 @@ ret_t widget_set_self_layout_params (widget_t* widget, const char* x, const char
-
* 函数原型:
```
@@ -1993,7 +1993,6 @@ ret_t widget_set_sensitive (widget_t* widget, bool_t sensitive);
-
* 函数原型:
```
@@ -2016,7 +2015,6 @@ ret_t widget_set_state (widget_t* widget, const char* state);
-
* 函数原型:
```
@@ -2040,7 +2038,6 @@ ret_t widget_set_style_color (widget_t* widget, const char* state_and_name, uint
-
* 函数原型:
```
@@ -2064,7 +2061,6 @@ ret_t widget_set_style_int (widget_t* widget, const char* state_and_name, int32_
-
* 函数原型:
```
@@ -2089,7 +2085,6 @@ ret_t widget_set_style_str (widget_t* widget, const char* state_and_name, const
-
* 函数原型:
```
@@ -2113,7 +2108,6 @@ ret_t widget_set_text (widget_t* widget, wchar_t* text);
-
* 函数原型:
```
@@ -2139,7 +2133,6 @@ ret_t widget_set_text_utf8 (widget_t* widget, char* text);
-
* 函数原型:
```
@@ -2162,7 +2155,6 @@ ret_t widget_set_theme (widget_t* widget, char* name);
-
* 函数原型:
```
@@ -2186,7 +2178,6 @@ ret_t widget_set_tr_text (widget_t* widget, char* text);
-
* 函数原型:
```
@@ -2209,7 +2200,6 @@ ret_t widget_set_value (widget_t* widget, int32_t value);
-
* 函数原型:
```
@@ -2233,7 +2223,6 @@ ret_t widget_set_visible (widget_t* widget, bool_t visible, bool_t recursive);
-
* 函数原型:
```
@@ -2262,7 +2251,6 @@ ret_t widget_set_visible_only (widget_t* widget, bool_t visible);
-
* 函数原型:
```
@@ -2291,7 +2279,6 @@ ret_t widget_start_animator (widget_t* widget, const char* name);
-
* 函数原型:
```
@@ -2314,7 +2301,6 @@ ret_t widget_stop_animator (widget_t* widget, char* name);
-
* 函数原型:
```
@@ -2337,7 +2323,6 @@ ret_t widget_to_global (widget_t* widget, point_t* p);
-
* 函数原型:
```
@@ -2360,7 +2345,6 @@ ret_t widget_to_local (widget_t* widget, point_t* p);
-
* 函数原型:
```
@@ -2383,7 +2367,6 @@ ret_t widget_to_screen (widget_t* widget, point_t* p);
-
* 函数原型:
```
@@ -2414,7 +2397,6 @@ ret_t widget_ungrab (widget_t* widget, widget_t* child);
-
* 函数原型:
```
@@ -2440,7 +2422,6 @@ ret_t widget_unload_asset (widget_t* widget, const asset_info_t* asset);
-
* 函数原型:
```
@@ -2463,7 +2444,6 @@ ret_t widget_unload_image (widget_t* widget, bitmap_t* bitmap);
-
* 函数原型:
```
@@ -2482,7 +2462,6 @@ ret_t widget_use_style (widget_t* widget, char* style);
>
动画参数。请参考[控件动画](https://github.com/zlgopen/awtk/blob/master/docs/widget_animator.md)
-
* 类型:char*
| 特性 | 是否支持 |
@@ -2500,7 +2479,6 @@ ret_t widget_use_style (widget_t* widget, char* style);
>
Style对象。
-
* 类型:style\_t*
| 特性 | 是否支持 |
@@ -2512,7 +2490,6 @@ ret_t widget_use_style (widget_t* widget, char* style);
>
是否由父控件自动创建。
-
* 类型:bool\_t
| 特性 | 是否支持 |
@@ -2524,7 +2501,6 @@ ret_t widget_use_style (widget_t* widget, char* style);
>
标识控件目前不能被销毁(比如正在分发事件),如果此时调用widget\_destroy,自动异步处理。
-
* 类型:uint16\_t
| 特性 | 是否支持 |
@@ -2536,7 +2512,6 @@ ret_t widget_use_style (widget_t* widget, char* style);
>
全部子控件。
-
* 类型:darray\_t*
| 特性 | 是否支持 |
@@ -2548,7 +2523,6 @@ ret_t widget_use_style (widget_t* widget, char* style);
>
子控件布局器。请参考[控件布局参数](https://github.com/zlgopen/awtk/blob/master/docs/layout.md)
-
* 类型:children\_layouter\_t*
| 特性 | 是否支持 |
@@ -2563,7 +2537,6 @@ ret_t widget_use_style (widget_t* widget, char* style);
>
自定义属性。
-
* 类型:object\_t*
| 特性 | 是否支持 |
@@ -2575,7 +2548,6 @@ ret_t widget_use_style (widget_t* widget, char* style);
>
标识控件正在被销毁。
-
* 类型:bool\_t
| 特性 | 是否支持 |
@@ -2587,7 +2559,6 @@ ret_t widget_use_style (widget_t* widget, char* style);
>
标识控件是否需要重绘。
-
* 类型:bool\_t
| 特性 | 是否支持 |
@@ -2599,7 +2570,6 @@ ret_t widget_use_style (widget_t* widget, char* style);
>
事件发射器。
-
* 类型:emitter\_t*
| 特性 | 是否支持 |
@@ -2611,7 +2581,6 @@ ret_t widget_use_style (widget_t* widget, char* style);
>
启用/禁用状态。
-
* 类型:bool\_t
| 特性 | 是否支持 |
@@ -2629,7 +2598,6 @@ ret_t widget_use_style (widget_t* widget, char* style);
>
是否启用按键音、触屏音和震动等反馈。
-
* 类型:bool\_t
| 特性 | 是否支持 |
@@ -2647,7 +2615,6 @@ ret_t widget_use_style (widget_t* widget, char* style);
>
标识控件是否启用浮动布局,不受父控件的children_layout的控制。
-
* 类型:bool\_t
| 特性 | 是否支持 |
@@ -2665,7 +2632,6 @@ ret_t widget_use_style (widget_t* widget, char* style);
>
是否支持焦点停留。
-
* 类型:bool\_t
| 特性 | 是否支持 |
@@ -2683,7 +2649,6 @@ ret_t widget_use_style (widget_t* widget, char* style);
>
是否得到焦点。
-
* 类型:bool\_t
| 特性 | 是否支持 |
@@ -2695,7 +2660,6 @@ ret_t widget_use_style (widget_t* widget, char* style);
>
高度。
-
* 类型:wh\_t
| 特性 | 是否支持 |
@@ -2713,7 +2677,6 @@ ret_t widget_use_style (widget_t* widget, char* style);
>
标识控件正在初始化。
-
* 类型:bool\_t
| 特性 | 是否支持 |
@@ -2725,7 +2688,6 @@ ret_t widget_use_style (widget_t* widget, char* style);
>
控件名字。
-
* 类型:char*
| 特性 | 是否支持 |
@@ -2743,7 +2705,6 @@ ret_t widget_use_style (widget_t* widget, char* style);
>
标识控件是否需要重新layout子控件。
-
* 类型:bool\_t
| 特性 | 是否支持 |
@@ -2755,7 +2716,6 @@ ret_t widget_use_style (widget_t* widget, char* style);
>
标识控件是否需要update style。
-
* 类型:bool\_t
| 特性 | 是否支持 |
@@ -2767,7 +2727,6 @@ ret_t widget_use_style (widget_t* widget, char* style);
>
不透明度(0-255),0完全透明,255完全不透明。
-
* 类型:uint8\_t
| 特性 | 是否支持 |
@@ -2779,7 +2738,6 @@ ret_t widget_use_style (widget_t* widget, char* style);
>
父控件
-
* 类型:widget\_t*
| 特性 | 是否支持 |
@@ -2791,7 +2749,6 @@ ret_t widget_use_style (widget_t* widget, char* style);
>
控件布局器。请参考[控件布局参数](https://github.com/zlgopen/awtk/blob/master/docs/layout.md)
-
* 类型:self\_layouter\_t*
| 特性 | 是否支持 |
@@ -2806,7 +2763,6 @@ ret_t widget_use_style (widget_t* widget, char* style);
>
是否接受用户事件。
-
* 类型:bool\_t
| 特性 | 是否支持 |
@@ -2824,7 +2780,6 @@ ret_t widget_use_style (widget_t* widget, char* style);
>
控件的状态(取值参考widget_state_t)。
-
* 类型:uint8\_t
| 特性 | 是否支持 |
@@ -2836,7 +2791,6 @@ ret_t widget_use_style (widget_t* widget, char* style);
>
style的名称。
-
* 类型:char*
| 特性 | 是否支持 |
@@ -2854,7 +2808,6 @@ ret_t widget_use_style (widget_t* widget, char* style);
>
文本。用途视具体情况而定。
-
* 类型:wstr\_t
| 特性 | 是否支持 |
@@ -2866,7 +2819,6 @@ ret_t widget_use_style (widget_t* widget, char* style);
>
保存用于翻译的字符串。
-
* 类型:char*
| 特性 | 是否支持 |
@@ -2884,7 +2836,6 @@ ret_t widget_use_style (widget_t* widget, char* style);
>
是否可见。
-
* 类型:bool\_t
| 特性 | 是否支持 |
@@ -2902,7 +2853,6 @@ ret_t widget_use_style (widget_t* widget, char* style);
>
虚函数表。
-
* 类型:widget\_vtable\_t
| 特性 | 是否支持 |
@@ -2914,7 +2864,6 @@ ret_t widget_use_style (widget_t* widget, char* style);
>
宽度。
-
* 类型:wh\_t
| 特性 | 是否支持 |
@@ -2933,7 +2882,6 @@ ret_t widget_use_style (widget_t* widget, char* style);
> 如果希望style支持焦点状态,但有不希望焦点停留,可用本属性。
-
* 类型:bool\_t
| 特性 | 是否支持 |
@@ -2951,7 +2899,6 @@ ret_t widget_use_style (widget_t* widget, char* style);
>
x坐标(相对于父控件的x坐标)。
-
* 类型:xy\_t
| 特性 | 是否支持 |
@@ -2969,7 +2916,6 @@ ret_t widget_use_style (widget_t* widget, char* style);
>
y坐标(相对于父控件的y坐标)。
-
* 类型:xy\_t
| 特性 | 是否支持 |
diff --git a/docs/manual/widget_type_t.md b/docs/manual/widget_type_t.md
index cf71850b2a..8997538e73 100644
--- a/docs/manual/widget_type_t.md
+++ b/docs/manual/widget_type_t.md
@@ -1,7 +1,6 @@
## widget\_type\_t
### 概述
控件的类型。
-
### 常量
diff --git a/docs/manual/window_animator_factory_t.md b/docs/manual/window_animator_factory_t.md
index 7b47fc6b4f..5429340073 100644
--- a/docs/manual/window_animator_factory_t.md
+++ b/docs/manual/window_animator_factory_t.md
@@ -6,7 +6,6 @@
让用户可以自定义窗口动画,并获得内置窗口动画同等待遇。
-
----------------------------------
### 函数
@@ -30,7 +29,6 @@
-
* 函数原型:
```
@@ -55,7 +53,6 @@ window_animator_t* window_animator_create_for_close (char* type, canvas_t* c, wi
-
* 函数原型:
```
@@ -79,7 +76,6 @@ window_animator_t* window_animator_create_for_open (char* type, canvas_t* c, wid
>
获取缺省的窗口动画工厂对象。
-
* 函数原型:
```
@@ -100,7 +96,6 @@ window_animator_factory_t* window_animator_factory ();
-
* 函数原型:
```
@@ -121,7 +116,6 @@ window_animator_factory_t* window_animator_factory_create ();
-
* 函数原型:
```
@@ -145,7 +139,6 @@ window_animator_t* window_animator_factory_create_animator (window_animator_fact
-
* 函数原型:
```
@@ -167,7 +160,6 @@ ret_t window_animator_factory_destroy (window_animator_factory_t* factory);
-
* 函数原型:
```
@@ -191,7 +183,6 @@ ret_t window_animator_factory_register (window_animator_factory_t* factory, cons
-
* 函数原型:
```
diff --git a/docs/manual/window_animator_t.md b/docs/manual/window_animator_t.md
index 25911497f8..02e4e4d773 100644
--- a/docs/manual/window_animator_t.md
+++ b/docs/manual/window_animator_t.md
@@ -2,7 +2,6 @@
### 概述
窗口动画。
-
----------------------------------
### 函数
@@ -23,7 +22,6 @@
-
* 函数原型:
```
@@ -47,7 +45,6 @@ ret_t window_animator_begin_frame (window_animator_t* wa);
-
* 函数原型:
```
@@ -70,7 +67,6 @@ window_animator_t* window_animator_create (bool_t open, const window_animator_vt
-
* 函数原型:
```
@@ -92,7 +88,6 @@ ret_t window_animator_destroy (window_animator_t* wa);
-
* 函数原型:
```
@@ -114,7 +109,6 @@ ret_t window_animator_end_frame (window_animator_t* wa);
-
* 函数原型:
```
diff --git a/docs/manual/window_animator_type_t.md b/docs/manual/window_animator_type_t.md
index 5beaac1f77..9228f1a338 100644
--- a/docs/manual/window_animator_type_t.md
+++ b/docs/manual/window_animator_type_t.md
@@ -2,7 +2,6 @@
### 概述
@type string
内置窗口动画常量定义。
-
### 常量
diff --git a/docs/manual/window_closable_t.md b/docs/manual/window_closable_t.md
index 5a536cf6e3..c9ca88de74 100644
--- a/docs/manual/window_closable_t.md
+++ b/docs/manual/window_closable_t.md
@@ -1,7 +1,6 @@
## window\_closable\_t
### 概述
窗口的closable常量定义。
-
### 常量
diff --git a/docs/manual/window_event_t.md b/docs/manual/window_event_t.md
index 50adb28aca..4597f1028a 100644
--- a/docs/manual/window_event_t.md
+++ b/docs/manual/window_event_t.md
@@ -4,7 +4,6 @@
窗口事件,由窗口管理器触发。
-
----------------------------------
### 函数
@@ -29,7 +28,6 @@
-
* 函数原型:
```
@@ -52,7 +50,6 @@ ret_t pointer_event_rotate (pointer_event_t* evt, system_info_t* info);
-
* 函数原型:
```
@@ -74,7 +71,6 @@ window_event_t* window_event_cast (event_t* event);
-
* 函数原型:
```
@@ -95,7 +91,6 @@ event_t* window_event_init (window_event_t* event, void* target, uint32_t type,
>
canvas。
-
* 类型:widget\_t*
| 特性 | 是否支持 |
diff --git a/docs/manual/window_stage_t.md b/docs/manual/window_stage_t.md
index 1acfa7c300..cc27184484 100644
--- a/docs/manual/window_stage_t.md
+++ b/docs/manual/window_stage_t.md
@@ -1,7 +1,6 @@
## window\_stage\_t
### 概述
窗口的生命周期常量定义。
-
### 常量
diff --git a/docs/manual/window_t.md b/docs/manual/window_t.md
index ad099fa04f..4054943ab5 100644
--- a/docs/manual/window_t.md
+++ b/docs/manual/window_t.md
@@ -17,7 +17,7 @@
```
>
- 更多用法请参考:[window.xml](https://github.com/zlgopen/awtk/blob/master/demos/assets/raw/ui/)
+ 更多用法请参考:[window.xml](https://github.com/zlgopen/awtk/blob/master/demos/assets/default/raw/ui/)
在c代码中使用函数window\_create创建窗口。如:
@@ -39,8 +39,7 @@
```
> 更多用法请参考:[theme
- default](https://github.com/zlgopen/awtk/blob/master/demos/assets/raw/styles/default.xml#L0)
-
+ default](https://github.com/zlgopen/awtk/blob/master/demos/assets/default/raw/styles/default.xml#L0)
----------------------------------
### 函数
@@ -71,7 +70,6 @@
-
* 函数原型:
```
@@ -92,7 +90,6 @@ ret_t dialog_highlighter_register_builtins ();
-
* 函数原型:
```
@@ -114,7 +111,6 @@ widget_t* window_cast (widget_t* widget);
-
* 函数原型:
```
@@ -136,7 +132,6 @@ ret_t window_close (widget_t* widget);
-
* 函数原型:
```
@@ -158,7 +153,6 @@ ret_t window_close_force (widget_t* widget);
-
* 函数原型:
```
@@ -185,7 +179,6 @@ widget_t* window_create (widget_t* parent, xy_t x, xy_t y, wh_t w, wh_t h);
-
* 函数原型:
```
@@ -207,7 +200,6 @@ widget_t* window_open (char* name);
-
* 函数原型:
```
@@ -233,7 +225,6 @@ widget_t* window_open_and_close (char* name, widget_t* to_close);
-
* 函数原型:
```
@@ -254,7 +245,6 @@ ret_t window_set_fullscreen (widget_t* widget, bool_t fullscreen);
>这里全屏是指与LCD相同大小,而非让SDL窗口全屏。
-
* 类型:bool\_t
| 特性 | 是否支持 |
diff --git a/docs/manual/wstr_t.md b/docs/manual/wstr_t.md
index b65901d5b1..fb9ec47d48 100644
--- a/docs/manual/wstr_t.md
+++ b/docs/manual/wstr_t.md
@@ -16,7 +16,6 @@
> 先调wstr\_init进行初始化,最后调用wstr\_reset释放内存。
-
----------------------------------
### 函数
@@ -62,7 +61,6 @@
-
* 函数原型:
```
@@ -85,7 +83,6 @@ ret_t wstr_add_float (wstr_t* str, double delta);
-
* 函数原型:
```
@@ -108,7 +105,6 @@ ret_t wstr_append (wstr_t* str, wchar_t* text);
-
* 函数原型:
```
@@ -132,7 +128,6 @@ ret_t wstr_append_with_len (wstr_t* str, wchar_t* text, uint32_t len);
-
* 函数原型:
```
@@ -154,7 +149,6 @@ ret_t wstr_clear (wstr_t* str);
-
* 函数原型:
```
@@ -177,7 +171,6 @@ bool_t wstr_equal (wstr_t* str, wstr_t* other);
-
* 函数原型:
```
@@ -200,7 +193,6 @@ ret_t wstr_from_float (wstr_t* str, double v);
-
* 函数原型:
```
@@ -223,7 +215,6 @@ ret_t wstr_from_int (wstr_t* str, int32_t v);
-
* 函数原型:
```
@@ -246,7 +237,6 @@ ret_t wstr_from_value (wstr_t* str, value_t v);
-
* 函数原型:
```
@@ -270,7 +260,6 @@ ret_t wstr_get_utf8 (wstr_t* str, char* text, uint32_t size);
-
* 函数原型:
```
@@ -293,7 +282,6 @@ wstr_t* wstr_init (wstr_t* str, uint32_t capacity);
-
* 函数原型:
```
@@ -318,7 +306,6 @@ ret_t wstr_insert (wstr_t* str, uint32_t offset, wchar_t* text, uint32_t nr);
-
* 函数原型:
```
@@ -341,7 +328,6 @@ ret_t wstr_normalize_newline (wstr_t* str, wchar_t newline);
-
* 函数原型:
```
@@ -363,7 +349,6 @@ ret_t wstr_pop (wstr_t* str);
-
* 函数原型:
```
@@ -386,7 +371,6 @@ ret_t wstr_push (wstr_t* str, wchar_t c);
-
* 函数原型:
```
@@ -410,7 +394,6 @@ ret_t wstr_push_int (wstr_t* str, const char* format, int32_t value);
-
* 函数原型:
```
@@ -434,7 +417,6 @@ ret_t wstr_remove (wstr_t* str, uint32_t offset, uint32_t nr);
-
* 函数原型:
```
@@ -456,7 +438,6 @@ ret_t wstr_reset (wstr_t* str);
-
* 函数原型:
```
@@ -479,7 +460,6 @@ ret_t wstr_set (wstr_t* str, wchar_t* text);
-
* 函数原型:
```
@@ -502,7 +482,6 @@ ret_t wstr_set_utf8 (wstr_t* str, char* text);
-
* 函数原型:
```
@@ -525,7 +504,6 @@ ret_t wstr_to_float (wstr_t* str, double* v);
-
* 函数原型:
```
@@ -548,7 +526,6 @@ ret_t wstr_to_int (wstr_t* str, int32_t* v);
-
* 函数原型:
```
@@ -566,7 +543,6 @@ ret_t wstr_trim_float_zero (wstr_t* str);
>
容量。
-
* 类型:uint32\_t
| 特性 | 是否支持 |
@@ -578,7 +554,6 @@ ret_t wstr_trim_float_zero (wstr_t* str);
>
长度。
-
* 类型:uint32\_t
| 特性 | 是否支持 |
@@ -590,7 +565,6 @@ ret_t wstr_trim_float_zero (wstr_t* str);
>
字符串。
-
* 类型:wchar\_t*
| 特性 | 是否支持 |
diff --git a/docs/porting_common.md b/docs/porting_common.md
index c7223c666e..d5396e2dac 100644
--- a/docs/porting_common.md
+++ b/docs/porting_common.md
@@ -10,7 +10,7 @@
*/
/**
- * 如果需要支持预先解码的图片,请定义本宏。一般只在RAM极小时,才启用本宏。
+ * 如果需要支持预先解码的位图字体,请定义本宏。一般只在RAM极小时,才启用本宏。
* #define WITH_BITMAP_FONT 1
*/
@@ -21,11 +21,17 @@
*/
/**
- * 如果支持Truetype字体,请定义本宏
+ * 如果用stb支持Truetype字体,请定义本宏
*
* #define WITH_STB_FONT 1
*/
+/**
+ * 如果用freetype支持Truetype字体,请定义本宏。
+ *
+ * #define WITH_FT_FONT 1
+ */
+
/**
* 如果支持从文件系统加载资源,请定义本宏
*
@@ -37,15 +43,17 @@
*
* #define WITH_UNICODE_BREAK 1
*/
-
- /**
+
+/**
* 如果定义本宏,将图片解码成BGRA8888格式,否则解码成RGBA8888的格式。
+ * 当硬件的2D加速需要BGRA格式时,请启用本宏。
*
* #define WITH_BITMAP_BGRA 1
*/
/**
* 如果定义本宏,将不透明的PNG图片解码成BGR565格式,建议定义。
+ * 另外和LCD的格式保存一致,可以大幅度提高性能。
*
* #define WITH_BITMAP_BGR565 1
*/
@@ -57,15 +65,21 @@
*/
/**
- * 如果支持极速模式,请定义本宏。极速模式不支持控件透明半透明效果,只有在CPU配置极低时启用。
+ * 如果有标准的malloc/free/calloc等函数,请定义本宏
*
- * #define USE_FAST_MODE 1
+ * #define HAS_STD_MALLOC 1
*/
/**
- * 如果有标准的malloc/free/calloc等函数,请定义本宏
+ * 如果有标准的fopen/fclose等函数,请定义本宏
*
- * #define HAS_STD_MALLOC 1
+ * #define HAS_STDIO 1
+ */
+
+/**
+ * 如果有标准的pthread等函数,请定义本宏
+ *
+ * #define HAS_PTHREAD 1
*/
/**
@@ -73,8 +87,8 @@
*
* #define HAS_FAST_MEMCPY 1
*/
-
- /**
+
+/**
* 如果出现wcsxxx之类的函数没有定义时,请定义该宏
*
* #define WITH_WCSXXX 1
@@ -93,17 +107,53 @@
*/
/**
- * 如果启用VGCANVAS,而且没有OpenGL硬件加速,请定义本宏
+ * 在没有GPU时,如果启用agge作为nanovg的后端(较agg作为后端:小,快,图形质量稍差),请定义本宏。
*
* #define WITH_NANOVG_AGGE 1
*/
/**
- * 如果启用VGCANVAS,请定义本宏
+ * 在没有GPU时,如果启用agg作为nanovg的后端(较agge作为后端:大,慢,图形质量好),请定义本宏。
+ * 注意:agg是以GPL协议开源。
+ *
+ * #define WITH_NANOVG_AGG 1
+ */
+
+/**
+ * 如果启用鼠标指针,请定义本宏
*
- * #define WITH_VGCANVAS 1
+ * #define ENABLE_CURSOR 1
*/
+/**
+ * 对于低端平台,如果不使用控件动画,请定义本宏。
+ *
+ * #define WITHOUT_WIDGET_ANIMATORS 1
+ */
+
+/**
+ * 对于低端平台,如果不使用窗口动画,请定义本宏。
+ *
+ * #define WITHOUT_WINDOW_ANIMATORS 1
+ */
+
+/**
+ * 对于低端平台,如果不使用对话框高亮策略,请定义本宏。
+ *
+ * #define WITHOUT_DIALOG_HIGHLIGHTER 1
+ */
+
+/**
+ * 对于低端平台,如果不使用扩展控件,请定义本宏。
+ *
+ * #define WITHOUT_EXT_WIDGETS 1
+ */
+
+/**
+ * 对于低端平台,如果内存不足以提供完整的FrameBuffer,请定义本宏启用局部FrameBuffer,可大幅度提高渲染性能。
+ *
+ * #define FRAGMENT_FRAME_BUFFER_SIZE 32 * 1024
+ */
```
> 请参考:src/base/awtk\_config\_sample.h
diff --git a/src/awtk_ext_widgets.h b/src/awtk_ext_widgets.h
index 5c2473a564..0f6f5dc353 100644
--- a/src/awtk_ext_widgets.h
+++ b/src/awtk_ext_widgets.h
@@ -51,6 +51,7 @@
#include "combo_box_ex/combo_box_ex.h"
#include "mledit/line_number.h"
#include "mledit/mledit.h"
+#include "features/draggable.h"
#include "ext_widgets/ext_widgets.h"
diff --git a/src/base/assets_manager.c b/src/base/assets_manager.c
index cf4ae9ce7c..1fdf8ba1a3 100644
--- a/src/base/assets_manager.c
+++ b/src/base/assets_manager.c
@@ -27,6 +27,7 @@
#include "base/system_info.h"
#include "base/assets_manager.h"
+#define RAW_DIR "raw"
#define ASSETS_DIR "assets"
#define THEME_DEFAULT "default"
@@ -131,48 +132,103 @@ static asset_info_t* load_asset(uint16_t type, uint16_t subtype, const char* pat
}
#endif /*WITH_SDL*/
-static ret_t build_path(assets_manager_t* am, char* path, uint32_t size, bool_t ratio_sensitive,
- const char* subpath, const char* name, const char* extname) {
+static ret_t build_asset_dir_one_theme(char* path, uint32_t size, const char* res_root,
+ const char* theme, const char* ratio, const char* subpath) {
+ if (ratio != NULL) {
+ return_value_if_fail(path_build(path, size, res_root, ASSETS_DIR, theme, RAW_DIR, subpath,
+ ratio, NULL) == RET_OK,
+ RET_FAIL);
+ } else {
+ return_value_if_fail(
+ path_build(path, size, res_root, ASSETS_DIR, theme, RAW_DIR, subpath, NULL) == RET_OK,
+ RET_FAIL);
+ }
+
+ return RET_OK;
+}
+
+static ret_t build_asset_filename_one_theme(char* path, uint32_t size, const char* res_root,
+ const char* theme, const char* ratio,
+ const char* subpath, const char* name,
+ const char* extname) {
+ char sep[2] = {TK_PATH_SEP, 0};
+
+ return_value_if_fail(
+ build_asset_dir_one_theme(path, size, res_root, theme, ratio, subpath) == RET_OK, RET_FAIL);
+ return_value_if_fail(tk_str_append(path, size, sep) == RET_OK, RET_FAIL);
+ return_value_if_fail(tk_str_append(path, size, name) == RET_OK, RET_FAIL);
+ return_value_if_fail(tk_str_append(path, size, extname) == RET_OK, RET_FAIL);
+
+ return RET_OK;
+}
+
+static ret_t build_asset_filename_custom(assets_manager_t* am, char* path, uint32_t size,
+ const char* theme, const char* ratio, const char* subpath,
+ const char* name, const char* extname) {
+ if (am->custom_build_asset_dir != NULL) {
+ char sep[2] = {TK_PATH_SEP, 0};
+ return_value_if_fail(am->custom_build_asset_dir(am->custom_build_asset_dir_ctx, path, size,
+ theme, ratio, subpath) == RET_OK,
+ RET_FAIL);
+ return_value_if_fail(tk_str_append(path, size, sep) == RET_OK, RET_FAIL);
+ return_value_if_fail(tk_str_append(path, size, name) == RET_OK, RET_FAIL);
+ return_value_if_fail(tk_str_append(path, size, extname) == RET_OK, RET_FAIL);
+
+ return RET_OK;
+ }
+
+ return RET_FAIL;
+}
+
+static ret_t build_asset_filename_default(char* path, uint32_t size, const char* res_root,
+ const char* theme, const char* ratio, const char* subpath,
+ const char* name, const char* extname) {
+ return_value_if_fail(build_asset_filename_one_theme(path, size, res_root, theme, ratio, subpath,
+ name, extname) == RET_OK,
+ RET_FAIL);
+
+ if (!file_exist(path) && !tk_str_eq(theme, THEME_DEFAULT)) {
+ return_value_if_fail(build_asset_filename_one_theme(path, size, res_root, THEME_DEFAULT, ratio,
+ subpath, name, extname) == RET_OK,
+ RET_FAIL);
+ }
+
+ return RET_OK;
+}
+
+static const char* device_pixel_ratio_to_str(float_t dpr) {
+ const char* ratio = "x1";
+ if (dpr >= 3) {
+ ratio = "x3";
+ } else if (dpr >= 2) {
+ ratio = "x2";
+ }
+
+ return ratio;
+}
+
+ret_t assets_manager_build_asset_filename(assets_manager_t* am, char* path, uint32_t size,
+ bool_t ratio_sensitive, const char* subpath,
+ const char* name, const char* extname) {
const char* res_root = assets_manager_get_res_root(am);
const char* theme = am->theme ? am->theme : THEME_DEFAULT;
system_info_t* sysinfo = assets_manager_get_system_info(am);
-
- float_t dpr = sysinfo->device_pixel_ratio;
+ const char* ratio = device_pixel_ratio_to_str(sysinfo->device_pixel_ratio);
if (ratio_sensitive) {
- const char* ratio = "x1";
- if (dpr >= 3) {
- ratio = "x3";
- } else if (dpr >= 2) {
- ratio = "x2";
- }
-
- return_value_if_fail(
- path_build(path, size, res_root, ASSETS_DIR, theme, subpath, ratio, name, NULL) == RET_OK,
- RET_FAIL);
- tk_str_append(path, size, extname);
- if (!file_exist(path)) {
- return_value_if_fail(path_build(path, size, res_root, ASSETS_DIR, THEME_DEFAULT, subpath,
- ratio, name, NULL) == RET_OK,
- RET_FAIL);
- tk_str_append(path, size, extname);
+ if (build_asset_filename_custom(am, path, size, theme, ratio, subpath, name, extname) ==
+ RET_OK) {
+ return RET_OK;
}
- return RET_OK;
+ return build_asset_filename_default(path, size, res_root, theme, ratio, subpath, name, extname);
} else {
- return_value_if_fail(
- path_build(path, size, res_root, ASSETS_DIR, theme, subpath, name, NULL) == RET_OK,
- RET_FAIL);
- tk_str_append(path, size, extname);
-
- if (!file_exist(path)) {
- return_value_if_fail(path_build(path, size, res_root, ASSETS_DIR, THEME_DEFAULT, subpath,
- name, NULL) == RET_OK,
- RET_FAIL);
- tk_str_append(path, size, extname);
+ if (build_asset_filename_custom(am, path, size, theme, NULL, subpath, name, extname) ==
+ RET_OK) {
+ return RET_OK;
}
- return RET_OK;
+ return build_asset_filename_default(path, size, res_root, theme, NULL, subpath, name, extname);
}
}
@@ -180,7 +236,7 @@ static asset_info_t* try_load_image(assets_manager_t* am, const char* name,
asset_image_type_t subtype, bool_t ratio) {
char path[MAX_PATH + 1];
const char* extname = NULL;
- const char* subpath = ratio ? "raw/images" : "raw/images/xx";
+ const char* subpath = ratio ? "images" : "images/xx";
switch (subtype) {
case ASSET_TYPE_IMAGE_JPG: {
@@ -201,13 +257,14 @@ static asset_info_t* try_load_image(assets_manager_t* am, const char* name,
}
case ASSET_TYPE_IMAGE_BSVG: {
extname = ".bsvg";
- subpath = "raw/images/svg";
+ subpath = "images/svg";
break;
}
default: { return NULL; }
}
- return_value_if_fail(build_path(am, path, MAX_PATH, ratio, subpath, name, extname) == RET_OK,
+ return_value_if_fail(assets_manager_build_asset_filename(am, path, MAX_PATH, ratio, subpath, name,
+ extname) == RET_OK,
NULL);
return load_asset(ASSET_TYPE_IMAGE, subtype, path, name);
@@ -219,37 +276,38 @@ static asset_info_t* try_load_assets(assets_manager_t* am, const char* name, con
const char* subpath = NULL;
switch (type) {
case ASSET_TYPE_FONT: {
- subpath = "raw/fonts";
+ subpath = "fonts";
break;
}
case ASSET_TYPE_SCRIPT: {
- subpath = "raw/scripts";
+ subpath = "scripts";
break;
}
case ASSET_TYPE_STYLE: {
- subpath = "raw/styles";
+ subpath = "styles";
break;
}
case ASSET_TYPE_STRINGS: {
- subpath = "raw/strings";
+ subpath = "strings";
break;
}
case ASSET_TYPE_UI: {
- subpath = "raw/ui";
+ subpath = "ui";
break;
}
case ASSET_TYPE_XML: {
- subpath = "raw/xml";
+ subpath = "xml";
break;
}
case ASSET_TYPE_DATA: {
- subpath = "raw/data";
+ subpath = "data";
break;
}
default: { return NULL; }
}
- return_value_if_fail(build_path(am, path, MAX_PATH, FALSE, subpath, name, extname) == RET_OK,
+ return_value_if_fail(assets_manager_build_asset_filename(am, path, MAX_PATH, FALSE, subpath, name,
+ extname) == RET_OK,
NULL);
return load_asset(type, subtype, path, name);
@@ -638,6 +696,15 @@ ret_t assets_manager_deinit(assets_manager_t* am) {
return RET_OK;
}
+ret_t assets_manager_set_custom_build_asset_dir(
+ assets_manager_t* am, assets_manager_build_asset_dir_t custom_build_asset_dir, void* ctx) {
+ return_value_if_fail(am != NULL, RET_BAD_PARAMS);
+ am->custom_build_asset_dir_ctx = ctx;
+ am->custom_build_asset_dir = custom_build_asset_dir;
+
+ return RET_OK;
+}
+
ret_t assets_manager_destroy(assets_manager_t* am) {
return_value_if_fail(am != NULL, RET_BAD_PARAMS);
assets_manager_deinit(am);
diff --git a/src/base/assets_manager.h b/src/base/assets_manager.h
index fa86d400cb..dd4d3591b1 100644
--- a/src/base/assets_manager.h
+++ b/src/base/assets_manager.h
@@ -28,6 +28,10 @@
BEGIN_C_DECLS
+typedef ret_t (*assets_manager_build_asset_dir_t)(void* ctx, char* path, uint32_t size,
+ const char* theme, const char* ratio,
+ const char* subpath);
+
/**
* @class assets_manager_t
* @annotation ["scriptable"]
@@ -66,10 +70,12 @@ struct _assets_manager_t {
darray_t assets;
/*private*/
- char* res_root;
char* theme;
+ char* res_root;
locale_info_t* locale_info;
system_info_t* system_info;
+ void* custom_build_asset_dir_ctx;
+ assets_manager_build_asset_dir_t custom_build_asset_dir;
};
/**
@@ -219,6 +225,22 @@ asset_info_t* assets_manager_load(assets_manager_t* am, asset_type_t type, const
*/
ret_t assets_manager_preload(assets_manager_t* am, asset_type_t type, const char* name);
+/**
+ * @method assets_manager_set_custom_build_asset_dir
+ * 设置一个函数,该函数用于生成资源路径。
+ *
+ * >
+ * 有时我们需要优先加载用户自定义的资源,加载失败才加载系统缺省的,可用设置一个函数去实现这类功能。
+ *
+ * @param {assets_manager_t*} am asset manager对象。
+ * @param {assets_manager_build_asset_dir_t} custom_build_asset_dir 回调函数。
+ * @param {void*} ctx 回调函数的上下文。
+ *
+ * @return {ret_t} 返回RET_OK表示成功,否则表示失败。
+ */
+ret_t assets_manager_set_custom_build_asset_dir(
+ assets_manager_t* am, assets_manager_build_asset_dir_t custom_build_asset_dir, void* ctx);
+
/**
* @method assets_manager_clear_cache
* 清除指定类型的缓存。
diff --git a/src/base/awtk_config_sample.h b/src/base/awtk_config_sample.h
index 682cdf6c11..7dea46b360 100644
--- a/src/base/awtk_config_sample.h
+++ b/src/base/awtk_config_sample.h
@@ -30,7 +30,7 @@
*/
/**
- * 如果需要支持预先解码的图片,请定义本宏。一般只在RAM极小时,才启用本宏。
+ * 如果需要支持预先解码的位图字体,请定义本宏。一般只在RAM极小时,才启用本宏。
* #define WITH_BITMAP_FONT 1
*/
@@ -66,12 +66,14 @@
/**
* 如果定义本宏,将图片解码成BGRA8888格式,否则解码成RGBA8888的格式。
+ * 当硬件的2D加速需要BGRA格式时,请启用本宏。
*
* #define WITH_BITMAP_BGRA 1
*/
/**
* 如果定义本宏,将不透明的PNG图片解码成BGR565格式,建议定义。
+ * 另外和LCD的格式保存一致,可以大幅度提高性能。
*
* #define WITH_BITMAP_BGR565 1
*/
@@ -82,12 +84,6 @@
* #define WITH_NULL_IM 1
*/
-/**
- * 如果支持极速模式,请定义本宏。极速模式不支持控件透明半透明效果,只有在CPU配置极低时启用。
- *
- * #define USE_FAST_MODE 1
- */
-
/**
* 如果有标准的malloc/free/calloc等函数,请定义本宏
*
@@ -144,24 +140,39 @@
*/
/**
- * 如果启用内存泄露检查(内存小余1M慎用),请定义本宏。
- * 可以重新定义MEM_MAX_RECORDS限制最大记录数量。
+ * 如果启用鼠标指针,请定义本宏
*
- * #define ENABLE_MEM_LEAK_CHECK 1
- * #define MEM_MAX_RECORDS 4 * 1024
+ * #define ENABLE_CURSOR 1
*/
/**
- * 如果启用鼠标指针,请定义本宏
+ * 对于低端平台,如果不使用控件动画,请定义本宏。
*
- * #define ENABLE_CURSOR 1
+ * #define WITHOUT_WIDGET_ANIMATORS 1
+ */
+
+/**
+ * 对于低端平台,如果不使用窗口动画,请定义本宏。
+ *
+ * #define WITHOUT_WINDOW_ANIMATORS 1
+ */
+
+/**
+ * 对于低端平台,如果不使用对话框高亮策略,请定义本宏。
+ *
+ * #define WITHOUT_DIALOG_HIGHLIGHTER 1
+ */
+
+/**
+ * 对于低端平台,如果不使用扩展控件,请定义本宏。
+ *
+ * #define WITHOUT_EXT_WIDGETS 1
*/
/**
- * 如果启用控件缓存,请定义本宏
- * 缓存内存占用约:200 * WITH_WIDGET_POOL
+ * 对于低端平台,如果内存不足以提供完整的FrameBuffer,请定义本宏启用局部FrameBuffer,可大幅度提高渲染性能。
*
- * #define WITH_WIDGET_POOL 1000
+ * #define FRAGMENT_FRAME_BUFFER_SIZE 32 * 1024
*/
#endif /*AWTK_CONFIG_H*/
diff --git a/src/base/dialog.h b/src/base/dialog.h
index 3268258a7c..ddce246b13 100644
--- a/src/base/dialog.h
+++ b/src/base/dialog.h
@@ -110,7 +110,7 @@ BEGIN_C_DECLS
* ```
*
* > 更多用法请参考:
- * [dialog.xml](https://github.com/zlgopen/awtk/blob/master/demos/assets/raw/ui/)
+ * [dialog.xml](https://github.com/zlgopen/awtk/blob/master/demos/assets/default/raw/ui/)
*
* > 完整C代码示例请参考:
*
@@ -128,7 +128,7 @@ BEGIN_C_DECLS
*
* > 更多用法请参考:
* [theme default]
- * (https://github.com/zlgopen/awtk/blob/master/demos/assets/raw/styles/default.xml#L324)
+ * (https://github.com/zlgopen/awtk/blob/master/demos/assets/default/raw/styles/default.xml#L324)
*
*/
typedef struct _dialog_t {
diff --git a/src/base/font.h b/src/base/font.h
index 296630b542..088b7b7819 100644
--- a/src/base/font.h
+++ b/src/base/font.h
@@ -156,6 +156,7 @@ struct _font_t {
font_get_baseline_t get_baseline;
font_get_glyph_t get_glyph;
font_destroy_t destroy;
+ const char* desc;
};
/**
diff --git a/src/base/image_base.h b/src/base/image_base.h
index 793b9e5f3c..d7a86e2f7f 100644
--- a/src/base/image_base.h
+++ b/src/base/image_base.h
@@ -47,9 +47,9 @@ BEGIN_C_DECLS
* 如果需要显示文件系统中的图片,只需将图片名称换成实际的文件名,并加上"file://"前缀即可。如:
*
*```
- *
- *
- *
+ *
+ *
+ *
* ```
*/
typedef struct _image_base_t {
diff --git a/src/base/input_method.h b/src/base/input_method.h
index f1c72f33dc..7e193cfe91 100644
--- a/src/base/input_method.h
+++ b/src/base/input_method.h
@@ -212,6 +212,13 @@ struct _input_method_t {
*/
int32_t win_delta_y;
+ /**
+ * @property {int32_t} win_old_y
+ * @annotation ["private"]
+ * 窗口原来的位置。
+ */
+ int32_t win_old_y;
+
/**
* @property {bool_t} action_button_enable
* @annotation ["readable"]
diff --git a/src/base/lcd.c b/src/base/lcd.c
index 5ce1d80ea5..17d47ef0db 100755
--- a/src/base/lcd.c
+++ b/src/base/lcd.c
@@ -266,9 +266,13 @@ ret_t lcd_destroy(lcd_t* lcd) {
}
vgcanvas_t* lcd_get_vgcanvas(lcd_t* lcd) {
- return_value_if_fail(lcd != NULL && lcd->get_vgcanvas != NULL, NULL);
+ return_value_if_fail(lcd != NULL, NULL);
- return lcd->get_vgcanvas(lcd);
+ if (lcd->get_vgcanvas != NULL) {
+ return lcd->get_vgcanvas(lcd);
+ }
+
+ return NULL;
}
ret_t lcd_take_snapshot(lcd_t* lcd, bitmap_t* img, bool_t auto_rotate) {
diff --git a/src/base/line_break.c b/src/base/line_break.c
index 6a083cbabb..94bd1cd112 100644
--- a/src/base/line_break.c
+++ b/src/base/line_break.c
@@ -1,4 +1,4 @@
-/**
+/**
* File: line_break.c
* Author: AWTK Develop Team
* Brief: line break and work break algorithm.
@@ -23,8 +23,8 @@
#ifdef WITH_UNICODE_BREAK
-#include "linebreak.h"
-#include "wordbreak.h"
+#include "libunibreak/linebreak.h"
+#include "libunibreak/wordbreak.h"
break_type_t line_break_check(wchar_t c1, wchar_t c2) {
int ret = 0;
diff --git a/src/base/pixel.h b/src/base/pixel.h
index deeaac8bab..b52c865b29 100644
--- a/src/base/pixel.h
+++ b/src/base/pixel.h
@@ -287,7 +287,7 @@ static inline void pixel_argb8888_blend_rgba_premulti(void* pixel, rgba_t rgba)
p[3] = ((p[3] * a) >> 8) + rgba.b;
}
-#define color_to_mono(c) (((c).rgba.r) & 0x01)
+#define color_to_mono(c) (((c).rgba.r))
#define color_from_mono(p) color_init(p, 0, 0, 0xff)
#pragma pack(pop)
diff --git a/src/base/types_def.h b/src/base/types_def.h
index ca27f549c5..a399aa9608 100644
--- a/src/base/types_def.h
+++ b/src/base/types_def.h
@@ -320,10 +320,7 @@ typedef struct _system_info_t system_info_t;
#endif /*WITH_STB_FONT or WITH_FT_FONT*/
#if defined(WITH_LCD_MONO)
-#undef WITH_FS_RES
#undef WITH_VGCANVAS
-#undef WITH_STB_IMAGE
-#undef WITH_TRUETYPE_FONT
#undef WITH_WINDOW_ANIMATORS
#define WITH_BITMAP_FONT 1
#endif /*WITH_LCD_MONO*/
diff --git a/src/base/widget.c b/src/base/widget.c
index f9443cce55..50de5c294a 100644
--- a/src/base/widget.c
+++ b/src/base/widget.c
@@ -397,11 +397,11 @@ ret_t widget_set_theme(widget_t* widget, const char* name) {
return_value_if_fail(am != NULL && name != NULL, RET_BAD_PARAMS);
- vgcanvas_reset(vgcanvas);
font_manager_unload_all(fm);
image_manager_unload_all(imm);
locale_info_reload(locale_info);
assets_manager_set_theme(am, name);
+ widget_reset_canvas(widget);
info = assets_manager_ref(am, ASSET_TYPE_STYLE, "default");
theme_init(theme(), info->data);
@@ -675,6 +675,10 @@ ret_t widget_add_child(widget_t* widget, widget_t* child) {
}
}
+ if (child->vt->on_attach_parent) {
+ child->vt->on_attach_parent(child, widget);
+ }
+
ENSURE(darray_push(widget->children, child) == RET_OK);
if (!(child->initializing) && widget_get_window(child) != NULL) {
@@ -712,6 +716,10 @@ ret_t widget_remove_child(widget_t* widget, widget_t* child) {
}
}
+ if (child->vt->on_detach_parent) {
+ child->vt->on_detach_parent(child, widget);
+ }
+
child->parent = NULL;
return darray_remove(widget->children, child);
}
@@ -932,13 +940,18 @@ ret_t widget_dispatch(widget_t* widget, event_t* e) {
return ret;
}
-int32_t widget_on(widget_t* widget, uint32_t type, event_func_t on_event, void* ctx) {
+int32_t widget_on_with_tag(widget_t* widget, uint32_t type, event_func_t on_event, void* ctx,
+ uint32_t tag) {
return_value_if_fail(widget != NULL && on_event != NULL, RET_BAD_PARAMS);
if (widget->emitter == NULL) {
widget->emitter = emitter_create();
}
- return emitter_on(widget->emitter, type, on_event, ctx);
+ return emitter_on_with_tag(widget->emitter, type, on_event, ctx, tag);
+}
+
+int32_t widget_on(widget_t* widget, uint32_t type, event_func_t on_event, void* ctx) {
+ return widget_on_with_tag(widget, type, on_event, ctx, 0);
}
int32_t widget_child_on(widget_t* widget, const char* name, uint32_t type, event_func_t on_event,
@@ -953,6 +966,20 @@ ret_t widget_off(widget_t* widget, int32_t id) {
return emitter_off(widget->emitter, id);
}
+ret_t widget_off_by_tag(widget_t* widget, uint32_t tag) {
+ return_value_if_fail(widget != NULL, RET_BAD_PARAMS);
+ return_value_if_fail(widget->emitter != NULL, RET_BAD_PARAMS);
+
+ return emitter_off_by_tag(widget->emitter, tag);
+}
+
+ret_t widget_off_by_ctx(widget_t* widget, void* ctx) {
+ return_value_if_fail(widget != NULL, RET_BAD_PARAMS);
+ return_value_if_fail(widget->emitter != NULL, RET_BAD_PARAMS);
+
+ return emitter_off_by_ctx(widget->emitter, ctx);
+}
+
ret_t widget_off_by_func(widget_t* widget, uint32_t type, event_func_t on_event, void* ctx) {
return_value_if_fail(widget != NULL && on_event != NULL, RET_BAD_PARAMS);
return_value_if_fail(widget->emitter != NULL, RET_BAD_PARAMS);
@@ -3159,7 +3186,8 @@ canvas_t* widget_get_canvas(widget_t* widget) {
}
bool_t widget_is_system_bar(widget_t* widget) {
- return tk_str_eq(widget->vt->type, WIDGET_TYPE_SYSTEM_BAR);
+ return tk_str_eq(widget->vt->type, WIDGET_TYPE_SYSTEM_BAR) ||
+ tk_str_eq(widget->vt->type, WIDGET_TYPE_SYSTEM_BAR_BOTTOM);
}
bool_t widget_is_normal_window(widget_t* widget) {
@@ -3177,7 +3205,7 @@ bool_t widget_is_popup(widget_t* widget) {
ret_t widget_reset_canvas(widget_t* widget) {
widget_t* win = widget_get_window(widget);
return_value_if_fail(win != NULL, RET_BAD_PARAMS);
+ canvas_t* c = widget_get_canvas(win);
- return object_exec(OBJECT(widget_get_prop_pointer(win, WIDGET_PROP_NATIVE_WINDOW)),
- "reset_canvas", "");
+ return vgcanvas_reset(canvas_get_vgcanvas(c));
}
diff --git a/src/base/widget.h b/src/base/widget.h
index 58ebef854f..19b0391fa0 100644
--- a/src/base/widget.h
+++ b/src/base/widget.h
@@ -66,6 +66,8 @@ typedef ret_t (*widget_on_pointer_move_t)(widget_t* widget, pointer_event_t* e);
typedef ret_t (*widget_on_pointer_up_t)(widget_t* widget, pointer_event_t* e);
typedef ret_t (*widget_on_add_child_t)(widget_t* widget, widget_t* child);
typedef ret_t (*widget_on_remove_child_t)(widget_t* widget, widget_t* child);
+typedef ret_t (*widget_on_attach_parent)(widget_t* widget, widget_t* parent);
+typedef ret_t (*widget_on_detach_parent)(widget_t* widget, widget_t* parent);
typedef ret_t (*widget_on_layout_children_t)(widget_t* widget);
typedef ret_t (*widget_get_prop_t)(widget_t* widget, const char* name, value_t* v);
typedef ret_t (*widget_get_prop_default_value_t)(widget_t* widget, const char* name, value_t* v);
@@ -157,6 +159,8 @@ struct _widget_vtable_t {
widget_invalidate_t invalidate;
widget_on_add_child_t on_add_child;
widget_on_remove_child_t on_remove_child;
+ widget_on_attach_parent on_attach_parent;
+ widget_on_detach_parent on_detach_parent;
widget_on_event_t on_event;
widget_on_event_before_children_t on_event_before_children;
widget_find_target_t find_target;
@@ -1143,6 +1147,24 @@ ret_t widget_set_sensitive(widget_t* widget, bool_t sensitive);
*/
int32_t widget_on(widget_t* widget, uint32_t type, event_func_t on_event, void* ctx);
+/**
+ * @method widget_on_with_tag
+ * 注册指定tag的事件处理函数。
+ *
+ * > 注册时指定一个tag,可用widget\_off\_by\_tag注销相同tag的事件处理函数。
+ *
+ * @annotation ["scriptable:custom"]
+ * @param {widget_t*} widget 控件对象。
+ * @param {uint32_t} type 事件类型。
+ * @param {event_func_t} on_event 事件处理函数。
+ * @param {void*} ctx 事件处理函数上下文。
+ * @param {uint32_t} tag tag。
+ *
+ * @return {int32_t} 返回id,用于widget_off。
+ */
+int32_t widget_on_with_tag(widget_t* widget, uint32_t type, event_func_t on_event, void* ctx,
+ uint32_t tag);
+
/**
* @method widget_off
* 注销指定事件的处理函数。
@@ -1171,8 +1193,7 @@ int32_t widget_child_on(widget_t* widget, const char* name, uint32_t type, event
/**
* @method widget_off_by_func
- * 注销指定事件的处理函数。
- * 仅用于辅助实现脚本绑定。
+ * 注销指定函数的事件处理函数。
* @param {widget_t*} widget 控件对象。
* @param {uint32_t} type 事件类型。
* @param {event_func_t} on_event 事件处理函数。
@@ -1182,6 +1203,26 @@ int32_t widget_child_on(widget_t* widget, const char* name, uint32_t type, event
*/
ret_t widget_off_by_func(widget_t* widget, uint32_t type, event_func_t on_event, void* ctx);
+/**
+ * @method widget_off_by_ctx
+ * 注销指定ctx的事件处理函数。
+ * @param {widget_t*} widget 控件对象。
+ * @param {void*} ctx 事件处理函数上下文。
+ *
+ * @return {ret_t} 返回RET_OK表示成功,否则表示失败。
+ */
+ret_t widget_off_by_ctx(widget_t* widget, void* ctx);
+
+/**
+ * @method widget_off_by_tag
+ * 注销指定tag的事件处理函数。
+ * @param {widget_t*} widget 控件对象。
+ * @param {uint32_t} tag tag。
+ *
+ * @return {ret_t} 返回RET_OK表示成功,否则表示失败。
+ */
+ret_t widget_off_by_tag(widget_t* widget, uint32_t tag);
+
/**
* @method widget_invalidate
* 请求重绘指定的区域,如果widget->dirty已经为TRUE,直接返回。
diff --git a/src/base/widget_consts.h b/src/base/widget_consts.h
index 9569a06557..155b250790 100644
--- a/src/base/widget_consts.h
+++ b/src/base/widget_consts.h
@@ -786,6 +786,12 @@ BEGIN_C_DECLS
*/
#define WIDGET_TYPE_SYSTEM_BAR "system_bar"
+/**
+ * @const WIDGET_TYPE_SYSTEM_BAR_BOTTOM
+ * system bar window ato bottom
+ */
+#define WIDGET_TYPE_SYSTEM_BAR_BOTTOM "system_bar_bottom"
+
/**
* @const WIDGET_TYPE_SPRITE
* 精灵窗口。
diff --git a/src/base/window.h b/src/base/window.h
index 3d392252ee..06f3be9238 100644
--- a/src/base/window.h
+++ b/src/base/window.h
@@ -45,7 +45,7 @@ BEGIN_C_DECLS
* ```
*
* >
- * 更多用法请参考:[window.xml](https://github.com/zlgopen/awtk/blob/master/demos/assets/raw/ui/)
+ * 更多用法请参考:[window.xml](https://github.com/zlgopen/awtk/blob/master/demos/assets/default/raw/ui/)
*
* 在c代码中使用函数window\_create创建窗口。如:
*
@@ -67,7 +67,7 @@ BEGIN_C_DECLS
* ```
*
* > 更多用法请参考:[theme
- * default](https://github.com/zlgopen/awtk/blob/master/demos/assets/raw/styles/default.xml#L0)
+ * default](https://github.com/zlgopen/awtk/blob/master/demos/assets/default/raw/styles/default.xml#L0)
*/
typedef struct _window_t {
window_base_t window;
diff --git a/src/ext_widgets/canvas_widget/canvas_widget.h b/src/ext_widgets/canvas_widget/canvas_widget.h
index fa448e5556..13eb6446f4 100644
--- a/src/ext_widgets/canvas_widget/canvas_widget.h
+++ b/src/ext_widgets/canvas_widget/canvas_widget.h
@@ -43,7 +43,7 @@ BEGIN_C_DECLS
* ```
*
* > 更多用法请参考:
- * [canvas_widget.xml](https://github.com/zlgopen/awtk/blob/master/demos/assets/raw/ui/vgcanvas.xml)
+ * [canvas_widget.xml](https://github.com/zlgopen/awtk/blob/master/demos/assets/default/raw/ui/vgcanvas.xml)
*
* 在c代码中使用函数canvas\_widget\_create创建画布控件。如:
*
diff --git a/src/ext_widgets/color_picker/color_picker.h b/src/ext_widgets/color_picker/color_picker.h
index ec3df84828..b8852e5fd3 100644
--- a/src/ext_widgets/color_picker/color_picker.h
+++ b/src/ext_widgets/color_picker/color_picker.h
@@ -47,7 +47,7 @@ BEGIN_C_DECLS
* ```
*
* > 更多用法请参考:
- * [color\_picker](https://github.com/zlgopen/awtk/blob/master/demos/assets/raw/ui/color_picker.xml)
+ * [color\_picker](https://github.com/zlgopen/awtk/blob/master/demos/assets/default/raw/ui/color_picker.xml)
*
* 其中的子控件必须按下列规则命名:
*
diff --git a/src/ext_widgets/ext_widgets.c b/src/ext_widgets/ext_widgets.c
index f39a314cfd..55aa23e8f0 100644
--- a/src/ext_widgets/ext_widgets.c
+++ b/src/ext_widgets/ext_widgets.c
@@ -23,6 +23,7 @@
#include "switch/switch.h"
#include "guage/guage.h"
#include "mledit/mledit.h"
+#include "features/draggable.h"
#include "mledit/line_number.h"
#include "guage/guage_pointer.h"
#include "gif_image/gif_image.h"
@@ -99,6 +100,7 @@ ret_t tk_ext_widgets_init() {
widget_factory_register(f, WIDGET_TYPE_LINE_NUMBER, line_number_create);
widget_factory_register(f, WIDGET_TYPE_HSCROLL_LABEL, hscroll_label_create);
widget_factory_register(f, WIDGET_TYPE_COMBO_BOX_EX, combo_box_ex_create);
+ widget_factory_register(f, WIDGET_TYPE_DRAGGABLE, draggable_create);
children_layouter_register_ext_builtins();
diff --git a/src/ext_widgets/features/README.md b/src/ext_widgets/features/README.md
new file mode 100644
index 0000000000..4448b0fae1
--- /dev/null
+++ b/src/ext_widgets/features/README.md
@@ -0,0 +1,4 @@
+# 特性类控件
+
+特性类控件一般是给所在的容器控件加上指定的特性。比如可拖动、可点击、可选择、可调整大小和上下文帮助等。
+
diff --git a/src/ext_widgets/features/draggable.c b/src/ext_widgets/features/draggable.c
new file mode 100644
index 0000000000..9438b06a79
--- /dev/null
+++ b/src/ext_widgets/features/draggable.c
@@ -0,0 +1,312 @@
+/**
+ * File: draggable.c
+ * Author: AWTK Develop Team
+ * Brief: make parent widget or window draggable
+ *
+ * Copyright (c) 2019 - 2019 Guangzhou ZHIYUAN Electronics Co.,Ltd.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * License file for more details.
+ *
+ */
+
+/**
+ * History:
+ * ================================================================
+ * 2019-10-25 Li XianJing created
+ *
+ */
+
+#include "tkc/mem.h"
+#include "tkc/utils.h"
+#include "draggable.h"
+
+ret_t draggable_set_top(widget_t* widget, int32_t top) {
+ draggable_t* draggable = DRAGGABLE(widget);
+ return_value_if_fail(draggable != NULL, RET_BAD_PARAMS);
+
+ draggable->top = top;
+
+ return RET_OK;
+}
+
+ret_t draggable_set_bottom(widget_t* widget, int32_t bottom) {
+ draggable_t* draggable = DRAGGABLE(widget);
+ return_value_if_fail(draggable != NULL, RET_BAD_PARAMS);
+
+ draggable->bottom = bottom;
+
+ return RET_OK;
+}
+
+ret_t draggable_set_left(widget_t* widget, int32_t left) {
+ draggable_t* draggable = DRAGGABLE(widget);
+ return_value_if_fail(draggable != NULL, RET_BAD_PARAMS);
+
+ draggable->left = left;
+
+ return RET_OK;
+}
+
+ret_t draggable_set_right(widget_t* widget, int32_t right) {
+ draggable_t* draggable = DRAGGABLE(widget);
+ return_value_if_fail(draggable != NULL, RET_BAD_PARAMS);
+
+ draggable->right = right;
+
+ return RET_OK;
+}
+
+ret_t draggable_set_vertical_only(widget_t* widget, bool_t vertical_only) {
+ draggable_t* draggable = DRAGGABLE(widget);
+ return_value_if_fail(draggable != NULL, RET_BAD_PARAMS);
+
+ draggable->vertical_only = vertical_only;
+
+ return RET_OK;
+}
+
+ret_t draggable_set_horizontal_only(widget_t* widget, bool_t horizontal_only) {
+ draggable_t* draggable = DRAGGABLE(widget);
+ return_value_if_fail(draggable != NULL, RET_BAD_PARAMS);
+
+ draggable->horizontal_only = horizontal_only;
+
+ return RET_OK;
+}
+
+ret_t draggable_set_drag_window(widget_t* widget, bool_t drag_window) {
+ draggable_t* draggable = DRAGGABLE(widget);
+ return_value_if_fail(draggable != NULL, RET_BAD_PARAMS);
+
+ draggable->drag_window = drag_window;
+
+ return RET_OK;
+}
+
+static ret_t draggable_get_prop(widget_t* widget, const char* name, value_t* v) {
+ draggable_t* draggable = DRAGGABLE(widget);
+ return_value_if_fail(draggable != NULL && name != NULL && v != NULL, RET_BAD_PARAMS);
+
+ if (tk_str_eq(DRAGGABLE_PROP_TOP, name)) {
+ value_set_int32(v, draggable->top);
+ return RET_OK;
+ } else if (tk_str_eq(DRAGGABLE_PROP_BOTTOM, name)) {
+ value_set_int32(v, draggable->bottom);
+ return RET_OK;
+ } else if (tk_str_eq(DRAGGABLE_PROP_LEFT, name)) {
+ value_set_int32(v, draggable->left);
+ return RET_OK;
+ } else if (tk_str_eq(DRAGGABLE_PROP_RIGHT, name)) {
+ value_set_int32(v, draggable->right);
+ return RET_OK;
+ } else if (tk_str_eq(DRAGGABLE_PROP_VERTICAL_ONLY, name)) {
+ value_set_bool(v, draggable->vertical_only);
+ return RET_OK;
+ } else if (tk_str_eq(DRAGGABLE_PROP_HORIZONTAL_ONLY, name)) {
+ value_set_bool(v, draggable->horizontal_only);
+ return RET_OK;
+ } else if (tk_str_eq(DRAGGABLE_PROP_DRAG_WINDOW, name)) {
+ value_set_bool(v, draggable->drag_window);
+ return RET_OK;
+ }
+
+ return RET_NOT_FOUND;
+}
+
+static ret_t draggable_set_prop(widget_t* widget, const char* name, const value_t* v) {
+ draggable_t* draggable = DRAGGABLE(widget);
+ return_value_if_fail(widget != NULL && name != NULL && v != NULL, RET_BAD_PARAMS);
+
+ if (tk_str_eq(DRAGGABLE_PROP_TOP, name)) {
+ draggable_set_top(widget, value_int32(v));
+ return RET_OK;
+ } else if (tk_str_eq(DRAGGABLE_PROP_BOTTOM, name)) {
+ draggable_set_bottom(widget, value_int32(v));
+ return RET_OK;
+ } else if (tk_str_eq(DRAGGABLE_PROP_LEFT, name)) {
+ draggable_set_left(widget, value_int32(v));
+ return RET_OK;
+ } else if (tk_str_eq(DRAGGABLE_PROP_RIGHT, name)) {
+ draggable_set_right(widget, value_int32(v));
+ return RET_OK;
+ } else if (tk_str_eq(DRAGGABLE_PROP_VERTICAL_ONLY, name)) {
+ draggable_set_vertical_only(widget, value_bool(v));
+ return RET_OK;
+ } else if (tk_str_eq(DRAGGABLE_PROP_HORIZONTAL_ONLY, name)) {
+ draggable_set_horizontal_only(widget, value_bool(v));
+ return RET_OK;
+ } else if (tk_str_eq(DRAGGABLE_PROP_DRAG_WINDOW, name)) {
+ draggable_set_drag_window(widget, value_bool(v));
+ return RET_OK;
+ }
+
+ return RET_NOT_FOUND;
+}
+
+static ret_t draggable_on_destroy(widget_t* widget) {
+ draggable_t* draggable = DRAGGABLE(widget);
+ return_value_if_fail(widget != NULL && draggable != NULL, RET_BAD_PARAMS);
+
+ (void)draggable;
+
+ return RET_OK;
+}
+
+static ret_t draggable_on_paint_self(widget_t* widget, canvas_t* c) {
+ return RET_OK;
+}
+
+static ret_t draggable_on_parent_pointer_down(void* ctx, event_t* e) {
+ widget_t* widget = WIDGET(ctx);
+ pointer_event_t* evt = (pointer_event_t*)e;
+ draggable_t* draggable = DRAGGABLE(widget);
+ widget_t* target = draggable->drag_window ? widget_get_window(widget) : widget->parent;
+
+ draggable->down.x = evt->x;
+ draggable->down.y = evt->y;
+ draggable->saved_position.x = target->x;
+ draggable->saved_position.y = target->y;
+
+ widget_grab(widget->parent->parent, widget->parent);
+
+ return RET_OK;
+}
+
+static ret_t draggable_move_target(widget_t* widget, xy_t x, xy_t y) {
+ draggable_t* draggable = DRAGGABLE(widget);
+ widget_t* target = draggable->drag_window ? widget_get_window(widget) : widget->parent;
+
+ xy_t min_x = draggable->left != DRAGGABLE_UNSPECIFIED_NUM ? draggable->left : 0;
+ xy_t min_y = draggable->top != DRAGGABLE_UNSPECIFIED_NUM ? draggable->top : 0;
+ xy_t max_x =
+ (draggable->right != DRAGGABLE_UNSPECIFIED_NUM ? draggable->right : target->parent->w) -
+ target->w;
+ xy_t max_y =
+ (draggable->bottom != DRAGGABLE_UNSPECIFIED_NUM ? draggable->bottom : target->parent->h) -
+ target->h;
+
+ x = tk_clampi(x, min_x, max_x);
+ y = tk_clampi(y, min_y, max_y);
+
+ widget_move(target, x, y);
+
+ return RET_OK;
+}
+
+static ret_t draggable_on_parent_pointer_move(void* ctx, event_t* e) {
+ xy_t x = 0;
+ xy_t y = 0;
+ widget_t* widget = WIDGET(ctx);
+ pointer_event_t* evt = (pointer_event_t*)e;
+ draggable_t* draggable = DRAGGABLE(widget);
+ xy_t dx = evt->x - draggable->down.x;
+ xy_t dy = evt->y - draggable->down.y;
+
+ x = draggable->saved_position.x + (draggable->vertical_only ? 0 : dx);
+ y = draggable->saved_position.y + (draggable->horizontal_only ? 0 : dy);
+
+ if (!evt->pressed) {
+ return RET_OK;
+ }
+
+ draggable_move_target(widget, x, y);
+
+ return RET_OK;
+}
+
+static ret_t draggable_on_parent_pointer_up(void* ctx, event_t* e) {
+ widget_t* widget = WIDGET(ctx);
+ draggable_t* draggable = DRAGGABLE(widget);
+ widget_t* target = draggable->drag_window ? widget_get_window(widget) : widget->parent;
+ int32_t dx = target->x - draggable->saved_position.x;
+ int32_t dy = target->y - draggable->saved_position.y;
+
+ if (tk_abs(dx) > 5 || tk_abs(dy) > 5) {
+ pointer_event_t abort;
+ pointer_event_init(&abort, EVT_POINTER_DOWN_ABORT, NULL, 0, 0);
+ widget_dispatch(widget->parent, (event_t*)&abort);
+ }
+
+ widget_ungrab(widget->parent->parent, widget->parent);
+
+ return RET_OK;
+}
+
+static ret_t draggable_on_attach_parent(widget_t* widget, widget_t* parent) {
+ draggable_t* draggable = DRAGGABLE(widget);
+
+ widget_on(parent, EVT_POINTER_DOWN_BEFORE_CHILDREN, draggable_on_parent_pointer_down, draggable);
+ widget_on(parent, EVT_POINTER_MOVE_BEFORE_CHILDREN, draggable_on_parent_pointer_move, draggable);
+ widget_on(parent, EVT_POINTER_UP_BEFORE_CHILDREN, draggable_on_parent_pointer_up, draggable);
+
+ return RET_OK;
+}
+
+static ret_t draggable_on_detach_parent(widget_t* widget, widget_t* parent) {
+ draggable_t* draggable = DRAGGABLE(widget);
+
+ widget_off_by_ctx(parent, widget);
+
+ return RET_OK;
+}
+
+static ret_t draggable_on_event(widget_t* widget, event_t* e) {
+ draggable_t* draggable = DRAGGABLE(widget);
+ return_value_if_fail(widget != NULL && draggable != NULL, RET_BAD_PARAMS);
+
+ (void)draggable;
+
+ return RET_OK;
+}
+
+const char* s_draggable_properties[] = {
+ DRAGGABLE_PROP_TOP, DRAGGABLE_PROP_BOTTOM,
+ DRAGGABLE_PROP_LEFT, DRAGGABLE_PROP_RIGHT,
+ DRAGGABLE_PROP_VERTICAL_ONLY, DRAGGABLE_PROP_HORIZONTAL_ONLY,
+ DRAGGABLE_PROP_DRAG_WINDOW, NULL};
+
+TK_DECL_VTABLE(draggable) = {.size = sizeof(draggable_t),
+ .type = WIDGET_TYPE_DRAGGABLE,
+ .clone_properties = s_draggable_properties,
+ .persistent_properties = s_draggable_properties,
+ .parent = TK_PARENT_VTABLE(widget),
+ .create = draggable_create,
+ .on_paint_self = draggable_on_paint_self,
+ .set_prop = draggable_set_prop,
+ .get_prop = draggable_get_prop,
+ .on_event = draggable_on_event,
+ .on_attach_parent = draggable_on_attach_parent,
+ .on_detach_parent = draggable_on_detach_parent,
+ .on_destroy = draggable_on_destroy};
+
+widget_t* draggable_create(widget_t* parent, xy_t x, xy_t y, wh_t w, wh_t h) {
+ widget_t* widget = widget_create(parent, TK_REF_VTABLE(draggable), x, y, w, h);
+ draggable_t* draggable = DRAGGABLE(widget);
+ return_value_if_fail(draggable != NULL, NULL);
+
+ draggable->top = DRAGGABLE_UNSPECIFIED_NUM;
+ draggable->bottom = DRAGGABLE_UNSPECIFIED_NUM;
+ draggable->left = DRAGGABLE_UNSPECIFIED_NUM;
+ draggable->right = DRAGGABLE_UNSPECIFIED_NUM;
+ draggable->vertical_only = FALSE;
+ draggable->horizontal_only = FALSE;
+ draggable->drag_window = FALSE;
+ widget_set_sensitive(widget, FALSE);
+
+ return widget;
+}
+
+widget_t* draggable_cast(widget_t* widget) {
+ return_value_if_fail(WIDGET_IS_INSTANCE_OF(widget, draggable), NULL);
+
+ return widget;
+}
+
+#include "base/widget_factory.h"
+
+ret_t draggable_register(void) {
+ return widget_factory_register(widget_factory(), WIDGET_TYPE_DRAGGABLE, draggable_create);
+}
diff --git a/src/ext_widgets/features/draggable.h b/src/ext_widgets/features/draggable.h
new file mode 100644
index 0000000000..aa3155878e
--- /dev/null
+++ b/src/ext_widgets/features/draggable.h
@@ -0,0 +1,244 @@
+/**
+ * File: draggable.h
+ * Author: AWTK Develop Team
+ * Brief: make parent widget or window draggable
+ *
+ * Copyright (c) 2019 - 2019 Guangzhou ZHIYUAN Electronics Co.,Ltd.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * License file for more details.
+ *
+ */
+
+/**
+ * History:
+ * ================================================================
+ * 2019-10-25 Li XianJing created
+ *
+ */
+
+#ifndef TK_DRAGGABLE_H
+#define TK_DRAGGABLE_H
+
+#include "base/widget.h"
+
+BEGIN_C_DECLS
+/**
+ * @class draggable_t
+ * @parent widget_t
+ * @annotation ["scriptable","design","widget"]
+ *
+ * 将draggable放入目标控件,即可让目标控件或当前窗口可以被拖动。
+ *
+ * draggable\_t是[widget\_t](widget_t.md)的子类控件,widget\_t的函数均适用于draggable\_t控件。
+ *
+ * 在xml中使用"draggable"标签创建draggable控件。如:
+ *
+ * ```xml
+ *
+ * ```
+ *
+ * 拖动对话框标题时移动对话框:
+ *
+ * ```xml
+ *
+ *
+ *
+ * ```
+ *
+ * > 更多用法请参考:
+ * [draggable.xml](https://github.com/zlgopen/awtk/blob/master/demos/assets/default/raw/ui/draggable.xml)
+ *
+ * 在c代码中使用函数draggable\_create创建按钮控件。如:
+ *
+ * ```c
+ * widget_t* draggable = draggable_create(target, 0, 0, 0, 0);
+ * ```
+ *
+ * > draggable本身不可见,故无需style。
+ *
+ */
+typedef struct _draggable_t {
+ widget_t widget;
+
+ /**
+ * @property {int32_t} top
+ * @annotation ["set_prop","get_prop","readable","persitent","design","scriptable"]
+ * 拖动范围的顶部限制。缺省为父控件的顶部。
+ */
+ int32_t top;
+
+ /**
+ * @property {int32_t} bottom
+ * @annotation ["set_prop","get_prop","readable","persitent","design","scriptable"]
+ * 拖动范围的底部限制。缺省为父控件的底部。
+ */
+ int32_t bottom;
+
+ /**
+ * @property {int32_t} left
+ * @annotation ["set_prop","get_prop","readable","persitent","design","scriptable"]
+ * 拖动范围的左边限制。缺省为父控件的左边。
+ */
+ int32_t left;
+
+ /**
+ * @property {int32_t} right
+ * @annotation ["set_prop","get_prop","readable","persitent","design","scriptable"]
+ * 拖动范围的右边限制。缺省为父控件的右边边。
+ */
+ int32_t right;
+
+ /**
+ * @property {bool_t} vertical_only
+ * @annotation ["set_prop","get_prop","readable","persitent","design","scriptable"]
+ * 只允许垂直拖动。
+ */
+ bool_t vertical_only;
+
+ /**
+ * @property {bool_t} horizontal_only
+ * @annotation ["set_prop","get_prop","readable","persitent","design","scriptable"]
+ * 只允许水平拖动。
+ */
+ bool_t horizontal_only;
+
+ /**
+ * @property {bool_t} drag_window
+ * @annotation ["set_prop","get_prop","readable","persitent","design","scriptable"]
+ * 拖动窗口而不是父控件。比如放在对话框的titlebar上,拖动titlebar其实是希望拖动对话框。
+ */
+ bool_t drag_window;
+
+ /*private*/
+ point_t down;
+ point_t saved_position;
+} draggable_t;
+
+/**
+ * @method draggable_create
+ * @annotation ["constructor", "scriptable"]
+ * 创建draggable对象
+ * @param {widget_t*} parent 父控件
+ * @param {xy_t} x x坐标
+ * @param {xy_t} y y坐标
+ * @param {wh_t} w 宽度
+ * @param {wh_t} h 高度
+ *
+ * @return {widget_t*} 对象。
+ */
+widget_t* draggable_create(widget_t* parent, xy_t x, xy_t y, wh_t w, wh_t h);
+
+/**
+ * @method draggable_cast
+ * 转换为draggable对象(供脚本语言使用)。
+ * @annotation ["cast", "scriptable"]
+ * @param {widget_t*} widget draggable对象。
+ *
+ * @return {widget_t*} draggable对象。
+ */
+widget_t* draggable_cast(widget_t* widget);
+
+/**
+ * @method draggable_set_top
+ * 设置top。
+ * @annotation ["scriptable"]
+ * @param {widget_t*} widget widget对象。
+ * @param {uint32_t} top 拖动范围的顶部限制。缺省为父控件的顶部。
+ *
+ * @return {ret_t} 返回RET_OK表示成功,否则表示失败。
+ */
+ret_t draggable_set_top(widget_t* widget, int32_t top);
+
+/**
+ * @method draggable_set_bottom
+ * 设置bottom。
+ * @annotation ["scriptable"]
+ * @param {widget_t*} widget widget对象。
+ * @param {uint32_t} bottom 拖动范围的底部限制。缺省为父控件的底部。
+ *
+ * @return {ret_t} 返回RET_OK表示成功,否则表示失败。
+ */
+ret_t draggable_set_bottom(widget_t* widget, int32_t bottom);
+
+/**
+ * @method draggable_set_left
+ * 设置left。
+ * @annotation ["scriptable"]
+ * @param {widget_t*} widget widget对象。
+ * @param {uint32_t} left 拖动范围的左边限制。缺省为父控件的左边。
+ *
+ * @return {ret_t} 返回RET_OK表示成功,否则表示失败。
+ */
+ret_t draggable_set_left(widget_t* widget, int32_t left);
+
+/**
+ * @method draggable_set_right
+ * 设置right。
+ * @annotation ["scriptable"]
+ * @param {widget_t*} widget widget对象。
+ * @param {uint32_t} right 拖动范围的右边限制。缺省为父控件的右边边。
+ *
+ * @return {ret_t} 返回RET_OK表示成功,否则表示失败。
+ */
+ret_t draggable_set_right(widget_t* widget, int32_t right);
+
+/**
+ * @method draggable_set_vertical_only
+ * 设置vertical_only。
+ * @annotation ["scriptable"]
+ * @param {widget_t*} widget widget对象。
+ * @param {uint32_t} vertical_only 只允许垂直拖动。
+ *
+ * @return {ret_t} 返回RET_OK表示成功,否则表示失败。
+ */
+ret_t draggable_set_vertical_only(widget_t* widget, bool_t vertical_only);
+
+/**
+ * @method draggable_set_horizontal_only
+ * 设置horizontal_only。
+ * @annotation ["scriptable"]
+ * @param {widget_t*} widget widget对象。
+ * @param {uint32_t} horizontal_only 只允许水平拖动。
+ *
+ * @return {ret_t} 返回RET_OK表示成功,否则表示失败。
+ */
+ret_t draggable_set_horizontal_only(widget_t* widget, bool_t horizontal_only);
+
+/**
+ * @method draggable_set_drag_window
+ * 设置drag_window。
+ * @annotation ["scriptable"]
+ * @param {widget_t*} widget widget对象。
+ * @param {uint32_t} drag_window
+ * 拖动窗口而不是父控件。比如放在对话框的titlebar上,拖动titlebar其实是希望拖动对话框。
+ *
+ * @return {ret_t} 返回RET_OK表示成功,否则表示失败。
+ */
+ret_t draggable_set_drag_window(widget_t* widget, bool_t drag_window);
+
+#define DRAGGABLE_PROP_TOP "top"
+#define DRAGGABLE_PROP_BOTTOM "bottom"
+#define DRAGGABLE_PROP_LEFT "left"
+#define DRAGGABLE_PROP_RIGHT "right"
+#define DRAGGABLE_PROP_DRAG_WINDOW "drag_window"
+#define DRAGGABLE_PROP_VERTICAL_ONLY "vertical_only"
+#define DRAGGABLE_PROP_HORIZONTAL_ONLY "horizontal_only"
+
+#define WIDGET_TYPE_DRAGGABLE "draggable"
+#define DRAGGABLE_UNSPECIFIED_NUM 0x1fffffff
+
+#define DRAGGABLE(widget) ((draggable_t*)(draggable_cast(WIDGET(widget))))
+
+ret_t draggable_register(void);
+
+/*public for subclass and runtime type check*/
+TK_EXTERN_VTABLE(draggable);
+
+END_C_DECLS
+
+#endif /*TK_DRAGGABLE_H*/
diff --git a/src/ext_widgets/gif_image/gif_image.h b/src/ext_widgets/gif_image/gif_image.h
index 676f814394..85cfc166fb 100644
--- a/src/ext_widgets/gif_image/gif_image.h
+++ b/src/ext_widgets/gif_image/gif_image.h
@@ -45,7 +45,8 @@ BEGIN_C_DECLS
* ```
*
* >更多用法请参考:
- * [gif image](https://github.com/zlgopen/awtk/blob/master/demos/assets/raw/ui/gif_image.xml)
+ * [gif
+ * image](https://github.com/zlgopen/awtk/blob/master/demos/assets/default/raw/ui/gif_image.xml)
*
* 在c代码中使用函数gif\_image\_create创建GIF图片控件。如:
*
@@ -72,7 +73,7 @@ BEGIN_C_DECLS
* ```
*
* > 更多用法请参考:[theme default](
- * https://github.com/zlgopen/awtk/blob/master/demos/assets/raw/styles/default.xml)
+ * https://github.com/zlgopen/awtk/blob/master/demos/assets/default/raw/styles/default.xml)
*
*/
typedef struct _gif_image_t {
diff --git a/src/ext_widgets/guage/guage.h b/src/ext_widgets/guage/guage.h
index 4819cdd115..a098ce47ba 100644
--- a/src/ext_widgets/guage/guage.h
+++ b/src/ext_widgets/guage/guage.h
@@ -43,7 +43,7 @@ BEGIN_C_DECLS
* ```
*
* > 更多用法请参考:
- * [guage.xml](https://github.com/zlgopen/awtk/blob/master/demos/assets/raw/ui/guage.xml)
+ * [guage.xml](https://github.com/zlgopen/awtk/blob/master/demos/assets/default/raw/ui/guage.xml)
*
* 在c代码中使用函数guage\_create创建表盘控件。如:
*
@@ -63,7 +63,8 @@ BEGIN_C_DECLS
* ```
*
* > 更多用法请参考:
- * [theme default](https://github.com/zlgopen/awtk/blob/master/demos/assets/raw/styles/default.xml)
+ * [theme
+ * default](https://github.com/zlgopen/awtk/blob/master/demos/assets/default/raw/styles/default.xml)
*
*/
typedef struct _guage_t {
diff --git a/src/ext_widgets/guage/guage_pointer.h b/src/ext_widgets/guage/guage_pointer.h
index e2abb96e29..42815bc7b0 100644
--- a/src/ext_widgets/guage/guage_pointer.h
+++ b/src/ext_widgets/guage/guage_pointer.h
@@ -45,7 +45,7 @@ BEGIN_C_DECLS
* ```
*
* > 更多用法请参考:
- * [guage.xml](https://github.com/zlgopen/awtk/blob/master/demos/assets/raw/ui/guage.xml)
+ * [guage.xml](https://github.com/zlgopen/awtk/blob/master/demos/assets/default/raw/ui/guage.xml)
*
* 在c代码中使用函数guage\_pointer\_create创建仪表指针控件。如:
*
diff --git a/src/ext_widgets/image_animation/image_animation.c b/src/ext_widgets/image_animation/image_animation.c
index 564e1a253d..a0df07274a 100644
--- a/src/ext_widgets/image_animation/image_animation.c
+++ b/src/ext_widgets/image_animation/image_animation.c
@@ -340,19 +340,20 @@ static ret_t image_animation_restart(image_animation_t* image_animation) {
return RET_REPEAT;
}
-static ret_t image_animation_next(image_animation_t* image_animation) {
- ret_t ret = RET_REMOVE;
+ret_t image_animation_next(widget_t* widget) {
+ ret_t ret = RET_DONE;
+ image_animation_t* image_animation = IMAGE_ANIMATION(widget);
return_value_if_fail(image_animation != NULL, RET_BAD_PARAMS);
if (image_animation->sequence) {
if (image_animation->sequence[image_animation->index + 1]) {
image_animation->index++;
- ret = RET_REPEAT;
+ ret = RET_OK;
}
} else {
if (image_animation->index < image_animation->end_index) {
image_animation->index++;
- ret = RET_REPEAT;
+ ret = RET_OK;
}
}
@@ -367,9 +368,9 @@ ret_t image_animation_update(widget_t* widget) {
if (image_animation->index < 0) {
ret = image_animation_restart(image_animation);
} else {
- ret = image_animation_next(image_animation);
+ ret = image_animation_next(widget);
- if (ret == RET_REMOVE) {
+ if (ret == RET_DONE) {
if (image_animation->loop) {
event_t e = event_init(EVT_ANIM_ONCE, widget);
widget_dispatch(widget, &e);
@@ -381,6 +382,8 @@ ret_t image_animation_update(widget_t* widget) {
widget_dispatch(widget, &e);
}
+ } else {
+ ret = RET_REPEAT;
}
}
diff --git a/src/ext_widgets/image_animation/image_animation.h b/src/ext_widgets/image_animation/image_animation.h
index 0e84bb95a7..0782880de5 100644
--- a/src/ext_widgets/image_animation/image_animation.h
+++ b/src/ext_widgets/image_animation/image_animation.h
@@ -44,7 +44,7 @@ BEGIN_C_DECLS
* ```
*
* > 更多用法请参考:
- * [image_animation.xml](https://github.com/zlgopen/awtk/blob/master/demos/assets/raw/ui/image_animation.xml)
+ * [image_animation.xml](https://github.com/zlgopen/awtk/blob/master/demos/assets/default/raw/ui/image_animation.xml)
*
* 在c代码中使用函数image\_animation\_create创建图片动画控件。如:
*
@@ -246,7 +246,7 @@ ret_t image_animation_play(widget_t* widget);
/**
* @method image_animation_stop
- * 停止(并重置index为0)。
+ * 停止(并重置index为-1)。
* @annotation ["scriptable"]
* @param {widget_t*} widget image_animation对象。
*
@@ -264,6 +264,16 @@ ret_t image_animation_stop(widget_t* widget);
*/
ret_t image_animation_pause(widget_t* widget);
+/**
+ * @method image_animation_next
+ * 手动切换到下一张图片。
+ * @annotation ["scriptable"]
+ * @param {widget_t*} widget image_animation对象。
+ *
+ * @return {ret_t} 返回RET_OK表示成功,否则表示失败。
+ */
+ret_t image_animation_next(widget_t* widget);
+
/**
* @method image_animation_set_format
* 设置生成图片名的格式。
diff --git a/src/ext_widgets/image_value/image_value.h b/src/ext_widgets/image_value/image_value.h
index a05d6887e8..90e3eb0038 100644
--- a/src/ext_widgets/image_value/image_value.h
+++ b/src/ext_widgets/image_value/image_value.h
@@ -49,7 +49,7 @@ BEGIN_C_DECLS
* ```
*
* > 更多用法请参考:
- * [image\_value](https://github.com/zlgopen/awtk/blob/master/demos/assets/raw/ui/image_value.xml)
+ * [image\_value](https://github.com/zlgopen/awtk/blob/master/demos/assets/default/raw/ui/image_value.xml)
*
* 在c代码中使用函数image\_value\_create创建图片值控件。如:
*
diff --git a/src/ext_widgets/keyboard/keyboard.h b/src/ext_widgets/keyboard/keyboard.h
index 696b7c3d7b..baea0dace2 100644
--- a/src/ext_widgets/keyboard/keyboard.h
+++ b/src/ext_widgets/keyboard/keyboard.h
@@ -66,7 +66,7 @@ BEGIN_C_DECLS
*
*
* > 更多用法请参考:
- * [kb_default](https://github.com/zlgopen/awtk/blob/master/demos/assets/raw/ui/kb_default.xml)
+ * [kb_default](https://github.com/zlgopen/awtk/blob/master/demos/assets/default/raw/ui/kb_default.xml)
*
*/
diff --git a/src/ext_widgets/mledit/line_number.h b/src/ext_widgets/mledit/line_number.h
index 3119fdafae..c59c5992c1 100644
--- a/src/ext_widgets/mledit/line_number.h
+++ b/src/ext_widgets/mledit/line_number.h
@@ -46,7 +46,7 @@ BEGIN_C_DECLS
* ```
*
* > 更多用法请参考:[mledit.xml](
- *https://github.com/zlgopen/awtk/blob/master/demos/assets/raw/ui/mledit.xml)
+ *https://github.com/zlgopen/awtk/blob/master/demos/assets/default/raw/ui/mledit.xml)
*
* 可用通过style来设置控件的显示风格,如字体的大小和颜色等等。如:
*
@@ -60,7 +60,7 @@ BEGIN_C_DECLS
*
* > 更多用法请参考:
* [theme default](
- *https://github.com/zlgopen/awtk/blob/master/demos/assets/raw/styles/default.xml#L556)
+ *https://github.com/zlgopen/awtk/blob/master/demos/assets/default/raw/styles/default.xml#L556)
*
*/
typedef struct _line_number_t {
diff --git a/src/ext_widgets/mledit/mledit.h b/src/ext_widgets/mledit/mledit.h
index b2497e417c..75e73cf1c8 100644
--- a/src/ext_widgets/mledit/mledit.h
+++ b/src/ext_widgets/mledit/mledit.h
@@ -42,7 +42,7 @@ BEGIN_C_DECLS
* ```
*
* > 更多用法请参考:[mledit.xml](
- * https://github.com/zlgopen/awtk/blob/master/demos/assets/raw/ui/mledit.xml)
+ * https://github.com/zlgopen/awtk/blob/master/demos/assets/default/raw/ui/mledit.xml)
*
* 在c代码中使用函数mledit\_create创建多行编辑器控件。如:
*
diff --git a/src/ext_widgets/mutable_image/mutable_image.h b/src/ext_widgets/mutable_image/mutable_image.h
index 00b13ed3cc..c48815ab6e 100644
--- a/src/ext_widgets/mutable_image/mutable_image.h
+++ b/src/ext_widgets/mutable_image/mutable_image.h
@@ -50,7 +50,7 @@ typedef ret_t (*mutable_image_prepare_image_t)(void* ctx, bitmap_t* image);
*
* >更多用法请参考:
* [mutable
- * image](https://github.com/zlgopen/awtk/blob/master/demos/assets/raw/ui/mutable_image.xml)
+ * image](https://github.com/zlgopen/awtk/blob/master/demos/assets/default/raw/ui/mutable_image.xml)
*
* 在c代码中使用函数mutable\_image\_create创建mutable图片控件。如:
*
diff --git a/src/ext_widgets/progress_circle/progress_circle.h b/src/ext_widgets/progress_circle/progress_circle.h
index 9e36a5de57..1fa9646e93 100644
--- a/src/ext_widgets/progress_circle/progress_circle.h
+++ b/src/ext_widgets/progress_circle/progress_circle.h
@@ -41,7 +41,7 @@ BEGIN_C_DECLS
* ```
*
* > 更多用法请参考:
- * [progress_circle.xml](https://github.com/zlgopen/awtk/blob/master/demos/assets/raw/ui/progress_circle.xml)
+ * [progress_circle.xml](https://github.com/zlgopen/awtk/blob/master/demos/assets/default/raw/ui/progress_circle.xml)
*
* 在c代码中使用函数progress\_circle\_create创建进度圆环控件。如:
*
@@ -65,7 +65,7 @@ BEGIN_C_DECLS
*
* > 更多用法请参考:
* [theme
- * default](https://github.com/zlgopen/awtk/blob/master/demos/assets/raw/styles/default.xml#L467)
+ * default](https://github.com/zlgopen/awtk/blob/master/demos/assets/default/raw/styles/default.xml#L467)
*
*/
typedef struct _progress_circle_t {
diff --git a/src/ext_widgets/rich_text/rich_text.h b/src/ext_widgets/rich_text/rich_text.h
index 0b0993e1e2..7095fe8c34 100644
--- a/src/ext_widgets/rich_text/rich_text.h
+++ b/src/ext_widgets/rich_text/rich_text.h
@@ -44,7 +44,7 @@ BEGIN_C_DECLS
* >
*
* > 更多用法请参考:
- * [rich_text.xml](https://github.com/zlgopen/awtk/blob/master/demos/assets/raw/ui/rich_text.xml)
+ * [rich_text.xml](https://github.com/zlgopen/awtk/blob/master/demos/assets/default/raw/ui/rich_text.xml)
*
* 在c代码中使用函数rich\_text\_create创建图文混排控件。如:
*
diff --git a/src/ext_widgets/scroll_label/hscroll_label.h b/src/ext_widgets/scroll_label/hscroll_label.h
index 26fc733956..ed379a6919 100644
--- a/src/ext_widgets/scroll_label/hscroll_label.h
+++ b/src/ext_widgets/scroll_label/hscroll_label.h
@@ -42,7 +42,7 @@ BEGIN_C_DECLS
* ```
*
* > 更多用法请参考:[mledit.xml](
- *https://github.com/zlgopen/awtk/blob/master/demos/assets/raw/ui/mledit.xml)
+ *https://github.com/zlgopen/awtk/blob/master/demos/assets/default/raw/ui/mledit.xml)
*
* 可用通过style来设置控件的显示风格,如字体的大小和颜色等等。如:
*
@@ -55,7 +55,7 @@ BEGIN_C_DECLS
*
* > 更多用法请参考:
* [theme default](
- *https://github.com/zlgopen/awtk/blob/master/demos/assets/raw/styles/default.xml)
+ *https://github.com/zlgopen/awtk/blob/master/demos/assets/default/raw/styles/default.xml)
*
*/
typedef struct _hscroll_label_t {
diff --git a/src/ext_widgets/scroll_view/list_item.h b/src/ext_widgets/scroll_view/list_item.h
index dc4b140151..00e22a8734 100644
--- a/src/ext_widgets/scroll_view/list_item.h
+++ b/src/ext_widgets/scroll_view/list_item.h
@@ -53,7 +53,7 @@ BEGIN_C_DECLS
* ```
*
* > 更多用法请参考:[list\_view\_m.xml](
- *https://github.com/zlgopen/awtk/blob/master/demos/assets/raw/ui/list_view_m.xml)
+ *https://github.com/zlgopen/awtk/blob/master/demos/assets/default/raw/ui/list_view_m.xml)
*
* 在c代码中使用函数list\_item\_create创建列表项控件。如:
*
@@ -74,7 +74,7 @@ BEGIN_C_DECLS
* ```
*
* > 更多用法请参考:[theme default](
- *https://github.com/zlgopen/awtk/blob/master/demos/assets/raw/styles/default.xml#L372)
+ *https://github.com/zlgopen/awtk/blob/master/demos/assets/default/raw/styles/default.xml#L372)
*
*/
typedef struct _list_item_t {
diff --git a/src/ext_widgets/scroll_view/list_view.c b/src/ext_widgets/scroll_view/list_view.c
index d6faeab22e..193f40fb19 100644
--- a/src/ext_widgets/scroll_view/list_view.c
+++ b/src/ext_widgets/scroll_view/list_view.c
@@ -80,7 +80,8 @@ static ret_t list_view_on_event(widget_t* widget, event_t* e) {
scroll_bar_add_delta(list_view->scroll_bar, delta);
log_debug("wheel: %d\n", delta);
}
- break;
+
+ return RET_STOP;
}
default:
break;
diff --git a/src/ext_widgets/scroll_view/list_view.h b/src/ext_widgets/scroll_view/list_view.h
index 2d9f34a740..f7522f6817 100644
--- a/src/ext_widgets/scroll_view/list_view.h
+++ b/src/ext_widgets/scroll_view/list_view.h
@@ -37,7 +37,7 @@ BEGIN_C_DECLS
* 如果不需要滚动,可以用view控件配置适当的layout参数作为列表控件。
*
* 列表视图中的列表项可以固定高度,也可以使用不同高度。请参考[变高列表项](
- *https://github.com/zlgopen/awtk/blob/master/demos/assets/raw/ui/list_view_vh.xml)
+ *https://github.com/zlgopen/awtk/blob/master/demos/assets/default/raw/ui/list_view_vh.xml)
*
* 列表视图控件的中可以有滚动条,也可以没有滚动条。
* 可以使用移动设备风格的滚动条,也可以使用桌面风格的滚动条。
@@ -64,7 +64,7 @@ BEGIN_C_DECLS
*
*
* > 更多用法请参考:[list\_view\_m.xml](
- *https://github.com/zlgopen/awtk/blob/master/demos/assets/raw/ui/list_view_m.xml)
+ *https://github.com/zlgopen/awtk/blob/master/demos/assets/default/raw/ui/list_view_m.xml)
*
* 在c代码中使用函数list\_view\_create创建列表视图控件。如:
*
diff --git a/src/ext_widgets/scroll_view/list_view_h.h b/src/ext_widgets/scroll_view/list_view_h.h
index 85f29cb858..ed25329ded 100644
--- a/src/ext_widgets/scroll_view/list_view_h.h
+++ b/src/ext_widgets/scroll_view/list_view_h.h
@@ -49,7 +49,7 @@ BEGIN_C_DECLS
*
*
* > 更多用法请参考:[list\_view\_h.xml](
- *https://github.com/zlgopen/awtk/blob/master/demos/assets/raw/ui/list_view_h.xml)
+ *https://github.com/zlgopen/awtk/blob/master/demos/assets/default/raw/ui/list_view_h.xml)
*
* 在c代码中使用函数list\_view\_h\_create创建水平列表视图控件。如:
*
diff --git a/src/ext_widgets/scroll_view/scroll_bar.h b/src/ext_widgets/scroll_view/scroll_bar.h
index e538c33bb1..39cbd88802 100644
--- a/src/ext_widgets/scroll_view/scroll_bar.h
+++ b/src/ext_widgets/scroll_view/scroll_bar.h
@@ -49,7 +49,7 @@ BEGIN_C_DECLS
* ```
*
* > 更多用法请参考:[list\_view\_m.xml](
- *https://github.com/zlgopen/awtk/blob/master/demos/assets/raw/ui/list_view_m.xml)
+ *https://github.com/zlgopen/awtk/blob/master/demos/assets/default/raw/ui/list_view_m.xml)
*
* 在c代码中使用函数scroll\_bar\_create创建列表项控件。如:
*
@@ -66,7 +66,7 @@ BEGIN_C_DECLS
* ```
*
* > 更多用法请参考:[theme default](
- *https://github.com/zlgopen/awtk/blob/master/demos/assets/raw/styles/default.xml#L350)
+ *https://github.com/zlgopen/awtk/blob/master/demos/assets/default/raw/styles/default.xml#L350)
*
*/
typedef struct _scroll_bar_t {
diff --git a/src/ext_widgets/scroll_view/scroll_view.h b/src/ext_widgets/scroll_view/scroll_view.h
index 7a5d7e24fe..9df162f642 100644
--- a/src/ext_widgets/scroll_view/scroll_view.h
+++ b/src/ext_widgets/scroll_view/scroll_view.h
@@ -60,7 +60,7 @@ typedef ret_t (*scroll_view_on_scroll_to_t)(widget_t* widget, int32_t xoffset_en
* > 滚动视图一般作为列表视图的子控件使用。
*
* > 更多用法请参考:[list\_view\_m.xml](
- *https://github.com/zlgopen/awtk/blob/master/demos/assets/raw/ui/list_view_m.xml)
+ *https://github.com/zlgopen/awtk/blob/master/demos/assets/default/raw/ui/list_view_m.xml)
*
* 在c代码中使用函数scroll\_view\_create创建列表视图控件。如:
*
diff --git a/src/ext_widgets/slide_menu/slide_menu.h b/src/ext_widgets/slide_menu/slide_menu.h
index a48f922d9d..4070739b35 100644
--- a/src/ext_widgets/slide_menu/slide_menu.h
+++ b/src/ext_widgets/slide_menu/slide_menu.h
@@ -51,7 +51,7 @@ BEGIN_C_DECLS
* ```
*
* > 更多用法请参考:[slide_menu.xml](
- * https://github.com/zlgopen/awtk/blob/master/demos/assets/raw/ui/slide_menu.xml)
+ * https://github.com/zlgopen/awtk/blob/master/demos/assets/default/raw/ui/slide_menu.xml)
*
* 在c代码中使用函数slide\_menu\_create创建左右滑动菜单控件。如:
*
@@ -91,7 +91,7 @@ BEGIN_C_DECLS
* ```
*
* > 更多用法请参考:[theme default](
- * https://github.com/zlgopen/awtk/blob/master/demos/assets/raw/styles/default.xml#L493)
+ * https://github.com/zlgopen/awtk/blob/master/demos/assets/default/raw/styles/default.xml#L493)
*
*/
typedef struct _slide_menu_t {
diff --git a/src/ext_widgets/slide_view/slide_indicator.c b/src/ext_widgets/slide_view/slide_indicator.c
index e0c1e1faf3..0fd35f157c 100644
--- a/src/ext_widgets/slide_view/slide_indicator.c
+++ b/src/ext_widgets/slide_view/slide_indicator.c
@@ -512,8 +512,9 @@ static ret_t slide_indicator_set_indicated_widget(widget_t* widget, widget_t* ta
if (widget_get_prop(target, WIDGET_PROP_MAX, &v) != RET_OK) {
value_set_uint32(&v, widget_count_children(target));
+ slide_indicator->chilren_indicated = TRUE;
}
- slide_indicator_set_max(widget, value_uint32(&v));
+ slide_indicator->max = value_uint32(&v);
if (widget_get_prop(target, WIDGET_PROP_ACTIVE, &v) != RET_OK) {
widget_get_prop(target, WIDGET_PROP_VALUE, &v);
@@ -555,6 +556,17 @@ static ret_t slide_indicator_init_if_not_inited(widget_t* widget) {
return RET_OK;
}
+ret_t slide_indicator_on_paint_begin(widget_t* widget, canvas_t* c) {
+ slide_indicator_t* slide_indicator = SLIDE_INDICATOR(widget);
+ return_value_if_fail(widget != NULL && slide_indicator != NULL, RET_BAD_PARAMS);
+
+ if (slide_indicator->chilren_indicated) {
+ slide_indicator->max = widget_count_children(slide_indicator->indicated_widget);
+ }
+
+ return RET_OK;
+}
+
static ret_t slide_indicator_on_paint_self(widget_t* widget, canvas_t* c) {
slide_indicator_t* slide_indicator = SLIDE_INDICATOR(widget);
return_value_if_fail(widget != NULL && slide_indicator != NULL, RET_BAD_PARAMS);
@@ -604,6 +616,7 @@ TK_DECL_VTABLE(slide_indicator_linear) = {.size = sizeof(slide_indicator_t),
.get_prop = slide_indicator_get_prop,
.set_prop = slide_indicator_set_prop,
.on_layout_children = slide_indicator_on_layout_children,
+ .on_paint_begin = slide_indicator_on_paint_begin,
.on_paint_self = slide_indicator_on_paint_self,
.on_destroy = slide_indicator_on_destroy};
@@ -616,6 +629,7 @@ TK_DECL_VTABLE(slide_indicator_arc) = {.size = sizeof(slide_indicator_t),
.get_prop = slide_indicator_get_prop,
.set_prop = slide_indicator_set_prop,
.on_layout_children = slide_indicator_on_layout_children,
+ .on_paint_begin = slide_indicator_on_paint_begin,
.on_paint_self = slide_indicator_arc_on_paint_self,
.on_destroy = slide_indicator_on_destroy};
@@ -638,6 +652,7 @@ widget_t* slide_indicator_create_internal(widget_t* parent, xy_t x, xy_t y, wh_t
slide_indicator->wa_opactiy = NULL;
slide_indicator->anchor_x_fixed = FALSE;
slide_indicator->anchor_y_fixed = FALSE;
+ slide_indicator->chilren_indicated = FALSE;
slide_indicator->indicated_widget = NULL;
slide_indicator->indicated_target =
tk_str_copy(slide_indicator->indicated_target, WIDGET_TYPE_SLIDE_VIEW);
@@ -684,6 +699,7 @@ ret_t slide_indicator_set_max(widget_t* widget, uint32_t max) {
return_value_if_fail(slide_indicator != NULL, RET_BAD_PARAMS);
slide_indicator->max = max;
+ slide_indicator->chilren_indicated = FALSE;
return widget_invalidate(widget, NULL);
}
diff --git a/src/ext_widgets/slide_view/slide_indicator.h b/src/ext_widgets/slide_view/slide_indicator.h
index 55f4407384..ef9013950a 100644
--- a/src/ext_widgets/slide_view/slide_indicator.h
+++ b/src/ext_widgets/slide_view/slide_indicator.h
@@ -79,7 +79,7 @@ typedef enum _indicator_default_paint_t {
* ```
*
* > 更多用法请参考:[slide\_view.xml](
- *https://github.com/zlgopen/awtk/blob/master/demos/assets/raw/ui/slide_view.xml)
+ *https://github.com/zlgopen/awtk/blob/master/demos/assets/default/raw/ui/slide_view.xml)
*
* 在c代码中使用函数slide\_indicator\_create创建指示器控件。如:
*
@@ -94,7 +94,7 @@ typedef enum _indicator_default_paint_t {
* ```
*
* > 更多用法请参考:[theme default](
- *https://github.com/zlgopen/awtk/blob/master/demos/assets/raw/styles/default.xml#L350)
+ *https://github.com/zlgopen/awtk/blob/master/demos/assets/default/raw/styles/default.xml#L350)
*
*/
typedef struct _slide_indicator_t {
@@ -171,9 +171,10 @@ typedef struct _slide_indicator_t {
char* indicated_target;
/*private*/
- bool_t inited;
- bool_t anchor_x_fixed;
- bool_t anchor_y_fixed;
+ uint8_t inited : 1;
+ uint8_t anchor_x_fixed : 1;
+ uint8_t anchor_y_fixed : 1;
+ uint8_t chilren_indicated : 1;
widget_animator_t* wa_opactiy;
widget_t* indicated_widget;
} slide_indicator_t;
diff --git a/src/ext_widgets/slide_view/slide_view.h b/src/ext_widgets/slide_view/slide_view.h
index 7f7f207f7c..4110a32295 100644
--- a/src/ext_widgets/slide_view/slide_view.h
+++ b/src/ext_widgets/slide_view/slide_view.h
@@ -51,7 +51,7 @@ BEGIN_C_DECLS
* ```
*
* > 更多用法请参考:[slide_view.xml](
- *https://github.com/zlgopen/awtk/blob/master/demos/assets/raw/ui/slide_view.xml)
+ *https://github.com/zlgopen/awtk/blob/master/demos/assets/default/raw/ui/slide_view.xml)
*
* 在c代码中使用函数slide\_view\_create创建滑动视图控件。如:
*
@@ -74,7 +74,7 @@ BEGIN_C_DECLS
* > 如果希望背景图片跟随滚动,请将背景图片设置到页面上,否则设置到slide\_view上。
*
* > 更多用法请参考:[theme default](
- * https://github.com/zlgopen/awtk/blob/master/demos/assets/raw/styles/default.xml#L458)
+ * https://github.com/zlgopen/awtk/blob/master/demos/assets/default/raw/styles/default.xml#L458)
*
*/
typedef struct _slide_view_t {
diff --git a/src/ext_widgets/svg_image/svg_image.c b/src/ext_widgets/svg_image/svg_image.c
index 9b1eb1d782..d1763b188f 100644
--- a/src/ext_widgets/svg_image/svg_image.c
+++ b/src/ext_widgets/svg_image/svg_image.c
@@ -31,12 +31,8 @@ static ret_t svg_image_load_bsvg(widget_t* widget) {
image_base_t* image_base = IMAGE_BASE(widget);
return_value_if_fail(svg_image != NULL && image_base != NULL, RET_BAD_PARAMS);
- if (svg_image->bsvg_asset != NULL && tk_str_eq(svg_image->bsvg_asset->name, image_base->image)) {
- return RET_OK;
- }
-
if (svg_image->bsvg_asset != NULL) {
- widget_unload_asset(widget, svg_image->bsvg_asset);
+ return RET_OK;
}
svg_image->bsvg_asset = widget_load_asset(widget, ASSET_TYPE_IMAGE, image_base->image);
@@ -66,12 +62,13 @@ static ret_t svg_image_on_paint_self(widget_t* widget, canvas_t* c) {
const asset_info_t* asset = svg_image->bsvg_asset;
color_t bg = style_get_color(style, STYLE_ID_BG_COLOR, black);
color_t fg = style_get_color(style, STYLE_ID_FG_COLOR, black);
+ return_value_if_fail(asset != NULL && asset->data != NULL, RET_FAIL);
return_value_if_fail(bsvg_init(&bsvg, (const uint32_t*)asset->data, asset->size) != NULL,
RET_BAD_PARAMS);
- x = (widget->w - bsvg.header->w) / 2;
- y = (widget->h - bsvg.header->h) / 2;
+ x = (widget->w - (int32_t)bsvg.header->w) / 2;
+ y = (widget->h - (int32_t)bsvg.header->h) / 2;
vgcanvas_save(vg);
@@ -90,6 +87,17 @@ static ret_t svg_image_on_paint_self(widget_t* widget, canvas_t* c) {
return RET_OK;
}
+static ret_t svg_image_set_prop(widget_t* widget, const char* name, const value_t* v) {
+ return_value_if_fail(widget != NULL && name != NULL && v != NULL, RET_BAD_PARAMS);
+
+ if (tk_str_eq(name, WIDGET_PROP_IMAGE)) {
+ svg_image_set_image(widget, value_str(v));
+ return RET_OK;
+ } else {
+ return image_base_set_prop(widget, name, v);
+ }
+}
+
static ret_t svg_image_on_destroy(widget_t* widget) {
svg_image_t* svg_image = SVG_IMAGE(widget);
return_value_if_fail(svg_image != NULL, RET_BAD_PARAMS);
@@ -102,6 +110,19 @@ static ret_t svg_image_on_destroy(widget_t* widget) {
return image_base_on_destroy(widget);
}
+ret_t svg_image_set_image(widget_t* widget, const char* name) {
+ svg_image_t* svg_image = SVG_IMAGE(widget);
+ return_value_if_fail(svg_image != NULL && name != NULL, RET_BAD_PARAMS);
+
+ svg_image->image_base.image = tk_str_copy(svg_image->image_base.image, name);
+ if (svg_image->bsvg_asset != NULL) {
+ widget_unload_asset(widget, svg_image->bsvg_asset);
+ svg_image->bsvg_asset = NULL;
+ }
+
+ return widget_invalidate(widget, NULL);
+}
+
static const char* s_svg_image_clone_properties[] = {
WIDGET_PROP_IMAGE, WIDGET_PROP_SCALE_X, WIDGET_PROP_SCALE_Y,
WIDGET_PROP_ANCHOR_X, WIDGET_PROP_ANCHOR_Y, WIDGET_PROP_ROTATION,
@@ -116,7 +137,7 @@ TK_DECL_VTABLE(svg_image) = {.size = sizeof(svg_image_t),
.on_event = image_base_on_event,
.on_paint_self = svg_image_on_paint_self,
.on_paint_background = widget_on_paint_null,
- .set_prop = image_base_set_prop,
+ .set_prop = svg_image_set_prop,
.get_prop = image_base_get_prop};
widget_t* svg_image_create(widget_t* parent, xy_t x, xy_t y, wh_t w, wh_t h) {
diff --git a/src/ext_widgets/svg_image/svg_image.h b/src/ext_widgets/svg_image/svg_image.h
index 668151a610..d5520a04d3 100644
--- a/src/ext_widgets/svg_image/svg_image.h
+++ b/src/ext_widgets/svg_image/svg_image.h
@@ -42,7 +42,7 @@ BEGIN_C_DECLS
* ```
*
* >更多用法请参考:[svg image](
- * https://github.com/zlgopen/awtk/blob/master/demos/assets/raw/ui/svg_image.xml)
+ * https://github.com/zlgopen/awtk/blob/master/demos/assets/default/raw/ui/svg_image.xml)
*
* 在c代码中使用函数svg\_image\_create创建SVG图片控件。如:
*
@@ -67,7 +67,7 @@ BEGIN_C_DECLS
* ```
*
* > 更多用法请参考:[theme default](
- * https://github.com/zlgopen/awtk/blob/master/demos/assets/raw/styles/default.xml)
+ * https://github.com/zlgopen/awtk/blob/master/demos/assets/default/raw/styles/default.xml)
*
*/
typedef struct _svg_image_t {
@@ -91,6 +91,20 @@ typedef struct _svg_image_t {
*/
widget_t* svg_image_create(widget_t* parent, xy_t x, xy_t y, wh_t w, wh_t h);
+/**
+ * @method svg_image_set_image
+ * 设置控件的图片名称。
+ *
+ *> 如果需要显示文件系统中的图片,只需将图片名称换成实际的文件名,并加上"file://"前缀即可。
+ *
+ * @annotation ["scriptable"]
+ * @param {widget_t*} widget image对象。
+ * @param {char*} name 图片名称,该图片必须存在于资源管理器。
+ *
+ * @return {ret_t} 返回RET_OK表示成功,否则表示失败。
+ */
+ret_t svg_image_set_image(widget_t* widget, const char* name);
+
/**
* @method svg_image_cast
* 转换为svg_image对象(供脚本语言使用)。
diff --git a/src/ext_widgets/switch/switch.h b/src/ext_widgets/switch/switch.h
index 6197735663..f04396c117 100644
--- a/src/ext_widgets/switch/switch.h
+++ b/src/ext_widgets/switch/switch.h
@@ -43,7 +43,7 @@ BEGIN_C_DECLS
* ```
*
* > 更多用法请参考:[switch.xml](
- * https://github.com/zlgopen/awtk/blob/master/demos/assets/raw/ui/switch.xml)
+ * https://github.com/zlgopen/awtk/blob/master/demos/assets/default/raw/ui/switch.xml)
*
* 在c代码中使用函数switch\_create创建开关控件。如:
*
@@ -64,7 +64,7 @@ BEGIN_C_DECLS
* ```
*
* > 更多用法请参考:[theme default](
- * https://github.com/zlgopen/awtk/blob/master/demos/assets/raw/styles/default.xml#L452)
+ * https://github.com/zlgopen/awtk/blob/master/demos/assets/default/raw/styles/default.xml#L452)
*
*/
typedef struct _switch_t {
diff --git a/src/ext_widgets/text_selector/text_selector.c b/src/ext_widgets/text_selector/text_selector.c
index a02f332c59..5e9cfb35b8 100644
--- a/src/ext_widgets/text_selector/text_selector.c
+++ b/src/ext_widgets/text_selector/text_selector.c
@@ -342,7 +342,20 @@ static ret_t text_selector_on_scroll_done(void* ctx, event_t* e) {
static ret_t text_selector_scroll_to(widget_t* widget, int32_t yoffset_end) {
int32_t yoffset = 0;
text_selector_t* text_selector = TEXT_SELECTOR(widget);
- return_value_if_fail(text_selector != NULL, RET_FAIL);
+ int32_t options_nr = text_selector_count_options(widget);
+ int32_t item_height = widget->h / text_selector->visible_nr;
+ int32_t empty_item_height = (text_selector->visible_nr / 2) * item_height;
+ int32_t min_yoffset = -empty_item_height;
+ int32_t max_yoffset = (options_nr * item_height + empty_item_height) - widget->h;
+
+ if (yoffset_end < min_yoffset) {
+ yoffset_end = min_yoffset;
+ }
+
+ if (yoffset_end > (max_yoffset)) {
+ yoffset_end = max_yoffset;
+ }
+ yoffset_end = tk_roundi((float)yoffset_end / (float)item_height) * item_height;
yoffset = text_selector->yoffset;
if (yoffset == yoffset_end) {
@@ -363,11 +376,7 @@ static ret_t text_selector_on_pointer_up(text_selector_t* text_selector, pointer
int32_t yoffset_end = 0;
widget_t* widget = WIDGET(text_selector);
velocity_t* v = &(text_selector->velocity);
- int32_t options_nr = text_selector_count_options(widget);
int32_t item_height = widget->h / text_selector->visible_nr;
- int32_t empty_item_height = (text_selector->visible_nr / 2) * item_height;
- int32_t min_yoffset = -empty_item_height;
- int32_t max_yoffset = (options_nr * item_height + empty_item_height) - widget->h;
velocity_update(v, e->e.time, e->x, e->y);
yoffset_end = text_selector->yoffset - v->yv;
@@ -386,20 +395,25 @@ static ret_t text_selector_on_pointer_up(text_selector_t* text_selector, pointer
}
}
- if (yoffset_end < min_yoffset) {
- yoffset_end = min_yoffset;
- }
-
- if (yoffset_end > (max_yoffset)) {
- yoffset_end = max_yoffset;
- }
-
- yoffset_end = tk_roundi((float)yoffset_end / (float)item_height) * item_height;
text_selector_scroll_to(widget, yoffset_end);
return RET_OK;
}
+static ret_t text_selector_up(widget_t* widget) {
+ text_selector_t* text_selector = TEXT_SELECTOR(widget);
+ int32_t yoffset = text_selector->yoffset - (widget->h / text_selector->visible_nr);
+
+ return text_selector_scroll_to(widget, yoffset);
+}
+
+static ret_t text_selector_down(widget_t* widget) {
+ text_selector_t* text_selector = TEXT_SELECTOR(widget);
+ int32_t yoffset = text_selector->yoffset + (widget->h / text_selector->visible_nr);
+
+ return text_selector_scroll_to(widget, yoffset);
+}
+
static ret_t text_selector_on_event(widget_t* widget, event_t* e) {
uint16_t type = e->type;
text_selector_t* text_selector = TEXT_SELECTOR(widget);
@@ -416,6 +430,20 @@ static ret_t text_selector_on_event(widget_t* widget, event_t* e) {
widget_ungrab(widget->parent, widget);
break;
}
+ case EVT_POINTER_DOWN_ABORT: {
+ text_selector->pressed = FALSE;
+ text_selector->yoffset = text_selector->yoffset_save;
+ break;
+ }
+ case EVT_KEY_DOWN: {
+ key_event_t* evt = (key_event_t*)e;
+ if (evt->key == TK_KEY_UP) {
+ text_selector_up(widget);
+ } else if (evt->key == TK_KEY_DOWN) {
+ text_selector_down(widget);
+ }
+ break;
+ }
case EVT_POINTER_MOVE: {
pointer_event_t* evt = (pointer_event_t*)e;
if (evt->pressed && text_selector->pressed) {
@@ -424,6 +452,17 @@ static ret_t text_selector_on_event(widget_t* widget, event_t* e) {
}
break;
}
+ case EVT_WHEEL: {
+ wheel_event_t* evt = (wheel_event_t*)e;
+
+ if (evt->dy > 0) {
+ text_selector_down(widget);
+ } else if (evt->dy < 0) {
+ text_selector_up(widget);
+ }
+
+ return RET_STOP;
+ }
case EVT_RESIZE:
case EVT_MOVE_RESIZE: {
text_selector_sync_yoffset_with_selected_index(text_selector);
diff --git a/src/ext_widgets/text_selector/text_selector.h b/src/ext_widgets/text_selector/text_selector.h
index 3bdc6dd696..a104c46b41 100644
--- a/src/ext_widgets/text_selector/text_selector.h
+++ b/src/ext_widgets/text_selector/text_selector.h
@@ -51,7 +51,7 @@ typedef struct _text_selector_option_t {
* ```
*
* > 更多用法请参考:[text\_selector.xml](
- * https://github.com/zlgopen/awtk/blob/master/demos/assets/raw/ui/text_selector.xml)
+ * https://github.com/zlgopen/awtk/blob/master/demos/assets/default/raw/ui/text_selector.xml)
*
* 在c代码中使用函数text\_selector\_create创建文本选择器控件。如:
*
@@ -74,7 +74,7 @@ typedef struct _text_selector_option_t {
* ```
*
* > 更多用法请参考:[theme default](
- * https://github.com/zlgopen/awtk/blob/master/demos/assets/raw/styles/default.xml#L443)
+ * https://github.com/zlgopen/awtk/blob/master/demos/assets/default/raw/styles/default.xml#L443)
*
*/
typedef struct _text_selector_t {
diff --git a/src/ext_widgets/time_clock/digit_clock.h b/src/ext_widgets/time_clock/digit_clock.h
index f2da02e22a..f794ef0bd5 100644
--- a/src/ext_widgets/time_clock/digit_clock.h
+++ b/src/ext_widgets/time_clock/digit_clock.h
@@ -42,7 +42,7 @@ BEGIN_C_DECLS
* ```
*
* > 更多用法请参考:[digit\_clock.xml](
- * https://github.com/zlgopen/awtk/blob/master/demos/assets/raw/ui/digit_clock.xml)
+ * https://github.com/zlgopen/awtk/blob/master/demos/assets/default/raw/ui/digit_clock.xml)
*
* 在c代码中使用函数digit\_clock\_create创建数字时钟控件。如:
*
@@ -63,7 +63,7 @@ BEGIN_C_DECLS
* ```
*
* > 更多用法请参考:[theme default](
- * https://github.com/zlgopen/awtk/blob/master/demos/assets/raw/styles/default.xml#L138)
+ * https://github.com/zlgopen/awtk/blob/master/demos/assets/default/raw/styles/default.xml#L138)
*
*/
typedef struct _digit_clock_t {
diff --git a/src/ext_widgets/time_clock/time_clock.h b/src/ext_widgets/time_clock/time_clock.h
index 85f3de6304..e6ce5e6ba2 100644
--- a/src/ext_widgets/time_clock/time_clock.h
+++ b/src/ext_widgets/time_clock/time_clock.h
@@ -42,7 +42,7 @@ BEGIN_C_DECLS
* ```
*
* > 更多用法请参考:[time\_clock.xml](
- * https://github.com/zlgopen/awtk/blob/master/demos/assets/raw/ui/time_clock.xml)
+ * https://github.com/zlgopen/awtk/blob/master/demos/assets/default/raw/ui/time_clock.xml)
*
* 在c代码中使用函数time\_clock\_create创建模拟时钟控件。如:
*
diff --git a/src/font_loader/font_loader_bitmap.c b/src/font_loader/font_loader_bitmap.c
index d4a69f94da..6fabbeb752 100644
--- a/src/font_loader/font_loader_bitmap.c
+++ b/src/font_loader/font_loader_bitmap.c
@@ -97,7 +97,7 @@ font_t* font_bitmap_init(font_bitmap_t* f, const char* name, const uint8_t* buff
f->base.get_baseline = font_bitmap_get_baseline;
f->base.get_glyph = font_bitmap_get_glyph;
f->base.destroy = font_bitmap_destroy;
-
+ f->base.desc = "bitmap font";
tk_strncpy(f->base.name, name, TK_NAME_LEN);
return &(f->base);
diff --git a/src/font_loader/font_loader_ft.c b/src/font_loader/font_loader_ft.c
index bca9796657..ee8f271c6f 100644
--- a/src/font_loader/font_loader_ft.c
+++ b/src/font_loader/font_loader_ft.c
@@ -86,6 +86,7 @@ static ret_t font_ft_get_glyph(font_t* f, wchar_t c, font_size_t font_size, glyp
glyf = sf->face->glyph;
FT_Get_Glyph(glyf, &glyph);
+ g->format = GLYPH_FMT_ALPHA;
g->h = glyf->bitmap.rows;
g->w = glyf->bitmap.width;
g->pitch = glyf->bitmap.pitch;
@@ -168,6 +169,7 @@ font_t* font_ft_create_ex(const char* name, const uint8_t* buff, uint32_t size,
f->base.destroy = font_ft_destroy;
f->base.get_glyph = font_ft_get_glyph;
f->base.get_baseline = font_ft_get_baseline;
+ f->base.desc = mono ? "mono(freetype)" : "truetype(freetype)";
tk_strncpy(f->base.name, name, TK_NAME_LEN);
@@ -181,14 +183,18 @@ font_t* font_ft_mono_create(const char* name, const uint8_t* buff, uint32_t size
}
font_t* font_ft_create(const char* name, const uint8_t* buff, uint32_t size) {
+#ifdef WITH_LCD_MONO
+ return font_ft_create_ex(name, buff, size, TRUE);
+#else
return font_ft_create_ex(name, buff, size, FALSE);
+#endif
}
static font_t* font_ft_load(font_loader_t* loader, const char* name, const uint8_t* buff,
uint32_t buff_size) {
(void)loader;
- return font_ft_create_ex(name, buff, buff_size, FALSE);
+ return font_ft_create(name, buff, buff_size);
}
font_loader_t* font_loader_ft(void) {
diff --git a/src/font_loader/font_loader_stb.c b/src/font_loader/font_loader_stb.c
index 095875148c..11937514a9 100644
--- a/src/font_loader/font_loader_stb.c
+++ b/src/font_loader/font_loader_stb.c
@@ -80,6 +80,7 @@ static ret_t font_stb_get_glyph(font_t* f, wchar_t c, font_size_t font_size, gly
g->y = y;
g->w = w;
g->h = h;
+ g->format = GLYPH_FMT_ALPHA;
g->advance = advance * scale;
if (g->data != NULL) {
@@ -126,6 +127,7 @@ font_t* font_stb_create(const char* name, const uint8_t* buff, uint32_t buff_siz
f->base.destroy = font_stb_destroy;
f->base.get_glyph = font_stb_get_glyph;
f->base.get_baseline = font_stb_get_baseline;
+ f->base.desc = "truetype(stb)";
tk_strncpy(f->base.name, name, TK_NAME_LEN);
diff --git a/src/image_loader/image_loader_stb.c b/src/image_loader/image_loader_stb.c
index 5c2d31492f..8c9d1e249a 100644
--- a/src/image_loader/image_loader_stb.c
+++ b/src/image_loader/image_loader_stb.c
@@ -72,7 +72,9 @@ ret_t stb_load_image(int32_t subtype, const uint8_t* buff, uint32_t buff_size, b
} else {
data = stb_data;
}
-
+#ifdef WITH_LCD_MONO
+ ret = bitmap_init_from_rgba(image, w, h, BITMAP_FMT_MONO, data, n);
+#else
if (enable_bgr565 && rgba_data_is_opaque(data, w, h, n)) {
ret = bitmap_init_from_rgba(image, w, h, BITMAP_FMT_BGR565, data, n);
} else if (require_bgra) {
@@ -80,7 +82,7 @@ ret_t stb_load_image(int32_t subtype, const uint8_t* buff, uint32_t buff_size, b
} else {
ret = bitmap_init_from_rgba(image, w, h, BITMAP_FMT_RGBA8888, data, n);
}
-
+#endif /*WITH_LCD_MONO*/
stbi_image_free((uint8_t*)(stb_data));
if (stb_data != data) {
TKMEM_FREE(data);
@@ -94,6 +96,9 @@ ret_t stb_load_image(int32_t subtype, const uint8_t* buff, uint32_t buff_size, b
return_value_if_fail(data != NULL, RET_FAIL);
total_h = h * z;
+#ifdef WITH_LCD_MONO
+ ret = bitmap_init_from_rgba(image, w, total_h, BITMAP_FMT_MONO, data, n);
+#else
if (enable_bgr565 && rgba_data_is_opaque(data, w, total_h, n)) {
ret = bitmap_init_from_rgba(image, w, total_h, BITMAP_FMT_BGR565, data, n);
} else if (require_bgra) {
@@ -101,6 +106,7 @@ ret_t stb_load_image(int32_t subtype, const uint8_t* buff, uint32_t buff_size, b
} else {
ret = bitmap_init_from_rgba(image, w, total_h, BITMAP_FMT_RGBA8888, data, n);
}
+#endif /*WITH_LCD_MONO*/
image->is_gif = TRUE;
image->gif_frame_h = h;
diff --git a/src/input_methods/input_method_default.inc b/src/input_methods/input_method_default.inc
index 683d3097fe..487905ba6c 100644
--- a/src/input_methods/input_method_default.inc
+++ b/src/input_methods/input_method_default.inc
@@ -85,7 +85,7 @@ static ret_t on_push_window(void* ctx, event_t* e) {
static ret_t input_method_default_restore_win_position(input_method_t* im) {
if (im->win != NULL) {
- im->win->y += im->win_delta_y;
+ im->win->y = im->win_old_y;
widget_invalidate_force(im->win, NULL);
im->win = NULL;
}
@@ -141,6 +141,7 @@ static ret_t input_type_open_keyboard(input_method_t* im, int32_t input_type, bo
im->busy = TRUE;
widget_on(im->keyboard, EVT_WINDOW_OPEN, input_method_default_on_keyboard_open, im);
+ im->win_old_y = win->y;
if ((p.y + widget->h) > im->keyboard->y) {
close_anim_hint = "vtranslate";
open_anim_hint = close_anim_hint;
diff --git a/src/lcd/fragment_frame_buffer.h b/src/lcd/fragment_frame_buffer.h
index 1a143d331c..7844567346 100644
--- a/src/lcd/fragment_frame_buffer.h
+++ b/src/lcd/fragment_frame_buffer.h
@@ -18,6 +18,7 @@
* 2019-08-16 li xianjing created
*
*/
+#include "tkc/utils.h"
typedef struct _fragment_frame_buffer_t {
uint32_t x;
@@ -77,6 +78,49 @@ static inline ret_t fragment_frame_buffer_set_pixel(fragment_frame_buffer_t* ffb
return RET_OK;
}
+static inline ret_t fragment_frame_buffer_set_pixel_fill(fragment_frame_buffer_t* ffb, uint32_t x,
+ uint32_t y, uint32_t size, pixel_t pixel) {
+ uint32_t dx = x - ffb->x;
+ uint32_t dy = y - ffb->y;
+ pixel_t* p = ffb->data + dy * ffb->w + dx;
+
+ return_value_if_fail((ffb->w * ffb->h) >= size, RET_BAD_PARAMS);
+ return_value_if_fail((x >= ffb->x && y >= ffb->y), RET_BAD_PARAMS);
+ return_value_if_fail((x < (ffb->x + ffb->w) && y < (ffb->y + ffb->h)), RET_BAD_PARAMS);
+
+ if (LCD_FORMAT == BITMAP_FMT_RGBA8888 || LCD_FORMAT == BITMAP_FMT_ABGR8888 ||
+ LCD_FORMAT == BITMAP_FMT_BGRA8888 || LCD_FORMAT == BITMAP_FMT_ARGB8888) {
+ tk_memset32((uint32_t*)p, (uint32_t)pixel, size);
+ } else if (LCD_FORMAT == BITMAP_FMT_RGB565 || LCD_FORMAT == BITMAP_FMT_BGR565) {
+ tk_memset16((uint16_t*)p, (uint16_t)pixel, size);
+ } else {
+ assert("no support lcd type fill");
+ }
+
+ return RET_OK;
+}
+
+static inline ret_t fragment_frame_buffer_copy_pixel(fragment_frame_buffer_t* ffb, uint32_t x,
+ uint32_t y, uint32_t size,
+ pixel_t* image_data) {
+ uint32_t dx = x - ffb->x;
+ uint32_t dy = y - ffb->y;
+ pixel_t* p = ffb->data + dy * ffb->w + dx;
+
+ return_value_if_fail((ffb->w * ffb->h) >= size, RET_BAD_PARAMS);
+ return_value_if_fail((x >= ffb->x && y >= ffb->y), RET_BAD_PARAMS);
+ return_value_if_fail((x < (ffb->x + ffb->w) && y < (ffb->y + ffb->h)), RET_BAD_PARAMS);
+ if (LCD_FORMAT == BITMAP_FMT_RGBA8888 || LCD_FORMAT == BITMAP_FMT_ABGR8888 ||
+ LCD_FORMAT == BITMAP_FMT_BGRA8888 || LCD_FORMAT == BITMAP_FMT_ARGB8888) {
+ tk_memcpy32((uint32_t*)image_data, (uint32_t*)p, size);
+ } else if (LCD_FORMAT == BITMAP_FMT_RGB565 || LCD_FORMAT == BITMAP_FMT_BGR565) {
+ tk_memcpy16((uint16_t*)image_data, (uint16_t*)p, size);
+ } else {
+ assert("no support image type");
+ }
+ return RET_OK;
+}
+
static inline pixel_t fragment_frame_buffer_get_pixel(fragment_frame_buffer_t* ffb, uint32_t x,
uint32_t y) {
uint32_t dx = x - ffb->x;
@@ -113,6 +157,51 @@ static inline ret_t fragment_frame_buffer_set_window(fragment_frame_buffer_t* ff
return RET_OK;
}
+static inline ret_t fragment_frame_buffer_image_copy(fragment_frame_buffer_t* ffb, bitmap_t* img,
+ rect_t* src, rect_t* dst) {
+ uint32_t i = 0;
+ uint32_t x = ffb->win.x + ffb->cursor_x;
+ uint32_t y = ffb->win.y + ffb->cursor_y;
+ pixel_t* data = (pixel_t*)img->data;
+ pixel_t* src_p = data + img->w * src->y + src->x;
+
+ return_value_if_fail(src->w == dst->w && src->h == dst->h, RET_BAD_PARAMS);
+
+ for (i = 0; i < dst->h; i++) {
+ fragment_frame_buffer_copy_pixel(ffb, x, y + i, img->w, src_p);
+ src_p += img->w;
+ }
+
+ ffb->cursor_x += (src->w * src->h);
+ assert(ffb->cursor_y < ffb->win.h);
+ if (ffb->cursor_x >= ffb->win.w) {
+ ffb->cursor_y += (ffb->cursor_x / ffb->win.w);
+ ffb->cursor_x = ffb->cursor_x % ffb->win.w;
+ }
+
+ return RET_OK;
+}
+
+static inline ret_t fragment_frame_buffer_write_data_fill(fragment_frame_buffer_t* ffb,
+ pixel_t pixel, uint32_t size) {
+ uint32_t i = 0;
+ uint32_t x = ffb->win.x + ffb->cursor_x;
+ uint32_t y = ffb->win.y + ffb->cursor_y;
+
+ for (i = 0; i < ffb->win.h; i++) {
+ fragment_frame_buffer_set_pixel_fill(ffb, x, y + i, ffb->win.w, pixel);
+ }
+
+ ffb->cursor_x += size;
+ assert(ffb->cursor_y < ffb->win.h);
+ if (ffb->cursor_x >= ffb->win.w) {
+ ffb->cursor_y += (ffb->cursor_x / ffb->win.w);
+ ffb->cursor_x = ffb->cursor_x % ffb->win.w;
+ }
+
+ return RET_OK;
+}
+
static inline ret_t fragment_frame_buffer_write_data(fragment_frame_buffer_t* ffb, pixel_t pixel) {
uint32_t x = ffb->win.x + ffb->cursor_x;
uint32_t y = ffb->win.y + ffb->cursor_y;
diff --git a/src/lcd/lcd_reg.inc b/src/lcd/lcd_reg.inc
index 1ec50e8e69..a90932c818 100644
--- a/src/lcd/lcd_reg.inc
+++ b/src/lcd/lcd_reg.inc
@@ -18,14 +18,10 @@
* 2018-02-16 Li XianJing created
*
*/
-
+#include "awtk_config.h"
#include "base/system_info.h"
#include "fragment_frame_buffer.h"
-#ifndef FRAGMENT_FRAME_BUFFER_SIZE
-#define FRAGMENT_FRAME_BUFFER_SIZE 8192
-#endif /*FRAGMENT_FRAME_BUFFER_SIZE*/
-
typedef struct _lcd_reg_t {
lcd_t lcd;
fragment_frame_buffer_t affb;
@@ -57,6 +53,45 @@ static inline ret_t lcd_reg_write_data(lcd_t* lcd, pixel_t data) {
return RET_OK;
}
+static inline ret_t lcd_reg_write_data_fill(lcd_t* lcd, pixel_t data, wh_t w, wh_t h) {
+ uint32_t i = 0;
+ uint32_t size = w * h;
+ lcd_reg_t* reg = (lcd_reg_t*)lcd;
+
+ if (reg->ffb != NULL) {
+ fragment_frame_buffer_write_data_fill(reg->ffb, data, size);
+ } else {
+ for (i = 0; i < size; i++) {
+ write_data_func(data);
+ }
+ }
+
+ return RET_OK;
+}
+
+static inline ret_t lcd_reg_image_copy(lcd_t* lcd, bitmap_t* img, rect_t* src, rect_t* dst) {
+ uint32_t i = 0;
+ uint32_t j = 0;
+ lcd_reg_t* reg = (lcd_reg_t*)lcd;
+ const pixel_t* data = (pixel_t*)img->data;
+ return_value_if_fail(src->w == dst->w && src->h == dst->h, RET_BAD_PARAMS);
+
+ if (reg->ffb != NULL) {
+ fragment_frame_buffer_image_copy(reg->ffb, img, src, dst);
+ } else {
+ const pixel_t* src_p = data + img->w * src->y + src->x;
+
+ for (j = 0; j < dst->h; j++) {
+ for (i = 0; i < dst->w; i++) {
+ write_data_func(src_p[i]);
+ }
+ src_p += img->w;
+ }
+ }
+
+ return RET_OK;
+}
+
static ret_t lcd_reg_begin_frame(lcd_t* lcd, rect_t* dirty_rect) {
lcd_reg_t* reg = (lcd_reg_t*)lcd;
lcd->dirty_rect = *dirty_rect;
@@ -104,15 +139,10 @@ static ret_t lcd_reg_draw_points(lcd_t* lcd, point_t* points, uint32_t nr) {
}
static ret_t lcd_reg_fill_rect(lcd_t* lcd, xy_t x, xy_t y, wh_t w, wh_t h) {
- uint32_t i = 0;
- uint32_t size = w * h;
pixel_t color = color_to_pixel(lcd->fill_color);
lcd_reg_set_window(lcd, x, y, x + w - 1, y + h - 1);
-
- for (i = 0; i < size; i++) {
- lcd_reg_write_data(lcd, color);
- }
+ lcd_reg_write_data_fill(lcd, color, w, h);
return RET_OK;
}
@@ -160,14 +190,7 @@ static ret_t lcd_reg_draw_image_bgr565(lcd_t* lcd, bitmap_t* img, rect_t* src, r
lcd_reg_set_window(lcd, x, y, x + dw - 1, y + dh - 1);
if (src->w == dst->w && src->h == dst->h) {
- const uint16_t* src_p = data + img->w * src->y + src->x;
-
- for (j = 0; j < dh; j++) {
- for (i = 0; i < dw; i++) {
- lcd_reg_write_data(lcd, src_p[i]);
- }
- src_p += img->w;
- }
+ lcd_reg_image_copy(lcd, img, src, dst);
} else {
xy_t sx = src->x;
xy_t sy = src->y;
@@ -191,7 +214,7 @@ static ret_t lcd_reg_draw_image_bgr565(lcd_t* lcd, bitmap_t* img, rect_t* src, r
return RET_OK;
}
-static ret_t lcd_reg_8888(lcd_t* lcd, bitmap_t* img, rect_t* src, rect_t* dst) {
+static ret_t lcd_reg_draw_image_8888(lcd_t* lcd, bitmap_t* img, rect_t* src, rect_t* dst) {
wh_t i = 0;
wh_t j = 0;
uint8_t a = 0;
@@ -270,7 +293,7 @@ static ret_t lcd_reg_draw_image(lcd_t* lcd, bitmap_t* img, rect_t* src, rect_t*
if (img->format == BITMAP_FMT_BGR565) {
return lcd_reg_draw_image_bgr565(lcd, img, src, dst);
} else if (img->format == BITMAP_FMT_RGBA8888 || img->format == BITMAP_FMT_BGRA8888) {
- return lcd_reg_8888(lcd, img, src, dst);
+ return lcd_reg_draw_image_8888(lcd, img, src, dst);
} else {
assert(!"not supported format");
return RET_FAIL;
diff --git a/src/misc/new.cpp b/src/misc/new.cpp
index 0dce0b468d..612c096eef 100755
--- a/src/misc/new.cpp
+++ b/src/misc/new.cpp
@@ -4,7 +4,7 @@
#ifndef HAS_STD_MALLOC
-void* operator new(std::size_t size) throw(std::bad_alloc) {
+void* operator new(std::size_t size) __TK_THROW_BAD_ALLOC {
if (size >= MAX_SIZE) {
log_debug("size is too large\n");
}
@@ -12,7 +12,7 @@ void* operator new(std::size_t size) throw(std::bad_alloc) {
return TKMEM_ALLOC(size);
}
-void* operator new[](std::size_t size) throw(std::bad_alloc) {
+void* operator new[](std::size_t size) __TK_THROW_BAD_ALLOC {
if (size >= MAX_SIZE) {
log_debug("size is too large\n");
}
diff --git a/src/misc/new.hpp b/src/misc/new.hpp
index 09fea6723a..dbe8be90e1 100755
--- a/src/misc/new.hpp
+++ b/src/misc/new.hpp
@@ -7,9 +7,15 @@
#ifndef HAS_STD_MALLOC
-void* operator new(std::size_t size) throw(std::bad_alloc);
+#if __cplusplus < 201103L || defined(__ARMCC_VERSION)
+#define __TK_THROW_BAD_ALLOC throw(std::bad_alloc)
+#else
+#define __TK_THROW_BAD_ALLOC
+#endif
-void* operator new[](std::size_t size) throw(std::bad_alloc);
+void* operator new(std::size_t size) __TK_THROW_BAD_ALLOC;
+
+void* operator new[](std::size_t size) __TK_THROW_BAD_ALLOC;
void operator delete(void* obj) throw();
diff --git a/src/native_window/native_window_sdl.c b/src/native_window/native_window_sdl.c
index 2e634b2a6f..635016d6e1 100644
--- a/src/native_window/native_window_sdl.c
+++ b/src/native_window/native_window_sdl.c
@@ -272,8 +272,9 @@ static ret_t native_window_sdl_exec(object_t* obj, const char* cmd, const char*
#ifdef WITH_NANOVG_GPU
if (tk_str_eq(cmd, "reset_canvas")) {
canvas_t* c = &(sdl->canvas);
- lcd_destroy(c->lcd);
- c->lcd = lcd_nanovg_init(NATIVE_WINDOW(sdl));
+ vgcanvas_t* vg = canvas_get_vgcanvas(c);
+
+ vgcanvas_reset(vg);
return RET_OK;
}
diff --git a/src/platforms/cmsis_os/mutex.c b/src/platforms/cmsis_os/mutex.c
new file mode 100644
index 0000000000..801976be43
--- /dev/null
+++ b/src/platforms/cmsis_os/mutex.c
@@ -0,0 +1,70 @@
+/**
+ * File: mutex.c
+ * Author: AWTK Develop Team
+ * Brief: mutex base on tos_mutex
+ *
+ * Copyright (c) 2018 - 2019 Guangzhou ZHIYUAN Electronics Co.,Ltd.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * License file for more details.
+ *
+ */
+
+/**
+ * History:
+ * ================================================================
+ * 2019-10-20 Li XianJing created
+ *
+ */
+
+#include "tkc/mem.h"
+#include "tkc/mutex.h"
+#include "cmsis_os.h"
+
+struct _tk_mutex_t {
+ osMutexId mutex;
+};
+
+tk_mutex_t* tk_mutex_create() {
+ osMutexDef_t def;
+ tk_mutex_t* mutex = TKMEM_ZALLOC(tk_mutex_t);
+ return_value_if_fail(mutex != NULL, NULL);
+
+ memset(&def, 0x00, sizeof(def));
+ mutex->mutex = osMutexCreate(&(def));
+
+ if (mutex->mutex == NULL) {
+ TKMEM_FREE(mutex);
+ }
+
+ return mutex;
+}
+
+ret_t tk_mutex_lock(tk_mutex_t* mutex) {
+ return_value_if_fail(mutex != NULL && mutex->mutex != NULL, RET_BAD_PARAMS);
+
+ return_value_if_fail(osMutexWait(mutex->mutex, 0xffffffff) == osOK, RET_FAIL);
+
+ return RET_OK;
+}
+
+ret_t tk_mutex_unlock(tk_mutex_t* mutex) {
+ return_value_if_fail(mutex != NULL && mutex->mutex != NULL, RET_BAD_PARAMS);
+
+ return_value_if_fail(osMutexRelease(mutex->mutex) == osOK, RET_FAIL);
+
+ return RET_OK;
+}
+
+ret_t tk_mutex_destroy(tk_mutex_t* mutex) {
+ return_value_if_fail(mutex != NULL && mutex->mutex != NULL, RET_BAD_PARAMS);
+
+ osMutexDelete(mutex->mutex);
+ memset(mutex, 0x00, sizeof(tk_mutex_t));
+
+ TKMEM_FREE(mutex);
+
+ return RET_OK;
+}
diff --git a/src/platforms/cmsis_os/semaphore.c b/src/platforms/cmsis_os/semaphore.c
new file mode 100644
index 0000000000..0f64a76552
--- /dev/null
+++ b/src/platforms/cmsis_os/semaphore.c
@@ -0,0 +1,77 @@
+/**
+ * File: semaphore.c
+ * Author: AWTK Develop Team
+ * Brief: semaphore
+ *
+ * Copyright (c) 2018 - 2019 Guangzhou ZHIYUAN Electronics Co.,Ltd.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * License file for more details.
+ *
+ */
+
+/**
+ * History:
+ * ================================================================
+ * 2019-10-27 Li XianJing created
+ *
+ */
+
+#include "cmsis_os.h"
+
+#include "tkc/mem.h"
+#include "tkc/time_now.h"
+#include "tkc/platform.h"
+#include "tkc/semaphore.h"
+
+struct _tk_semaphore_t {
+ osSemaphoreId sem;
+};
+
+tk_semaphore_t* tk_semaphore_create(uint32_t value, const char* name) {
+ osSemaphoreDef_t def;
+ tk_semaphore_t* semaphore = TKMEM_ZALLOC(tk_semaphore_t);
+ return_value_if_fail(semaphore != NULL, NULL);
+
+ memset(&def, 0x00, sizeof(def));
+#ifdef __RTTHREAD_CFG_H__
+ def.name = name;
+#endif
+ semaphore->sem = osSemaphoreCreate(&(def), value);
+
+ if (semaphore->sem == NULL) {
+ TKMEM_FREE(semaphore);
+ }
+
+ return semaphore;
+}
+
+ret_t tk_semaphore_wait(tk_semaphore_t* semaphore, uint32_t timeout_ms) {
+ return_value_if_fail(semaphore != NULL, RET_BAD_PARAMS);
+
+ if (osSemaphoreWait(semaphore->sem, timeout_ms) < 0) {
+ return RET_TIMEOUT;
+ }
+
+ return RET_OK;
+}
+
+ret_t tk_semaphore_post(tk_semaphore_t* semaphore) {
+ return_value_if_fail(semaphore != NULL, RET_BAD_PARAMS);
+
+ return_value_if_fail(osSemaphoreRelease(semaphore->sem) == osOK, RET_FAIL);
+
+ return RET_OK;
+}
+
+ret_t tk_semaphore_destroy(tk_semaphore_t* semaphore) {
+ return_value_if_fail(semaphore != NULL, RET_BAD_PARAMS);
+
+ osSemaphoreDelete(semaphore->sem);
+ memset(&semaphore, 0x00, sizeof(tk_semaphore_t));
+ TKMEM_FREE(semaphore);
+
+ return RET_OK;
+}
diff --git a/src/platforms/cmsis_os/sys_tick.c b/src/platforms/cmsis_os/sys_tick.c
new file mode 100644
index 0000000000..b2e340196d
--- /dev/null
+++ b/src/platforms/cmsis_os/sys_tick.c
@@ -0,0 +1,70 @@
+/**
+ * File: sys_tick.c
+ * Author: AWTK Develop Team
+ * Brief: use sys tick to implement sleep/get_time_ms64.
+ *
+ * Copyright (c) 2018 - 2019 Guangzhou ZHIYUAN Electronics Co.,Ltd.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * License file for more details.
+ *
+ */
+
+/**
+ * History:
+ * ================================================================
+ * 2018-10-20 Li XianJing created
+ *
+ */
+
+#include "cmsis_os.h"
+#include "tkc/types_def.h"
+
+static volatile uint64_t g_sys_tick;
+
+#ifdef _TOS_CONFIG_H_
+#include "tos.h"
+void rtos_tick(void) {
+ if (tos_knl_is_running()) {
+ tos_knl_irq_enter();
+ tos_tick_handler();
+ tos_knl_irq_leave();
+ }
+}
+#endif /*_TOS_CONFIG_H_*/
+
+void SysTick_Handler(void) {
+ g_sys_tick++;
+ rtos_tick();
+}
+
+uint64_t get_time_ms64() {
+ return g_sys_tick;
+}
+
+static void sleep_ms_raw(uint32_t ms) {
+ uint32_t count = 0;
+ uint64_t start = get_time_ms64();
+
+ while (get_time_ms64() < (start + ms)) {
+ count++;
+ }
+}
+
+void sleep_ms(uint32_t ms) {
+ if (tos_knl_is_running()) {
+ tos_task_delay(ms);
+ } else {
+ sleep_ms_raw(ms);
+ }
+}
+
+void delay_ms(uint32_t ms) {
+ sleep_ms(ms);
+}
+
+void delay_us(uint32_t us) {
+ sleep_ms(1);
+}
diff --git a/src/platforms/cmsis_os/thread.c b/src/platforms/cmsis_os/thread.c
new file mode 100644
index 0000000000..4ca43a0129
--- /dev/null
+++ b/src/platforms/cmsis_os/thread.c
@@ -0,0 +1,149 @@
+/**
+ * File: thread.c
+ * Author: AWTK Develop Team
+ * Brief: thread on cmsis_os
+ *
+ * Copyright (c) 2018 - 2019 Guangzhou ZHIYUAN Electronics Co.,Ltd.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * License file for more details.
+ *
+ */
+
+/**
+ * History:
+ * ================================================================
+ * 2019-10-27 Li XianJing created
+ *
+ */
+
+#include "tkc/mem.h"
+#include "tkc/utils.h"
+#include "tkc/thread.h"
+#include "tkc/mutex.h"
+#include "cmsis_os.h"
+
+struct _tk_thread_t {
+ void* args;
+ tk_thread_entry_t entry;
+
+ osThreadId id;
+ bool_t running;
+
+ const char* name;
+ uint32_t stack_size;
+ uint32_t priority;
+ void* stackbase;
+ tk_mutex_t* mutex;
+};
+
+ret_t tk_thread_set_name(tk_thread_t* thread, const char* name) {
+ return_value_if_fail(thread != NULL && name != NULL, RET_BAD_PARAMS);
+
+ thread->name = name;
+
+ return RET_OK;
+}
+
+ret_t tk_thread_set_stack_size(tk_thread_t* thread, uint32_t stack_size) {
+ return_value_if_fail(thread != NULL, RET_BAD_PARAMS);
+
+ thread->stack_size = stack_size;
+
+ return RET_OK;
+}
+
+ret_t tk_thread_set_priority(tk_thread_t* thread, uint32_t priority) {
+ return_value_if_fail(thread != NULL, RET_BAD_PARAMS);
+
+ thread->priority = priority;
+
+ if (thread->id) {
+ osThreadSetPriority(thread->id, (osPriority)priority);
+ }
+
+ return RET_OK;
+}
+
+void* tk_thread_get_args(tk_thread_t* thread) {
+ return_value_if_fail(thread != NULL, NULL);
+
+ return thread->args;
+}
+
+static void cmsis_os_thread_entry(const void* arg) {
+ tk_thread_t* thread = (tk_thread_t*)arg;
+
+ thread->running = TRUE;
+ thread->entry(thread->args);
+ thread->running = FALSE;
+ tk_mutex_unlock(thread->mutex);
+}
+
+tk_thread_t* tk_thread_create(tk_thread_entry_t entry, void* args) {
+ tk_thread_t* thread = NULL;
+ return_value_if_fail(entry != NULL, NULL);
+
+ thread = (tk_thread_t*)TKMEM_ZALLOC(tk_thread_t);
+ return_value_if_fail(thread != NULL, NULL);
+
+ thread->args = args;
+ thread->entry = entry;
+ thread->mutex = tk_mutex_create();
+
+ return thread;
+}
+
+ret_t tk_thread_start(tk_thread_t* thread) {
+ osThreadDef_t def;
+ return_value_if_fail(thread != NULL && !(thread->id), RET_BAD_PARAMS);
+
+ memset(&def, 0x00, sizeof(def));
+
+#ifdef _TOS_CONFIG_H_
+ def.timeslice = 20;
+ def.name = (char*)(thread->name);
+ def.stacksize = thread->stack_size;
+ def.tpriority = (osPriority)(thread->priority);
+ def.pthread = cmsis_os_thread_entry;
+ def.stackbase = TKMEM_ALLOC(def.stacksize + 4);
+ return_value_if_fail(def.stackbase != NULL, RET_OOM);
+ thread->stackbase = def.stackbase;
+#endif
+
+ thread->id = osThreadCreate(&(def), thread->args);
+ if (thread->id != NULL) {
+ tk_mutex_lock(thread->mutex);
+ }
+
+ return thread->id != NULL ? RET_OK : RET_FAIL;
+}
+
+ret_t tk_thread_join(tk_thread_t* thread) {
+ return_value_if_fail(thread != NULL, RET_BAD_PARAMS);
+
+ return_value_if_fail(tk_mutex_lock(thread->mutex) == RET_OK, RET_FAIL);
+ tk_mutex_unlock(thread->mutex);
+
+ return RET_OK;
+}
+
+ret_t tk_thread_destroy(tk_thread_t* thread) {
+ return_value_if_fail(thread != NULL && thread->id, RET_BAD_PARAMS);
+
+ if (thread->stackbase != NULL) {
+ TKMEM_FREE(thread->stackbase);
+ }
+
+ if (thread->mutex != NULL) {
+ tk_mutex_destroy(thread->mutex);
+ }
+
+ osThreadTerminate(thread->id);
+ memset(thread, 0x00, sizeof(tk_thread_t));
+ TKMEM_FREE(thread);
+
+ return RET_OK;
+}
diff --git a/src/platforms/freertos/README.md b/src/platforms/freertos/README.md
new file mode 100644
index 0000000000..761d61d93b
--- /dev/null
+++ b/src/platforms/freertos/README.md
@@ -0,0 +1 @@
+# To Support FreeRTOS
diff --git a/src/platforms/freertos/cond_var.c b/src/platforms/freertos/cond_var.c
new file mode 100644
index 0000000000..b540a64854
--- /dev/null
+++ b/src/platforms/freertos/cond_var.c
@@ -0,0 +1,51 @@
+#include "freertos/FreeRTOS.h"
+#include "freertos/semphr.h"
+#include "freertos/task.h"
+#include "freertos/event_groups.h"
+#include "tkc/mem.h"
+#include "tkc/cond_var.h"
+
+struct _tk_cond_var_t {
+ EventGroupHandle_t event;
+};
+
+tk_cond_var_t* tk_cond_var_create(void) {
+ tk_cond_var_t* cond_var = TKMEM_ZALLOC(tk_cond_var_t);
+ return_value_if_fail(cond_var != NULL, NULL);
+ cond_var->event = xEventGroupCreate();
+ if (cond_var->event == NULL) {
+ TKMEM_FREE(cond_var);
+ }
+
+ return cond_var;
+}
+
+ret_t tk_cond_var_wait(tk_cond_var_t* cond_var, uint32_t timeout_ms) {
+ return_value_if_fail(cond_var != NULL, RET_BAD_PARAMS);
+ EventBits_t uxBits = xEventGroupWaitBits(cond_var->event, BIT(0), pdTRUE, pdFALSE, timeout_ms);
+ if ((uxBits & BIT0) == BIT0) {
+ return RET_OK;
+ } else {
+ return RET_FAIL;
+ }
+}
+
+ret_t tk_cond_var_awake(tk_cond_var_t* cond_var) {
+ return_value_if_fail(cond_var != NULL, RET_BAD_PARAMS);
+ EventBits_t uxBits = xEventGroupSetBits(cond_var->event, BIT(0));
+ if ((uxBits & BIT0) == BIT0) {
+ return RET_OK;
+ } else {
+ return RET_FAIL;
+ }
+}
+
+ret_t tk_cond_var_destroy(tk_cond_var_t* cond_var) {
+ return_value_if_fail(cond_var != NULL, RET_BAD_PARAMS);
+
+ vEventGroupDelete(cond_var->event);
+ memset(cond_var, 0x00, sizeof(tk_cond_var_t));
+ TKMEM_FREE(cond_var);
+
+ return RET_OK;
+}
diff --git a/src/platforms/freertos/mutex.c b/src/platforms/freertos/mutex.c
new file mode 100644
index 0000000000..82cd8af00b
--- /dev/null
+++ b/src/platforms/freertos/mutex.c
@@ -0,0 +1,42 @@
+#include "freertos/FreeRTOS.h"
+#include "freertos/semphr.h"
+#include "freertos/task.h"
+#include "tkc/mem.h"
+#include "tkc/mutex.h"
+
+struct _tk_mutex_t {
+ SemaphoreHandle_t mutex;
+};
+
+tk_mutex_t* tk_mutex_create() {
+ tk_mutex_t* mutex = TKMEM_ZALLOC(tk_mutex_t);
+ return_value_if_fail(mutex != NULL, NULL);
+
+ mutex->mutex = xSemaphoreCreateMutex();
+ if (mutex->mutex == NULL)
+ {
+ return NULL;
+ }
+ return mutex;
+}
+
+ret_t tk_mutex_lock(tk_mutex_t* mutex) {
+ return_value_if_fail(mutex != NULL, RET_BAD_PARAMS);
+
+ return_value_if_fail(xSemaphoreTake(mutex->mutex, portMAX_DELAY) == pdPASS, RET_FAIL);
+ return RET_OK;
+}
+
+ret_t tk_mutex_unlock(tk_mutex_t* mutex) {
+ return_value_if_fail(mutex != NULL, RET_BAD_PARAMS);
+ return_value_if_fail(xSemaphoreGive(mutex->mutex) == pdPASS, RET_FAIL);
+
+ return RET_OK;
+}
+
+ret_t tk_mutex_destroy(tk_mutex_t* mutex) {
+ return_value_if_fail(mutex != NULL, RET_BAD_PARAMS);
+
+ vSemaphoreDelete(mutex->mutex);
+ return RET_OK;
+}
diff --git a/src/platforms/freertos/sys_tick.c b/src/platforms/freertos/sys_tick.c
new file mode 100644
index 0000000000..a2ef1e80e4
--- /dev/null
+++ b/src/platforms/freertos/sys_tick.c
@@ -0,0 +1,33 @@
+#include "freertos/FreeRTOS.h"
+#include "freertos/semphr.h"
+#include "freertos/task.h"
+#include
+#include "tkc/types_def.h"
+
+uint64_t get_time_ms64() {
+ struct timeval te;
+ gettimeofday(&te, NULL);
+ uint64_t milliseconds = te.tv_sec * 1000LL + te.tv_usec / 1000;
+ return milliseconds;
+}
+
+static void sleep_ms_raw(uint32_t ms) {
+ uint32_t count = 0;
+ uint64_t start = get_time_ms64();
+
+ while (get_time_ms64() < (start + ms)) {
+ count++;
+ }
+}
+
+void sleep_ms(uint32_t ms) {
+ vTaskDelay(1 / portTICK_PERIOD_MS);
+}
+
+void delay_ms(uint32_t ms) {
+ sleep_ms(ms);
+}
+
+void delay_us(uint32_t us) {
+ sleep_ms(1);
+}
diff --git a/src/platforms/freertos/thread.c b/src/platforms/freertos/thread.c
new file mode 100644
index 0000000000..f8a81add77
--- /dev/null
+++ b/src/platforms/freertos/thread.c
@@ -0,0 +1,108 @@
+#include "freertos/FreeRTOS.h"
+#include "freertos/task.h"
+#include "freertos/event_groups.h"
+#include "tkc/mem.h"
+#include "tkc/utils.h"
+#include "tkc/thread.h"
+
+struct _tk_thread_t {
+ void* args;
+ TaskHandle_t task;
+ bool_t running;
+ tk_thread_entry_t entry;
+ char name[TK_NAME_LEN + 1];
+ uint32_t stack_size;
+ uint32_t priority;
+ EventGroupHandle_t event_sync;
+};
+const static int TASK_CREATED_BIT = BIT0;
+
+ret_t tk_thread_set_name(tk_thread_t* thread, const char* name) {
+ return_value_if_fail(thread != NULL && name != NULL, RET_BAD_PARAMS);
+
+ tk_strncpy(thread->name, name, TK_NAME_LEN);
+
+ return RET_OK;
+}
+
+ret_t tk_thread_set_stack_size(tk_thread_t* thread, uint32_t stack_size) {
+ return_value_if_fail(thread != NULL, RET_BAD_PARAMS);
+
+ thread->stack_size = stack_size;
+
+ return RET_OK;
+}
+
+ret_t tk_thread_set_priority(tk_thread_t* thread, uint32_t priority) {
+ return_value_if_fail(thread != NULL, RET_BAD_PARAMS);
+
+ thread->priority = priority;
+
+ return RET_OK;
+}
+
+void* tk_thread_get_args(tk_thread_t* thread) {
+ return_value_if_fail(thread != NULL, NULL);
+
+ return thread->args;
+}
+
+tk_thread_t* tk_thread_create(tk_thread_entry_t entry, void* args) {
+ tk_thread_t* thread = NULL;
+ return_value_if_fail(entry != NULL, NULL);
+
+ thread = (tk_thread_t*)TKMEM_ZALLOC(tk_thread_t);
+ return_value_if_fail(thread != NULL, NULL);
+
+ thread->args = args;
+ thread->entry = entry;
+ thread->stack_size = 2048;
+
+ return thread;
+}
+
+static void entry(void* arg) {
+ tk_thread_t* thread = (tk_thread_t*)arg;
+ xEventGroupSetBits(thread->event_sync, TASK_CREATED_BIT);
+ thread->entry(thread->args);
+ thread->running = FALSE;
+ vTaskDelete(thread->task);
+}
+
+ret_t tk_thread_start(tk_thread_t* thread) {
+ uint32_t priority = 0;
+ uint32_t stack_size = 0;
+ BaseType_t err = pdPASS;
+ return_value_if_fail(thread != NULL, RET_BAD_PARAMS);
+ thread->event_sync = xEventGroupCreate();
+ return_value_if_fail(thread->event_sync != NULL, RET_OOM);
+ priority = tk_min(thread->priority, 10);
+ stack_size = tk_max(thread->stack_size, 4096);
+ err = xTaskCreate(
+ entry,
+ thread->name,
+ stack_size,
+ thread,
+ priority,
+ &(thread->task));
+
+ thread->running = err == pdPASS;
+ xEventGroupWaitBits(thread->event_sync, TASK_CREATED_BIT, pdTRUE, pdFALSE, portMAX_DELAY);
+ return thread->running ? RET_OK : RET_FAIL;
+}
+
+ret_t tk_thread_join(tk_thread_t* thread) {
+ return_value_if_fail(thread != NULL, RET_BAD_PARAMS);
+ if (thread->running) {
+ }
+
+ return RET_OK;
+}
+
+ret_t tk_thread_destroy(tk_thread_t* thread) {
+ return_value_if_fail(thread != NULL, RET_BAD_PARAMS);
+ vEventGroupDelete(thread->event_sync);
+ memset(thread, 0x00, sizeof(tk_thread_t));
+ TKMEM_FREE(thread);
+ return RET_OK;
+}
\ No newline at end of file
diff --git a/src/platforms/pc/dirent.inc b/src/platforms/pc/dirent.inc
index 09fac155be..dfd74542b0 100644
--- a/src/platforms/pc/dirent.inc
+++ b/src/platforms/pc/dirent.inc
@@ -29,27 +29,27 @@ struct dirent {
uint8_t d_type;
unsigned short d_reclen;
unsigned short d_namlen;
- char d_name[MAX_PATH];
+ wchar_t d_name[MAX_PATH];
};
typedef struct DIR DIR;
-DIR* opendir(const char*);
+DIR* opendir(const wchar_t*);
struct dirent* readdir(DIR*);
int closedir(DIR*);
struct DIR {
- char* dirname;
+ wchar_t* dirname;
struct dirent ret; /* Used to return to caller */
HANDLE handle;
};
-DIR* opendir(const char* dirname) {
+DIR* opendir(const wchar_t* dirname) {
DWORD attr;
DIR* d;
/* Make sure it is a directory */
- attr = GetFileAttributes(dirname);
+ attr = GetFileAttributesW(dirname);
if (attr == INVALID_FILE_ATTRIBUTES) {
errno = ENOENT;
return NULL;
@@ -64,17 +64,17 @@ DIR* opendir(const char* dirname) {
errno = ENOMEM;
return NULL;
}
- d->dirname = malloc(strlen(dirname) + 4);
+ d->dirname = malloc(wcslen(dirname) * sizeof(wchar_t) + 4);
if (!d->dirname) {
errno = ENOMEM;
free(d);
return NULL;
}
- strcpy(d->dirname, dirname);
- if (d->dirname[strlen(d->dirname) - 1] != '/' && d->dirname[strlen(d->dirname) - 1] != '\\')
- strcat(d->dirname, "\\"); /* Append backslash if not already
- * there */
- strcat(d->dirname, "*"); /* Search for entries named anything */
+ wcscpy(d->dirname, dirname);
+ if (d->dirname[wcslen(d->dirname) - 1] != '/' && d->dirname[wcslen(d->dirname) - 1] != '\\')
+ wcscat(d->dirname, L"\\"); /* Append backslash if not already
+ * there */
+ wcscat(d->dirname, L"*"); /* Search for entries named anything */
d->handle = INVALID_HANDLE_VALUE;
d->ret.d_ino = 0; /* no inodes on win32 */
d->ret.d_reclen = 0; /* not used on win32 */
@@ -86,16 +86,16 @@ void rewinddir(DIR* d) {
}
struct dirent* readdir(DIR* d) {
- WIN32_FIND_DATA fd;
+ WIN32_FIND_DATAW fd;
if (d->handle == INVALID_HANDLE_VALUE) {
- d->handle = FindFirstFile(d->dirname, &fd);
+ d->handle = FindFirstFileW(d->dirname, &fd);
if (d->handle == INVALID_HANDLE_VALUE) {
errno = ENOENT;
return NULL;
}
} else {
- if (!FindNextFile(d->handle, &fd)) {
+ if (!FindNextFileW(d->handle, &fd)) {
if (GetLastError() == ERROR_NO_MORE_FILES) {
/* No more files, force errno=0 (unlike mingw) */
errno = 0;
@@ -104,9 +104,9 @@ struct dirent* readdir(DIR* d) {
return NULL;
}
}
- strcpy(d->ret.d_name, fd.cFileName); /* Both strings are MAX_PATH
+ wcscpy(d->ret.d_name, fd.cFileName); /* Both strings are MAX_PATH
* long */
- d->ret.d_namlen = strlen(d->ret.d_name);
+ d->ret.d_namlen = wcslen(d->ret.d_name);
d->ret.d_type = 0;
if (fd.dwFileAttributes & FILE_ATTRIBUTE_NORMAL) {
diff --git a/src/platforms/pc/fs_os.c b/src/platforms/pc/fs_os.c
index e425d45416..e96a9ad311 100644
--- a/src/platforms/pc/fs_os.c
+++ b/src/platforms/pc/fs_os.c
@@ -8,6 +8,8 @@
#define rename MoveFileA
#define ftruncate _chsize
#include "./dirent.inc"
+#include "tkc/utf8.h"
+#include "tkc/mem.h"
#endif
#if defined(__APPLE__)
@@ -77,8 +79,18 @@ ret_t fs_os_dir_read(fs_dir_t* dir, fs_item_t* item) {
uint8_t type = ent->d_type;
item->is_dir = type & DT_DIR;
item->is_file = type & DT_REG;
+#ifdef WIN32
+ int16_t len = 0;
+ char* name = NULL;
+
+ len = wcslen(ent->d_name) * 2 + 1;
+ name = (char*)TKMEM_ALLOC(len);
+ utf8_from_utf16(ent->d_name, name, len);
+ tk_strncpy(item->name, name, MAX_PATH);
+ TKMEM_FREE(name);
+#else
tk_strncpy(item->name, ent->d_name, MAX_PATH);
-
+#endif
return RET_OK;
} else {
return RET_FAIL;
@@ -115,27 +127,98 @@ static fs_file_t* fs_file_create(FILE* fp) {
fs_file_t* fs_os_open_file(fs_t* fs, const char* name, const char* mode) {
(void)fs;
+ return_value_if_fail(name != NULL && mode != NULL, NULL);
+#ifdef WIN32
+ int16_t len = 0;
+ fs_file_t* file = NULL;
+ wchar_t* w_name = NULL;
+ wchar_t* w_mode = NULL;
+
+ len = strlen(name) + 1;
+ w_name = (wchar_t*)TKMEM_ALLOC(len * 2);
+ utf8_to_utf16(name, w_name, len);
+
+ len = strlen(mode) + 1;
+ w_mode = (wchar_t*)TKMEM_ALLOC(len * 2);
+ utf8_to_utf16(mode, w_mode, len);
+
+ file = fs_file_create(_wfopen(w_name, w_mode));
+ TKMEM_FREE(w_name);
+ TKMEM_FREE(w_mode);
+ return file;
+#else
return fs_file_create(fopen(name, mode));
+#endif
}
ret_t fs_os_remove_file(fs_t* fs, const char* name) {
(void)fs;
+ return_value_if_fail(name != NULL, FALSE);
- unlink(name);
+#ifdef WIN32
+ int16_t len = 0;
+ wchar_t* w_name = NULL;
+ len = strlen(name) + 1;
+ w_name = (wchar_t*)TKMEM_ALLOC(len * 2);
+ utf8_to_utf16(name, w_name, len);
+
+ _wunlink(w_name);
+ TKMEM_FREE(w_name);
+#else
+ unlink(name);
+#endif
return RET_OK;
}
bool_t fs_os_file_exist(fs_t* fs, const char* name) {
- struct stat st;
+ (void)fs;
+ return_value_if_fail(name != NULL, FALSE);
+#ifdef WIN32
+ bool_t rtn = FALSE;
+ int16_t len = 0;
+ wchar_t* w_name = NULL;
+ struct _stat64i32 st;
+
+ len = strlen(name) + 1;
+ w_name = (wchar_t*)TKMEM_ALLOC(len * 2);
+ utf8_to_utf16(name, w_name, len);
+
+ rtn = (_wstat(w_name, &st) == 0 && st.st_mode & S_IFREG);
+ TKMEM_FREE(w_name);
+ return rtn;
+#else
+ struct stat st;
return (stat(name, &st) == 0 && st.st_mode & S_IFREG);
+#endif
}
bool_t fs_os_file_rename(fs_t* fs, const char* name, const char* new_name) {
(void)fs;
-
+ return_value_if_fail(name != NULL && new_name != NULL, FALSE);
+
+#ifdef WIN32
+ bool_t rtn = FALSE;
+ int16_t len = 0;
+ wchar_t* w_name = NULL;
+ wchar_t* w_new_name = NULL;
+
+ len = strlen(name) + 1;
+ w_name = (wchar_t*)TKMEM_ALLOC(len * 2);
+ utf8_to_utf16(name, w_name, len);
+
+ len = strlen(new_name) + 1;
+ w_new_name = (wchar_t*)TKMEM_ALLOC(len * 2);
+ utf8_to_utf16(new_name, w_new_name, len);
+
+ rtn = _wrename(w_name, w_new_name) == 0;
+ TKMEM_FREE(w_name);
+ TKMEM_FREE(w_new_name);
+ return rtn;
+#else
return rename(name, new_name) == 0;
+#endif
}
fs_dir_t* fs_dir_create(DIR* dir) {
@@ -156,7 +239,23 @@ fs_dir_t* fs_dir_create(DIR* dir) {
}
fs_dir_t* fs_os_open_dir(fs_t* fs, const char* name) {
+ (void)fs;
+ return_value_if_fail(name != NULL, NULL);
+#ifdef WIN32
+ int16_t len = 0;
+ wchar_t* w_name = NULL;
+ fs_dir_t* pDir = NULL;
+
+ len = strlen(name) + 1;
+ w_name = (wchar_t*)TKMEM_ALLOC(len * 2);
+ utf8_to_utf16(name, w_name, len);
+
+ pDir = fs_dir_create(opendir(w_name));
+ TKMEM_FREE(w_name);
+ return pDir;
+#else
return fs_dir_create(opendir(name));
+#endif
}
ret_t fs_os_remove_dir(fs_t* fs, const char* name) {
@@ -165,9 +264,25 @@ ret_t fs_os_remove_dir(fs_t* fs, const char* name) {
}
bool_t fs_os_dir_exist(fs_t* fs, const char* name) {
+ (void)fs;
+ return_value_if_fail(name != NULL, FALSE);
+#ifdef WIN32
+ struct _stat64i32 st;
+ bool_t rtn = FALSE;
+ int16_t len = 0;
+ wchar_t* w_name = NULL;
+
+ len = strlen(name) + 1;
+ w_name = (wchar_t*)TKMEM_ALLOC(len * 2);
+ utf8_to_utf16(name, w_name, len);
+
+ rtn = (_wstat(w_name, &st) == 0 && st.st_mode & S_IFDIR);
+ TKMEM_FREE(w_name);
+ return rtn;
+#else
struct stat st;
-
return (stat(name, &st) == 0 && st.st_mode & S_IFDIR);
+#endif
}
bool_t fs_os_dir_rename(fs_t* fs, const char* name, const char* new_name) {
@@ -180,10 +295,30 @@ bool_t fs_os_dir_rename(fs_t* fs, const char* name, const char* new_name) {
}
int32_t fs_os_get_file_size(fs_t* fs, const char* name) {
+ (void)fs;
+ return_value_if_fail(name != NULL, -1);
+#ifdef WIN32
+ struct _stat64i32 st;
+ bool_t rtn = FALSE;
+ int16_t len = 0;
+ wchar_t* w_name = NULL;
+
+ len = strlen(name) + 1;
+ w_name = (wchar_t*)TKMEM_ALLOC(len * 2);
+ utf8_to_utf16(name, w_name, len);
+
+ int n = _wstat(w_name, &st);
+ rtn = n == 0;
+ TKMEM_FREE(w_name);
+ if (!rtn) {
+ return -1;
+ }
+ return st.st_size;
+#else
struct stat st;
return_value_if_fail(stat(name, &st) == 0, -1);
-
return st.st_size;
+#endif
}
ret_t fs_os_get_disk_info(fs_t* fs, const char* volume, int32_t* free_kb, int32_t* total_kb) {
diff --git a/src/platforms/pc/semaphore.c b/src/platforms/pc/semaphore.c
new file mode 100644
index 0000000000..676cc57113
--- /dev/null
+++ b/src/platforms/pc/semaphore.c
@@ -0,0 +1,114 @@
+/**
+ * File: semaphore.c
+ * Author: AWTK Develop Team
+ * Brief: semaphore
+ *
+ * Copyright (c) 2018 - 2019 Guangzhou ZHIYUAN Electronics Co.,Ltd.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * License file for more details.
+ *
+ */
+
+/**
+ * History:
+ * ================================================================
+ * 2019-10-27 Li XianJing created
+ *
+ */
+
+#ifdef WIN32
+#include
+#include
+struct _tk_semaphore_t {
+ HANDLE sem;
+};
+#elif defined(HAS_PTHREAD)
+#include
+#include
+#include
+#include
+struct _tk_semaphore_t {
+ sem_t* sem;
+};
+#endif
+
+#include "tkc/mem.h"
+#include "tkc/time_now.h"
+#include "tkc/platform.h"
+#include "tkc/semaphore.h"
+
+tk_semaphore_t* tk_semaphore_create(uint32_t value, const char* name) {
+ tk_semaphore_t* semaphore = TKMEM_ZALLOC(tk_semaphore_t);
+ return_value_if_fail(semaphore != NULL, NULL);
+
+#ifdef HAS_PTHREAD
+ semaphore->sem = sem_open(name, O_CREAT, S_IRUSR | S_IWUSR, value);
+ if (semaphore->sem == NULL) {
+ TKMEM_FREE(semaphore);
+ semaphore = NULL;
+ }
+#elif defined(WIN32)
+ semaphore->sem = CreateSemaphore(NULL, value, INT_MAX, name);
+ if (semaphore->sem == NULL) {
+ TKMEM_FREE(semaphore);
+ semaphore = NULL;
+ }
+#endif /*HAS_PTHREAD*/
+
+ return semaphore;
+}
+
+ret_t tk_semaphore_wait(tk_semaphore_t* semaphore, uint32_t timeout_ms) {
+ uint32_t start = time_now_ms();
+ return_value_if_fail(semaphore != NULL, RET_BAD_PARAMS);
+
+#ifdef HAS_PTHREAD
+ do {
+ if (sem_trywait(semaphore->sem) == 0) {
+ return RET_OK;
+ }
+
+ if ((time_now_ms() - start) >= timeout_ms) {
+ return RET_TIMEOUT;
+ }
+
+ sleep_ms(10);
+ } while (TRUE);
+#elif defined(WIN32)
+ if (WaitForSingleObject(semaphore->sem, timeout_ms) == WAIT_TIMEOUT) {
+ return RET_TIMEOUT;
+ }
+
+ return RET_OK;
+#endif /*HAS_PTHREAD*/
+}
+
+ret_t tk_semaphore_post(tk_semaphore_t* semaphore) {
+ return_value_if_fail(semaphore != NULL, RET_BAD_PARAMS);
+
+#ifdef HAS_PTHREAD
+ return_value_if_fail(sem_post(semaphore->sem) == 0, RET_FAIL);
+#elif defined(WIN32)
+ return_value_if_fail(ReleaseSemaphore(semaphore->sem, 1, NULL), RET_FAIL);
+#endif /*HAS_PTHREAD*/
+
+ return RET_OK;
+}
+
+ret_t tk_semaphore_destroy(tk_semaphore_t* semaphore) {
+ return_value_if_fail(semaphore != NULL, RET_BAD_PARAMS);
+
+#ifdef HAS_PTHREAD
+ sem_close(semaphore->sem);
+#elif defined(WIN32)
+ CloseHandle(semaphore->sem);
+#endif /*HAS_PTHREAD*/
+
+ memset(&semaphore, 0x00, sizeof(tk_semaphore_t));
+ TKMEM_FREE(semaphore);
+
+ return RET_OK;
+}
diff --git a/src/platforms/tos/cond_var.c b/src/platforms/tos/cond_var.c
index 6dd4cc6e0d..772a11c3fb 100644
--- a/src/platforms/tos/cond_var.c
+++ b/src/platforms/tos/cond_var.c
@@ -30,11 +30,11 @@ struct _tk_cond_var_t {
tk_cond_var_t* tk_cond_var_create(void) {
tk_cond_var_t* cond_var = TKMEM_ZALLOC(tk_cond_var_t);
return_value_if_fail(cond_var != NULL, NULL);
-
- if(tos_event_create(&(cond_var->event), 0) != K_ERR_NONE) {
+
+ if (tos_event_create(&(cond_var->event), 0) != K_ERR_NONE) {
TKMEM_FREE(cond_var);
}
-
+
return cond_var;
}
@@ -43,7 +43,9 @@ ret_t tk_cond_var_wait(tk_cond_var_t* cond_var, uint32_t timeout_ms) {
k_event_flag_t flag_expect = 1;
k_opt_t opt = TOS_OPT_EVENT_PEND_ANY | TOS_OPT_EVENT_PEND_CLR;
return_value_if_fail(cond_var != NULL, RET_BAD_PARAMS);
- return_value_if_fail(tos_event_pend(&(cond_var->event), flag_expect, &flag_match, timeout_ms, opt) == K_ERR_NONE, RET_FAIL);
+ return_value_if_fail(
+ tos_event_pend(&(cond_var->event), flag_expect, &flag_match, timeout_ms, opt) == K_ERR_NONE,
+ RET_FAIL);
return RET_OK;
}
diff --git a/src/platforms/tos/mutex.c b/src/platforms/tos/mutex.c
index 057316552a..4e0764428c 100644
--- a/src/platforms/tos/mutex.c
+++ b/src/platforms/tos/mutex.c
@@ -31,7 +31,7 @@ tk_mutex_t* tk_mutex_create() {
tk_mutex_t* mutex = TKMEM_ZALLOC(tk_mutex_t);
return_value_if_fail(mutex != NULL, NULL);
- if(tos_mutex_create(&(mutex->mutex)) != K_ERR_NONE) {
+ if (tos_mutex_create(&(mutex->mutex)) != K_ERR_NONE) {
TKMEM_FREE(mutex);
}
diff --git a/src/streams/README.md b/src/streams/README.md
new file mode 100644
index 0000000000..54a4b90af6
--- /dev/null
+++ b/src/streams/README.md
@@ -0,0 +1,11 @@
+# 各种stream的实现
+
+* file 文件流
+* mem 内存流
+* noisy 故障注入流
+* shdlc 点对点可靠传输流
+* buffered 缓存流
+* inet tcp/udp 流
+* serial 串口流
+* misc 其它流
+
diff --git a/src/streams/SConscript b/src/streams/SConscript
index e426c1cf90..4293f8adfa 100644
--- a/src/streams/SConscript
+++ b/src/streams/SConscript
@@ -4,8 +4,9 @@ import copy
BIN_DIR=os.environ['BIN_DIR'];
LIB_DIR=os.environ['LIB_DIR'];
-sources = Glob('buffered/*.c') + Glob('file/*.c') + Glob('inet/*.c') + Glob('mem/*.c') + Glob('serial/*.c') \
- + Glob('shdlc/*.c') + Glob('noisy/*.c')
+sources = Glob('buffered/*.c') + Glob('file/*.c') \
+ + Glob('inet/*.c') + Glob('mem/*.c') + Glob('serial/*.c') \
+ + Glob('shdlc/*.c') + Glob('noisy/*.c') + Glob('misc/*.c')
env=DefaultEnvironment().Clone()
diff --git a/src/streams/misc/ostream_retry.c b/src/streams/misc/ostream_retry.c
new file mode 100644
index 0000000000..15ac1bf1b9
--- /dev/null
+++ b/src/streams/misc/ostream_retry.c
@@ -0,0 +1,211 @@
+/**
+ * File: ostream_retry.c
+ * Author: AWTK Develop Team
+ * Brief: retry ostream: if write fail retry write later.
+ *
+ * Copyright (c) 2019 - 2019 Guangzhou ZHIYUAN Electronics Co.,Ltd.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * License file for more details.
+ *
+ */
+
+/**
+ * History:
+ * ================================================================
+ * 2019-10-26 Li XianJing created
+ *
+ */
+
+#include "tkc/buffer.h"
+#include "streams/misc/ostream_retry.h"
+
+static ret_t tk_ostream_retry_write_to_buffer(tk_ostream_retry_t* ostream_retry,
+ const uint8_t* buff, uint32_t max_size) {
+ ring_buffer_t* rb = ostream_retry->rb;
+ uint32_t size = max_size + sizeof(max_size);
+ data_discard_policy_t policy = ostream_retry->discard_policy;
+
+ if (ring_buffer_ensure_write_space(rb, size) != RET_OK) {
+ if (policy == DATA_DISCARD_NEW) {
+ ostream_retry->discard_packets++;
+ ostream_retry->discard_bytes += max_size;
+ return RET_OK;
+ } else {
+ tk_ostream_retry_clear_buffer(TK_OSTREAM(ostream_retry));
+ }
+ }
+
+ return_value_if_fail(ring_buffer_write_len(rb, &max_size, sizeof(max_size)) == RET_OK, RET_FAIL);
+ return_value_if_fail(ring_buffer_write_len(rb, buff, max_size) == RET_OK, RET_FAIL);
+ ostream_retry->pending_bytes += max_size;
+ ostream_retry->pending_packets++;
+
+ return RET_OK;
+}
+
+static int32_t tk_ostream_retry_write(tk_ostream_t* stream, const uint8_t* buff,
+ uint32_t max_size) {
+ tk_ostream_retry_t* ostream_retry = TK_OSTREAM_RETRY(stream);
+ tk_ostream_t* ostream = ostream_retry->real_ostream;
+ uint32_t timeout = ostream_retry->timeout;
+ ring_buffer_t* rb = ostream_retry->rb;
+
+ if (ring_buffer_size(rb) > 0) {
+ tk_ostream_flush(stream);
+ }
+
+ if (ring_buffer_size(rb) > 0) {
+ tk_ostream_retry_write_to_buffer(ostream_retry, buff, max_size);
+ tk_ostream_flush(stream);
+ } else {
+ int32_t ret = tk_ostream_write_len(ostream, buff, max_size, timeout);
+ if (ret <= 0) {
+ tk_ostream_retry_write_to_buffer(ostream_retry, buff, max_size);
+ } else if (ret < max_size) {
+ tk_ostream_retry_write_to_buffer(ostream_retry, buff + ret, max_size - ret);
+ }
+ }
+
+ return max_size;
+}
+
+static ret_t tk_ostream_retry_flush(tk_ostream_t* stream) {
+ uint32_t size = 0;
+ tk_ostream_retry_t* ostream_retry = TK_OSTREAM_RETRY(stream);
+ uint32_t timeout = ostream_retry->timeout;
+ ring_buffer_t* rb = ostream_retry->rb;
+
+ if (!ring_buffer_is_empty(rb)) {
+ wbuffer_t* wb = &(ostream_retry->wb);
+ tk_ostream_t* ostream = ostream_retry->real_ostream;
+
+ do {
+ uint32_t packet_size = 0;
+ ostream_retry->retried_times++;
+ if (ring_buffer_peek(rb, &size, sizeof(size)) != sizeof(size)) {
+ break;
+ }
+ wb->cursor = 0;
+ packet_size = size + sizeof(size);
+
+ return_value_if_fail(wbuffer_extend_capacity(wb, size) == RET_OK, RET_OOM);
+ if (ring_buffer_peek(rb, wb->data, packet_size) != packet_size) {
+ break;
+ }
+
+ if (tk_ostream_write_len(ostream, wb->data + sizeof(size), size, timeout) == size) {
+ ostream_retry->retried_times = 0;
+ ostream_retry->pending_packets--;
+ ostream_retry->pending_bytes -= size;
+ ring_buffer_skip(rb, packet_size);
+ } else {
+ if (ostream_retry->retried_times == ostream_retry->max_retry_times) {
+ tk_ostream_retry_clear_buffer(stream);
+ }
+ break;
+ }
+ } while (TRUE);
+ }
+
+ return RET_OK;
+}
+
+static ret_t tk_ostream_retry_set_prop(object_t* obj, const char* name, const value_t* v) {
+ tk_ostream_retry_t* ostream_retry = TK_OSTREAM_RETRY(obj);
+ tk_ostream_t* real_ostream = ostream_retry->real_ostream;
+
+ return object_set_prop(OBJECT(real_ostream), name, v);
+}
+
+static ret_t tk_ostream_retry_get_prop(object_t* obj, const char* name, value_t* v) {
+ tk_ostream_retry_t* ostream_retry = TK_OSTREAM_RETRY(obj);
+ tk_ostream_t* real_ostream = ostream_retry->real_ostream;
+
+ return object_get_prop(OBJECT(real_ostream), name, v);
+}
+
+static ret_t tk_ostream_retry_on_destroy(object_t* obj) {
+ tk_ostream_retry_t* ostream_retry = TK_OSTREAM_RETRY(obj);
+
+ wbuffer_deinit(&(ostream_retry->wb));
+ ring_buffer_destroy(ostream_retry->rb);
+ OBJECT_UNREF(ostream_retry->real_ostream);
+
+ return RET_OK;
+}
+
+static const object_vtable_t s_tk_ostream_retry_vtable = {.type = "tk_ostream_retry",
+ .desc = "tk_ostream_retry",
+ .size = sizeof(tk_ostream_retry_t),
+ .on_destroy = tk_ostream_retry_on_destroy,
+ .get_prop = tk_ostream_retry_get_prop,
+ .set_prop = tk_ostream_retry_set_prop};
+
+tk_ostream_t* tk_ostream_retry_create(tk_ostream_t* real_ostream) {
+ object_t* obj = NULL;
+ tk_ostream_retry_t* ostream_retry = NULL;
+ return_value_if_fail(real_ostream != NULL, NULL);
+
+ obj = object_create(&s_tk_ostream_retry_vtable);
+ ostream_retry = TK_OSTREAM_RETRY(obj);
+ return_value_if_fail(ostream_retry != NULL, NULL);
+
+ OBJECT_REF(real_ostream);
+ ostream_retry->timeout = 3000;
+ ostream_retry->max_retry_times = 10;
+ ostream_retry->real_ostream = real_ostream;
+ ostream_retry->rb = ring_buffer_create(1024, 4096);
+ wbuffer_init_extendable(&(ostream_retry->wb));
+ TK_OSTREAM(obj)->write = tk_ostream_retry_write;
+ TK_OSTREAM(obj)->flush = tk_ostream_retry_flush;
+
+ return TK_OSTREAM(obj);
+}
+
+ret_t tk_ostream_retry_set_max_retry_times(tk_ostream_t* ostream, uint32_t max_retry_times) {
+ tk_ostream_retry_t* ostream_retry = TK_OSTREAM_RETRY(ostream);
+ return_value_if_fail(ostream_retry != NULL, RET_BAD_PARAMS);
+
+ ostream_retry->max_retry_times = max_retry_times;
+
+ return RET_OK;
+}
+
+ret_t tk_ostream_retry_set_max_buffer_size(tk_ostream_t* ostream, uint32_t max_buffer_size) {
+ tk_ostream_retry_t* ostream_retry = TK_OSTREAM_RETRY(ostream);
+ ring_buffer_t* rb = ostream_retry->rb;
+ return_value_if_fail(ostream_retry != NULL, RET_BAD_PARAMS);
+
+ rb->max_capacity = tk_max(rb->max_capacity, max_buffer_size);
+
+ return RET_OK;
+}
+
+ret_t tk_ostream_retry_clear_buffer(tk_ostream_t* ostream) {
+ tk_ostream_retry_t* ostream_retry = TK_OSTREAM_RETRY(ostream);
+ ring_buffer_t* rb = ostream_retry->rb;
+ return_value_if_fail(ostream_retry != NULL, RET_BAD_PARAMS);
+
+ ostream_retry->retried_times = 0;
+ ostream_retry->discard_bytes += ostream_retry->pending_bytes;
+ ostream_retry->discard_packets += ostream_retry->pending_packets;
+
+ ring_buffer_reset(rb);
+ ostream_retry->pending_bytes = 0;
+ ostream_retry->pending_packets = 0;
+
+ return RET_OK;
+}
+
+ret_t tk_ostream_retry_set_discard_policy(tk_ostream_t* ostream,
+ data_discard_policy_t discard_policy) {
+ tk_ostream_retry_t* ostream_retry = TK_OSTREAM_RETRY(ostream);
+ return_value_if_fail(ostream_retry != NULL, RET_BAD_PARAMS);
+
+ ostream_retry->discard_policy = discard_policy;
+
+ return RET_OK;
+}
diff --git a/src/streams/misc/ostream_retry.h b/src/streams/misc/ostream_retry.h
new file mode 100644
index 0000000000..21433120ef
--- /dev/null
+++ b/src/streams/misc/ostream_retry.h
@@ -0,0 +1,187 @@
+/**
+ * File: ostream_retry.h
+ * Author: AWTK Develop Team
+ * Brief: retry ostream: if write fail retry write later.
+ *
+ *
+ * Copyright (c) 2019 - 2019 Guangzhou ZHIYUAN Electronics Co.,Ltd.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * License file for more details.
+ *
+ */
+
+/**
+ * History:
+ * ================================================================
+ * 2019-10-26 Li XianJing created
+ *
+ */
+
+#ifndef TK_OSTREAM_RETRY_H
+#define TK_OSTREAM_RETRY_H
+
+#include "tkc/buffer.h"
+#include "tkc/ostream.h"
+#include "tkc/ring_buffer.h"
+
+BEGIN_C_DECLS
+
+struct _tk_ostream_retry_t;
+typedef struct _tk_ostream_retry_t tk_ostream_retry_t;
+
+/**
+ * @enum data_discard_policy_t
+ * @annotation ["scriptable"]
+ * @prefix DATA_DISCARD_
+ *
+ * 缓存不够时丢弃数据的策略。
+ */
+typedef enum _data_discard_policy_t {
+ /**
+ * @const DATA_DISCARD_OLD
+ * 丢弃旧的数据。
+ */
+ DATA_DISCARD_OLD = 0,
+ /**
+ * @const DATA_DISCARD_NEW
+ * 丢弃新的数据。
+ */
+ DATA_DISCARD_NEW
+} data_discard_policy_t;
+
+/**
+ * @class tk_ostream_retry_t
+ * @parent tk_ostream_t
+ *
+ * 如果写数据失败,将数据放入ring_buffer,后面再重试(flush)。
+ *
+ * 如果重试次数超出最大值,则丢掉数据。
+ *
+ */
+struct _tk_ostream_retry_t {
+ tk_ostream_t ostream;
+
+ /**
+ * @property {uint32_t} pending_bytes
+ * @annotation ["readable"]
+ * 待重写的数据大小。
+ */
+ uint32_t pending_bytes;
+ /**
+ * @property {uint32_t} pending_packets
+ * @annotation ["readable"]
+ * 待重写的数据包的个数。
+ */
+ uint32_t pending_packets;
+ /**
+ * @property {uint32_t} discard_bytes
+ * @annotation ["readable"]
+ * 总共丢弃数据的字节数。
+ */
+ uint32_t discard_bytes;
+ /**
+ * @property {uint32_t} discard_packets
+ * @annotation ["readable"]
+ * 总共丢弃数据包的个数。
+ */
+ uint32_t discard_packets;
+ /**
+ * @property {uint32_t} max_retry_times
+ * @annotation ["readable"]
+ * 尝试次数超过指定的值时丢弃该数据包。
+ */
+ uint32_t max_retry_times;
+ /**
+ * @property {uint32_t} timeout
+ * @annotation ["readable"]
+ * 写超时时间(ms)。
+ */
+ uint32_t timeout;
+ /**
+ * @property {data_discard_policy_t} discard_policy
+ * @annotation ["readable"]
+ * 缓存不够时,丢弃数据包的策略。
+ */
+ data_discard_policy_t discard_policy;
+
+ /*private*/
+ wbuffer_t wb;
+ ring_buffer_t* rb;
+ uint32_t retried_times;
+ tk_ostream_t* real_ostream;
+};
+
+/**
+ * @method tk_ostream_retry_create
+ *
+ * 创建ostream对象。
+ *
+ * 本函数自动增加real_ostream的引用计数。
+ *
+ * @param {tk_ostream_t*} real_ostream 实际的ostream对象。
+ *
+ * @return {tk_ostream_t*} 返回ostream对象。
+ *
+ */
+tk_ostream_t* tk_ostream_retry_create(tk_ostream_t* real_ostream);
+
+/**
+ * @method tk_ostream_retry_set_max_retry_times
+ *
+ * 设置最大尝试次数。
+ *
+ * @param {tk_ostream_t*} ostream ostream对象。
+ * @param {uint32_t} max_retry_times 最大尝试次数。
+ *
+ * @return {ret_t} 返回RET_OK表示成功,否则表示失败。
+ *
+ */
+ret_t tk_ostream_retry_set_max_retry_times(tk_ostream_t* ostream, uint32_t max_retry_times);
+
+/**
+ * @method tk_ostream_retry_set_max_buffer_size
+ *
+ * 设置最大缓存大小。
+ *
+ * @param {tk_ostream_t*} ostream ostream对象。
+ * @param {uint32_t} max_buffer_size 缓存大小。
+ *
+ * @return {ret_t} 返回RET_OK表示成功,否则表示失败。
+ *
+ */
+ret_t tk_ostream_retry_set_max_buffer_size(tk_ostream_t* ostream, uint32_t max_buffer_size);
+
+/**
+ * @method tk_ostream_retry_clear_buffer
+ *
+ * 清除缓存的数据。
+ *
+ * @param {tk_ostream_t*} ostream ostream对象。
+ *
+ * @return {ret_t} 返回RET_OK表示成功,否则表示失败。
+ *
+ */
+ret_t tk_ostream_retry_clear_buffer(tk_ostream_t* ostream);
+
+/**
+ * @method tk_ostream_retry_set_discard_policy
+ *
+ * 设置数据丢弃策略。
+ *
+ * @param {tk_ostream_t*} ostream ostream对象。
+ * @param {data_discard_policy_t} discard_policy 丢弃策略。
+ *
+ * @return {ret_t} 返回RET_OK表示成功,否则表示失败。
+ *
+ */
+ret_t tk_ostream_retry_set_discard_policy(tk_ostream_t* ostream,
+ data_discard_policy_t discard_policy);
+
+#define TK_OSTREAM_RETRY(obj) ((tk_ostream_retry_t*)(obj))
+
+END_C_DECLS
+
+#endif /*TK_OSTREAM_RETRY_H*/
diff --git a/src/tkc/color_parser.c b/src/tkc/color_parser.c
index b94a883133..143a1fb987 100644
--- a/src/tkc/color_parser.c
+++ b/src/tkc/color_parser.c
@@ -8,146 +8,146 @@ typedef struct _color_map_t {
const char* value;
} color_map_t;
-static color_map_t colors_map[] = {{"aliceblue", "#f0f8ff"},
- {"antiquewhite", "#faebd7"},
- {"aqua", "#00ffff"},
- {"aquamarine", "#7fffd4"},
- {"azure", "#f0ffff"},
- {"beige", "#f5f5dc"},
- {"bisque", "#ffe4c4"},
- {"black", "#000000"},
- {"blanchedalmond", "#ffebcd"},
- {"blue", "#0000ff"},
- {"blueviolet", "#8a2be2"},
- {"brown", "#a52a2a"},
- {"burlywood", "#deb887"},
- {"cadetblue", "#5f9ea0"},
- {"chartreuse", "#7fff00"},
- {"chocolate", "#d2691e"},
- {"coral", "#ff7f50"},
- {"cornflowerblue", "#6495ed"},
- {"cornsilk", "#fff8dc"},
- {"crimson", "#dc143c"},
- {"cyan", "#00ffff"},
- {"darkblue", "#00008b"},
- {"darkcyan", "#008b8b"},
- {"darkgoldenrod", "#b8860b"},
- {"darkgray", "#a9a9a9"},
- {"darkgreen", "#006400"},
- {"darkkhaki", "#bdb76b"},
- {"darkmagenta", "#8b008b"},
- {"darkolivegreen", "#556b2f"},
- {"darkorange", "#ff8c00"},
- {"darkorchid", "#9932cc"},
- {"darkred", "#8b0000"},
- {"darksalmon", "#e9967a"},
- {"darkseagreen", "#8fbc8f"},
- {"darkslateblue", "#483d8b"},
- {"darkslategray", "#2f4f4f"},
- {"darkturquoise", "#00ced1"},
- {"darkviolet", "#9400d3"},
- {"deeppink", "#ff1493"},
- {"deepskyblue", "#00bfff"},
- {"dimgray", "#696969"},
- {"dodgerblue", "#1e90ff"},
- {"firebrick", "#b22222"},
- {"floralwhite", "#fffaf0"},
- {"forestgreen", "#228b22"},
- {"fuchsia", "#ff00ff"},
- {"gainsboro", "#dcdcdc"},
- {"ghostwhite", "#f8f8ff"},
- {"gold", "#ffd700"},
- {"goldenrod", "#daa520"},
- {"gray", "#bebebe"},
- {"green", "#008000"},
- {"greenyellow", "#adff2f"},
- {"honeydew", "#f0fff0"},
- {"hotpink", "#ff69b4"},
- {"indianred", "#cd5c5c"},
- {"indigo", "#4b0082"},
- {"ivory", "#fffff0"},
- {"khaki", "#f0d58c"},
- {"lavender", "#e6e6fa"},
- {"lavenderblush", "#fff0f5"},
- {"lawngreen", "#7cfc00"},
- {"lemonchiffon", "#fffacd"},
- {"lightblue", "#add8e6"},
- {"lightcoral", "#f08080"},
- {"lightcyan", "#e0ffff"},
- {"lightgoldenrodyellow", "#fafad2"},
- {"lightgreen", "#90ee90"},
- {"lightgrey", "#d3d3d3"},
- {"lightpink", "#ffb6c1"},
- {"lightsalmon", "#ffa07a"},
- {"lightseagreen", "#20b2aa"},
- {"lightskyblue", "#87cefa"},
- {"lightslategray", "#778899"},
- {"lightsteelblue", "#b0c4de"},
- {"lightyellow", "#ffffe0"},
- {"lime", "#00ff00"},
- {"limegreen", "#32cd32"},
- {"linen", "#faf0e6"},
- {"magenta", "#ff00ff"},
- {"maroon", "#800000"},
- {"mediumaquamarine", "#66cdaa"},
- {"mediumblue", "#0000cd"},
- {"mediumorchid", "#ba55d3"},
- {"mediumpurple", "#9370db"},
- {"mediumseagreen", "#3cb371"},
- {"mediumslateblue", "#7b68ee"},
- {"mediumspringgreen", "#00fa9a"},
- {"mediumturquoise", "#48d1cc"},
- {"mediumvioletred", "#c71585"},
- {"midnightblue", "#191970"},
- {"mintcream", "#f5fffa"},
- {"mistyrose", "#ffe4e1"},
- {"moccasin", "#ffe4b5"},
- {"navajowhite", "#ffdead"},
- {"navy", "#000080"},
- {"oldlace", "#fdf5e6"},
- {"olive", "#808000"},
- {"olivedrab", "#6b8e23"},
- {"orange", "#ffa500"},
- {"orangered", "#ff4500"},
- {"orchid", "#da70d6"},
- {"palegoldenrod", "#eee8aa"},
- {"palegreen", "#98fb98"},
- {"paleturquoise", "#afeeee"},
- {"palevioletred", "#db7093"},
- {"papayawhip", "#ffefd5"},
- {"peachpuff", "#ffdab9"},
- {"peru", "#cd853f"},
- {"pink", "#ffc0cb"},
- {"plum", "#dda0dd"},
- {"powderblue", "#b0e0e6"},
- {"purple", "#800080"},
- {"red", "#ff0000"},
- {"rosybrown", "#bc8f8f"},
- {"royalblue", "#4169e1"},
- {"saddlebrown", "#8b4513"},
- {"salmon", "#fa8072"},
- {"sandybrown", "#f4a460"},
- {"seagreen", "#2e8b57"},
- {"seashell", "#fff5ee"},
- {"sienna", "#a0522d"},
- {"silver", "#c0c0c0"},
- {"skyblue", "#87ceeb"},
- {"slateblue", "#6a5acd"},
- {"slategray", "#708090"},
- {"snow", "#fffafa"},
- {"springgreen", "#00ff7f"},
- {"steelblue", "#4682b4"},
- {"tan", "#d2b48c"},
- {"teal", "#008080"},
- {"thistle", "#d8bfd8"},
- {"tomato", "#ff6347"},
- {"turquoise", "#40e0d0"},
- {"violet", "#ee82ee"},
- {"wheat", "#f5deb3"},
- {"white", "#ffffff"},
- {"whitesmoke", "#f5f5f5"},
- {"yellow", "#ffff00"},
- {"yellowgreen", "#9acd32"}};
+static color_map_t const colors_map[] = {{"aliceblue", "#f0f8ff"},
+ {"antiquewhite", "#faebd7"},
+ {"aqua", "#00ffff"},
+ {"aquamarine", "#7fffd4"},
+ {"azure", "#f0ffff"},
+ {"beige", "#f5f5dc"},
+ {"bisque", "#ffe4c4"},
+ {"black", "#000000"},
+ {"blanchedalmond", "#ffebcd"},
+ {"blue", "#0000ff"},
+ {"blueviolet", "#8a2be2"},
+ {"brown", "#a52a2a"},
+ {"burlywood", "#deb887"},
+ {"cadetblue", "#5f9ea0"},
+ {"chartreuse", "#7fff00"},
+ {"chocolate", "#d2691e"},
+ {"coral", "#ff7f50"},
+ {"cornflowerblue", "#6495ed"},
+ {"cornsilk", "#fff8dc"},
+ {"crimson", "#dc143c"},
+ {"cyan", "#00ffff"},
+ {"darkblue", "#00008b"},
+ {"darkcyan", "#008b8b"},
+ {"darkgoldenrod", "#b8860b"},
+ {"darkgray", "#a9a9a9"},
+ {"darkgreen", "#006400"},
+ {"darkkhaki", "#bdb76b"},
+ {"darkmagenta", "#8b008b"},
+ {"darkolivegreen", "#556b2f"},
+ {"darkorange", "#ff8c00"},
+ {"darkorchid", "#9932cc"},
+ {"darkred", "#8b0000"},
+ {"darksalmon", "#e9967a"},
+ {"darkseagreen", "#8fbc8f"},
+ {"darkslateblue", "#483d8b"},
+ {"darkslategray", "#2f4f4f"},
+ {"darkturquoise", "#00ced1"},
+ {"darkviolet", "#9400d3"},
+ {"deeppink", "#ff1493"},
+ {"deepskyblue", "#00bfff"},
+ {"dimgray", "#696969"},
+ {"dodgerblue", "#1e90ff"},
+ {"firebrick", "#b22222"},
+ {"floralwhite", "#fffaf0"},
+ {"forestgreen", "#228b22"},
+ {"fuchsia", "#ff00ff"},
+ {"gainsboro", "#dcdcdc"},
+ {"ghostwhite", "#f8f8ff"},
+ {"gold", "#ffd700"},
+ {"goldenrod", "#daa520"},
+ {"gray", "#bebebe"},
+ {"green", "#008000"},
+ {"greenyellow", "#adff2f"},
+ {"honeydew", "#f0fff0"},
+ {"hotpink", "#ff69b4"},
+ {"indianred", "#cd5c5c"},
+ {"indigo", "#4b0082"},
+ {"ivory", "#fffff0"},
+ {"khaki", "#f0d58c"},
+ {"lavender", "#e6e6fa"},
+ {"lavenderblush", "#fff0f5"},
+ {"lawngreen", "#7cfc00"},
+ {"lemonchiffon", "#fffacd"},
+ {"lightblue", "#add8e6"},
+ {"lightcoral", "#f08080"},
+ {"lightcyan", "#e0ffff"},
+ {"lightgoldenrodyellow", "#fafad2"},
+ {"lightgreen", "#90ee90"},
+ {"lightgrey", "#d3d3d3"},
+ {"lightpink", "#ffb6c1"},
+ {"lightsalmon", "#ffa07a"},
+ {"lightseagreen", "#20b2aa"},
+ {"lightskyblue", "#87cefa"},
+ {"lightslategray", "#778899"},
+ {"lightsteelblue", "#b0c4de"},
+ {"lightyellow", "#ffffe0"},
+ {"lime", "#00ff00"},
+ {"limegreen", "#32cd32"},
+ {"linen", "#faf0e6"},
+ {"magenta", "#ff00ff"},
+ {"maroon", "#800000"},
+ {"mediumaquamarine", "#66cdaa"},
+ {"mediumblue", "#0000cd"},
+ {"mediumorchid", "#ba55d3"},
+ {"mediumpurple", "#9370db"},
+ {"mediumseagreen", "#3cb371"},
+ {"mediumslateblue", "#7b68ee"},
+ {"mediumspringgreen", "#00fa9a"},
+ {"mediumturquoise", "#48d1cc"},
+ {"mediumvioletred", "#c71585"},
+ {"midnightblue", "#191970"},
+ {"mintcream", "#f5fffa"},
+ {"mistyrose", "#ffe4e1"},
+ {"moccasin", "#ffe4b5"},
+ {"navajowhite", "#ffdead"},
+ {"navy", "#000080"},
+ {"oldlace", "#fdf5e6"},
+ {"olive", "#808000"},
+ {"olivedrab", "#6b8e23"},
+ {"orange", "#ffa500"},
+ {"orangered", "#ff4500"},
+ {"orchid", "#da70d6"},
+ {"palegoldenrod", "#eee8aa"},
+ {"palegreen", "#98fb98"},
+ {"paleturquoise", "#afeeee"},
+ {"palevioletred", "#db7093"},
+ {"papayawhip", "#ffefd5"},
+ {"peachpuff", "#ffdab9"},
+ {"peru", "#cd853f"},
+ {"pink", "#ffc0cb"},
+ {"plum", "#dda0dd"},
+ {"powderblue", "#b0e0e6"},
+ {"purple", "#800080"},
+ {"red", "#ff0000"},
+ {"rosybrown", "#bc8f8f"},
+ {"royalblue", "#4169e1"},
+ {"saddlebrown", "#8b4513"},
+ {"salmon", "#fa8072"},
+ {"sandybrown", "#f4a460"},
+ {"seagreen", "#2e8b57"},
+ {"seashell", "#fff5ee"},
+ {"sienna", "#a0522d"},
+ {"silver", "#c0c0c0"},
+ {"skyblue", "#87ceeb"},
+ {"slateblue", "#6a5acd"},
+ {"slategray", "#708090"},
+ {"snow", "#fffafa"},
+ {"springgreen", "#00ff7f"},
+ {"steelblue", "#4682b4"},
+ {"tan", "#d2b48c"},
+ {"teal", "#008080"},
+ {"thistle", "#d8bfd8"},
+ {"tomato", "#ff6347"},
+ {"turquoise", "#40e0d0"},
+ {"violet", "#ee82ee"},
+ {"wheat", "#f5deb3"},
+ {"white", "#ffffff"},
+ {"whitesmoke", "#f5f5f5"},
+ {"yellow", "#ffff00"},
+ {"yellowgreen", "#9acd32"}};
static int compare_color(const color_map_t* a, const color_map_t* b) {
return strcmp(a->name, b->name);
diff --git a/src/tkc/emitter.c b/src/tkc/emitter.c
index 206c98db54..cd4d65ae1b 100644
--- a/src/tkc/emitter.c
+++ b/src/tkc/emitter.c
@@ -146,15 +146,17 @@ ret_t emitter_dispatch(emitter_t* emitter, event_t* e) {
return RET_OK;
}
-uint32_t emitter_on(emitter_t* emitter, uint32_t etype, event_func_t handler, void* ctx) {
+uint32_t emitter_on_with_tag(emitter_t* emitter, uint32_t etype, event_func_t handler, void* ctx,
+ uint32_t tag) {
emitter_item_t* iter = NULL;
return_value_if_fail(emitter != NULL && handler != NULL, TK_INVALID_ID);
iter = TKMEM_ZALLOC(emitter_item_t);
return_value_if_fail(iter != NULL, TK_INVALID_ID);
- iter->type = etype;
+ iter->tag = tag;
iter->ctx = ctx;
+ iter->type = etype;
iter->handler = handler;
iter->id = emitter->next_id++;
iter->next = emitter->items;
@@ -163,6 +165,10 @@ uint32_t emitter_on(emitter_t* emitter, uint32_t etype, event_func_t handler, vo
return iter->id;
}
+uint32_t emitter_on(emitter_t* emitter, uint32_t etype, event_func_t handler, void* ctx) {
+ return emitter_on_with_tag(emitter, etype, handler, ctx, 0);
+}
+
emitter_item_t* emitter_find(emitter_t* emitter, uint32_t id) {
return_value_if_fail(emitter != NULL, NULL);
@@ -197,7 +203,7 @@ uint32_t emitter_size(emitter_t* emitter) {
return size;
}
-ret_t emitter_off(emitter_t* emitter, uint32_t id) {
+static ret_t emitter_off_ex(emitter_t* emitter, tk_compare_t cmp, void* ctx) {
return_value_if_fail(emitter != NULL, RET_BAD_PARAMS);
if (emitter->items) {
@@ -205,7 +211,7 @@ ret_t emitter_off(emitter_t* emitter, uint32_t id) {
emitter_item_t* prev = emitter->items;
while (iter != NULL) {
- if (iter->id == id) {
+ if (cmp(iter, ctx) == 0) {
return emitter_remove(emitter, prev, iter);
}
@@ -217,51 +223,79 @@ ret_t emitter_off(emitter_t* emitter, uint32_t id) {
return RET_FAIL;
}
-ret_t emitter_off_by_func(emitter_t* emitter, uint32_t etype, event_func_t handler, void* ctx) {
- return_value_if_fail(emitter != NULL && handler != NULL, RET_BAD_PARAMS);
+static int emitter_item_compare_by_tag(const void* a, const void* b) {
+ const emitter_item_t* item = (const emitter_item_t*)a;
+ uint32_t tag = *(const uint32_t*)b;
- if (emitter->items) {
- emitter_item_t* iter = emitter->items;
- emitter_item_t* prev = emitter->items;
+ return item->tag - tag;
+}
- while (iter != NULL) {
- if (iter->type == etype && iter->ctx == ctx && iter->handler == handler) {
- return emitter_remove(emitter, prev, iter);
- }
+static int emitter_item_compare_by_ctx(const void* a, const void* b) {
+ const emitter_item_t* item = (const emitter_item_t*)a;
- prev = iter;
- iter = iter->next;
- }
+ return item->ctx == b ? 0 : 1;
+}
+
+static int emitter_item_compare_by_id(const void* a, const void* b) {
+ const emitter_item_t* item = (const emitter_item_t*)a;
+ uint32_t id = *(const uint32_t*)b;
+
+ return item->id - id;
+}
+
+static int emitter_item_compare_by_func(const void* a, const void* b) {
+ const emitter_item_t* item = (const emitter_item_t*)a;
+ const emitter_item_t* p = (const emitter_item_t*)a;
+
+ if (item->type == p->type && item->ctx == p->ctx && item->handler == p->handler) {
+ return 0;
}
- return RET_FAIL;
+ return -1;
}
-ret_t emitter_off_by_ctx(emitter_t* emitter, void* ctx) {
- return_value_if_fail(emitter != NULL, RET_BAD_PARAMS);
+ret_t emitter_off(emitter_t* emitter, uint32_t id) {
+ return emitter_off_ex(emitter, emitter_item_compare_by_id, &id);
+}
- if (emitter->items) {
- emitter_item_t* iter = emitter->items;
- emitter_item_t* prev = emitter->items;
+ret_t emitter_off_by_func(emitter_t* emitter, uint32_t etype, event_func_t handler, void* ctx) {
+ emitter_item_t item;
- while (iter != NULL) {
- emitter_item_t* next = iter->next;
+ memset(&item, 0x00, sizeof(item));
- if (iter->ctx == ctx) {
- emitter_remove(emitter, prev, iter);
+ item.ctx = ctx;
+ item.type = etype;
+ item.handler = handler;
- if (prev == iter) {
- prev = next;
- }
- } else {
- prev = iter;
+ return emitter_off_ex(emitter, emitter_item_compare_by_func, &item);
+}
+
+ret_t emitter_off_by_tag(emitter_t* emitter, uint32_t tag) {
+ ret_t ret = emitter_off_ex(emitter, emitter_item_compare_by_tag, &tag);
+
+ if (ret == RET_OK) {
+ while (TRUE) {
+ if (emitter_off_ex(emitter, emitter_item_compare_by_tag, &tag) != RET_OK) {
+ break;
}
+ }
+ }
- iter = next;
+ return ret;
+}
+
+ret_t emitter_off_by_ctx(emitter_t* emitter, void* ctx) {
+ ret_t ret = emitter_off_ex(emitter, emitter_item_compare_by_ctx, ctx);
+
+ if (ret == RET_OK) {
+ while (TRUE) {
+ if (emitter_off_ex(emitter, emitter_item_compare_by_ctx, ctx) != RET_OK) {
+ break;
+ }
}
}
- return RET_OK;
+ return ret;
}
ret_t emitter_enable(emitter_t* emitter) {
diff --git a/src/tkc/emitter.h b/src/tkc/emitter.h
index 705d70727e..0f4221a3d0 100644
--- a/src/tkc/emitter.h
+++ b/src/tkc/emitter.h
@@ -35,6 +35,7 @@ struct _emitter_item_t {
uint32_t type;
event_func_t handler;
+ uint32_t tag;
tk_destroy_t on_destroy;
void* on_destroy_ctx;
emitter_item_t* next;
@@ -137,6 +138,21 @@ ret_t emitter_dispatch_simple_event(emitter_t* emitter, uint32_t type);
*/
uint32_t emitter_on(emitter_t* emitter, uint32_t etype, event_func_t handler, void* ctx);
+/**
+ * @method emitter_on_with_tag
+ * 注册指定事件的处理函数。
+ * @annotation ["scriptable:custom"]
+ * @param {emitter_t*} emitter emitter对象。
+ * @param {uint32_t} type 事件类型。
+ * @param {event_func_t} on_event 事件处理函数。
+ * @param {void*} ctx 事件处理函数上下文。
+ * @param {uint32_t} tag tag。
+ *
+ * @return {uint32_t} 返回id,用于emitter_off。
+ */
+uint32_t emitter_on_with_tag(emitter_t* emitter, uint32_t etype, event_func_t handler, void* ctx,
+ uint32_t tag);
+
/**
* @method emitter_off
* 注销指定事件的处理函数。
@@ -170,6 +186,16 @@ ret_t emitter_off_by_func(emitter_t* emitter, uint32_t etype, event_func_t handl
*/
ret_t emitter_off_by_ctx(emitter_t* emitter, void* ctx);
+/**
+ * @method emitter_off_by_tag
+ * 注销指定事件的处理函数。
+ * @param {emitter_t*} emitter emitter对象。
+ * @param {uint32_t} tag tag。
+ *
+ * @return {ret_t} 返回RET_OK表示成功,否则表示失败。
+ */
+ret_t emitter_off_by_tag(emitter_t* emitter, uint32_t tag);
+
/**
* @method emitter_set_on_destroy
* 设置一个回调函数,在emitter被销毁时调用(方便脚本语言去释放回调函数)。
diff --git a/src/tkc/ring_buffer.c b/src/tkc/ring_buffer.c
index c8bc55661b..8bc739dc57 100644
--- a/src/tkc/ring_buffer.c
+++ b/src/tkc/ring_buffer.c
@@ -22,8 +22,6 @@
#include "tkc/mem.h"
#include "tkc/ring_buffer.h"
-static ret_t ring_buffer_extend(ring_buffer_t* ring_buffer, uint32_t size);
-
ring_buffer_t* ring_buffer_create(uint32_t init_capacity, uint32_t max_capacity) {
ring_buffer_t* ring_buffer = NULL;
return_value_if_fail(init_capacity >= 32, NULL);
@@ -181,7 +179,7 @@ uint32_t ring_buffer_peek(ring_buffer_t* ring_buffer, void* buff, uint32_t size)
uint32_t ring_buffer_write(ring_buffer_t* ring_buffer, const void* buff, uint32_t size) {
return_value_if_fail(ring_buffer != NULL && buff != NULL, 0);
- ring_buffer_extend(ring_buffer, size);
+ ring_buffer_ensure_write_space(ring_buffer, size);
if (size == 0 || ring_buffer_free_size(ring_buffer) == 0) {
return 0;
}
@@ -238,7 +236,19 @@ ret_t ring_buffer_read_len(ring_buffer_t* ring_buffer, void* buff, uint32_t size
}
}
-static ret_t ring_buffer_extend(ring_buffer_t* ring_buffer, uint32_t size) {
+ret_t ring_buffer_skip(ring_buffer_t* ring_buffer, uint32_t size) {
+ return_value_if_fail(ring_buffer != NULL, RET_BAD_PARAMS);
+
+ if (ring_buffer_size(ring_buffer) >= size) {
+ ring_buffer->r = (ring_buffer->r + size) % ring_buffer->capacity;
+
+ return RET_OK;
+ } else {
+ return RET_FAIL;
+ }
+}
+
+ret_t ring_buffer_ensure_write_space(ring_buffer_t* ring_buffer, uint32_t size) {
uint32_t free_size = ring_buffer_free_size(ring_buffer);
if (free_size >= size) {
return RET_OK;
@@ -267,7 +277,7 @@ static ret_t ring_buffer_extend(ring_buffer_t* ring_buffer, uint32_t size) {
ret_t ring_buffer_write_len(ring_buffer_t* ring_buffer, const void* buff, uint32_t size) {
return_value_if_fail(ring_buffer != NULL && buff != NULL, RET_BAD_PARAMS);
- if (ring_buffer_extend(ring_buffer, size) == RET_OK) {
+ if (ring_buffer_ensure_write_space(ring_buffer, size) == RET_OK) {
return ring_buffer_write(ring_buffer, buff, size) == size ? RET_OK : RET_FAIL;
} else {
return RET_FAIL;
diff --git a/src/tkc/ring_buffer.h b/src/tkc/ring_buffer.h
index 1fceb21ae0..64bada5b87 100644
--- a/src/tkc/ring_buffer.h
+++ b/src/tkc/ring_buffer.h
@@ -181,6 +181,17 @@ uint32_t ring_buffer_write(ring_buffer_t* ring_buffer, const void* buff, uint32_
*/
ret_t ring_buffer_read_len(ring_buffer_t* ring_buffer, void* buff, uint32_t size);
+/**
+ * @method ring_buffer_skip
+ * 跳过指定长度数据,要么成功要么失败。
+ *
+ * @param {ring_buffer_t*} ring_buffer ring_buffer对象。
+ * @param {uint32_t} size 长度。
+ *
+ * @return {ret_t} 返回RET_OK表示成功,否则表示失败。
+ */
+ret_t ring_buffer_skip(ring_buffer_t* ring_buffer, uint32_t size);
+
/**
* @method ring_buffer_write_len
* 写入指定长度数据,要么成功要么失败。
@@ -247,6 +258,17 @@ ret_t ring_buffer_set_write_cursor(ring_buffer_t* ring_buffer, uint32_t w);
*/
ret_t ring_buffer_set_write_cursor_delta(ring_buffer_t* ring_buffer, uint32_t w_delta);
+/**
+ * @method ring_buffer_ensure_write_space
+ * 扩展buffer。
+ *
+ * @param {ring_buffer_t*} ring_buffer ring_buffer对象。
+ * @param {uint32_t} size 需要的大小。
+ *
+ * @return {ret_t} 返回RET_OK表示成功,否则表示失败。
+ */
+ret_t ring_buffer_ensure_write_space(ring_buffer_t* ring_buffer, uint32_t size);
+
/**
* @method ring_buffer_destroy
* 销毁ring_buffer。
diff --git a/src/tkc/semaphore.h b/src/tkc/semaphore.h
new file mode 100755
index 0000000000..37d12045ff
--- /dev/null
+++ b/src/tkc/semaphore.h
@@ -0,0 +1,76 @@
+/**
+ * File: semaphore.h
+ * Author: AWTK Develop Team
+ * Brief: semaphore
+ *
+ * Copyright (c) 2018 - 2019 Guangzhou ZHIYUAN Electronics Co.,Ltd.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * License file for more details.
+ *
+ */
+
+/**
+ * History:
+ * ================================================================
+ * 2019-10-27 Li XianJing created
+ *
+ */
+
+#ifndef TK_SEMAPHORE_H
+#define TK_SEMAPHORE_H
+
+#include "tkc/types_def.h"
+
+BEGIN_C_DECLS
+
+/**
+ * @class tk_semaphore_t
+ * 信号量。
+ */
+struct _tk_semaphore_t;
+typedef struct _tk_semaphore_t tk_semaphore_t;
+
+/**
+ * @method tk_semaphore_create
+ * 创建信号量对象。
+ * @param {uint32_t} value 初始值。
+ * @param {const char*} name 名称。
+ *
+ * @return {tk_semaphore_t*} semaphore对象。
+ */
+tk_semaphore_t* tk_semaphore_create(uint32_t value, const char* name);
+
+/**
+ * @method tk_semaphore_wait
+ * 获取资源。
+ * @param {tk_semaphore_t*} semaphore 信号量对象。
+ * @param {uint32_t} timeout_ms 超时时间。
+ *
+ * @return {ret_t} 返回RET_OK表示成功,否则表示失败。
+ */
+ret_t tk_semaphore_wait(tk_semaphore_t* semaphore, uint32_t timeout_ms);
+
+/**
+ * @method tk_semaphore_post
+ * 释放资源。
+ * @param {tk_semaphore_t*} semaphore 信号量对象。
+ *
+ * @return {ret_t} 返回RET_OK表示成功,否则表示失败。
+ */
+ret_t tk_semaphore_post(tk_semaphore_t* semaphore);
+
+/**
+ * @method tk_semaphore_destroy
+ * 销毁信号量对象。
+ * @param {tk_semaphore_t*} semaphore 信号量对象。
+ *
+ * @return {ret_t} 返回RET_OK表示成功,否则表示失败。
+ */
+ret_t tk_semaphore_destroy(tk_semaphore_t* semaphore);
+
+END_C_DECLS
+
+#endif /*TK_SEMAPHORE_H*/
diff --git a/src/vgcanvas/vgcanvas_nanovg.inc b/src/vgcanvas/vgcanvas_nanovg.inc
index 6043477df8..307a23b597 100644
--- a/src/vgcanvas/vgcanvas_nanovg.inc
+++ b/src/vgcanvas/vgcanvas_nanovg.inc
@@ -4,11 +4,13 @@
#include "base/vgcanvas.h"
#include "base/system_info.h"
#include "base/image_manager.h"
+#include "base/font_manager.h"
#include "base/assets_manager.h"
static ret_t vgcanvas_nanovg_reset(vgcanvas_t* vgcanvas) {
/*TODO: unload fonts*/
-
+ NVGcontext* vg = ((vgcanvas_nanovg_t*)vgcanvas)->vg;
+ nvgDeleteFontByName(vg, NULL);
return RET_OK;
}
@@ -245,7 +247,12 @@ static ret_t vgcanvas_nanovg_set_font(vgcanvas_t* vgcanvas, const char* name) {
return RET_OK;
}
- r = assets_manager_ref(am, ASSET_TYPE_FONT, name);
+ if (r == NULL) {
+ font_t* font = font_manager_get_font(font_manager(), NULL, TK_DEFAULT_FONT_SIZE);
+ if (font != NULL) {
+ r = assets_manager_ref(assets_manager(), ASSET_TYPE_FONT, font->name);
+ }
+ }
}
if (r != NULL && r->subtype == ASSET_TYPE_FONT_TTF) {
diff --git a/src/vgcanvas/vgcanvas_nanovg_soft.inc b/src/vgcanvas/vgcanvas_nanovg_soft.inc
index 732b4dcf35..dcf278cca3 100644
--- a/src/vgcanvas/vgcanvas_nanovg_soft.inc
+++ b/src/vgcanvas/vgcanvas_nanovg_soft.inc
@@ -120,7 +120,7 @@ static int vgcanvas_nanovg_ensure_image(vgcanvas_nanovg_t* canvas, bitmap_t* img
}
if (bpp * img->w == img->line_length) {
- data = img->data;
+ data = (uint8_t*)img->data;
} else {
size = bpp * img->w * img->h;
size = TK_ROUND_TO(size, BITMAP_ALIGN_SIZE) + BITMAP_ALIGN_SIZE;
diff --git a/src/widgets/button.h b/src/widgets/button.h
index 4d818b1305..8ca7c8c10f 100644
--- a/src/widgets/button.h
+++ b/src/widgets/button.h
@@ -45,7 +45,7 @@ BEGIN_C_DECLS
* ```
*
* > 更多用法请参考:
- * [button.xml](https://github.com/zlgopen/awtk/blob/master/demos/assets/raw/ui/button.xml)
+ * [button.xml](https://github.com/zlgopen/awtk/blob/master/demos/assets/default/raw/ui/button.xml)
*
* 在c代码中使用函数button\_create创建按钮控件。如:
*
@@ -73,7 +73,7 @@ BEGIN_C_DECLS
*
* > 更多用法请参考:
* [theme
- * default](https://github.com/zlgopen/awtk/blob/master/demos/assets/raw/styles/default.xml#L31)
+ * default](https://github.com/zlgopen/awtk/blob/master/demos/assets/default/raw/styles/default.xml#L31)
*
*/
typedef struct _button_t {
diff --git a/src/widgets/calibration_win.h b/src/widgets/calibration_win.h
index e2dfbec707..900f486b6e 100644
--- a/src/widgets/calibration_win.h
+++ b/src/widgets/calibration_win.h
@@ -55,7 +55,7 @@ typedef ret_t (*calibration_win_on_click_t)(void* ctx, uint32_t index, point_t p
* ```
*
* > 更多用法请参考:
- * [window.xml](https://github.com/zlgopen/awtk/blob/master/demos/assets/raw/ui/calibration_win.xml)
+ * [window.xml](https://github.com/zlgopen/awtk/blob/master/demos/assets/default/raw/ui/calibration_win.xml)
*
* 在c代码中使用函数calibration\_win\_create创建窗口。如:
*
diff --git a/src/widgets/check_button.h b/src/widgets/check_button.h
index 285ccff9f0..5575320d8d 100644
--- a/src/widgets/check_button.h
+++ b/src/widgets/check_button.h
@@ -47,7 +47,7 @@ BEGIN_C_DECLS
* ```
*
* > 更多用法请参考:
- * [button.xml](https://github.com/zlgopen/awtk/blob/master/demos/assets/raw/ui/basic.xml)
+ * [button.xml](https://github.com/zlgopen/awtk/blob/master/demos/assets/default/raw/ui/basic.xml)
*
* 在c代码中使用函数check\_button\_create创建多选按钮控件。如:
*
@@ -83,7 +83,7 @@ BEGIN_C_DECLS
*
* > 更多用法请参考:
* [theme
- * default](https://github.com/zlgopen/awtk/blob/master/demos/assets/raw/styles/default.xml#L227)
+ * default](https://github.com/zlgopen/awtk/blob/master/demos/assets/default/raw/styles/default.xml#L227)
*
*/
typedef struct _check_button_t {
diff --git a/src/widgets/color_tile.h b/src/widgets/color_tile.h
index ca0a5ab830..ab770a693a 100644
--- a/src/widgets/color_tile.h
+++ b/src/widgets/color_tile.h
@@ -45,7 +45,7 @@ BEGIN_C_DECLS
* ```
*
* > 更多用法请参考:
- * [color_tile](https://github.com/zlgopen/awtk/blob/master/demos/assets/raw/ui/color_picker_rgb.xml)
+ * [color_tile](https://github.com/zlgopen/awtk/blob/master/demos/assets/default/raw/ui/color_picker_rgb.xml)
*
* 在c代码中使用函数color_tile\_create创建色块控件。如:
*
diff --git a/src/widgets/combo_box.c b/src/widgets/combo_box.c
index 77964f669a..a9878acb82 100644
--- a/src/widgets/combo_box.c
+++ b/src/widgets/combo_box.c
@@ -29,6 +29,8 @@
#include "tkc/tokenizer.h"
#include "widgets/combo_box_item.h"
+static ret_t combo_box_on_button_click(void* ctx, event_t* e);
+
const char* s_combo_box_properties[] = {WIDGET_PROP_MIN,
WIDGET_PROP_MAX,
WIDGET_PROP_STEP,
@@ -41,8 +43,11 @@ const char* s_combo_box_properties[] = {WIDGET_PROP_MIN,
WIDGET_PROP_TOP_MARGIN,
WIDGET_PROP_BOTTOM_MARGIN,
WIDGET_PROP_TIPS,
+ WIDGET_PROP_OPTIONS,
+ WIDGET_PROP_ITEM_HEIGHT,
WIDGET_PROP_OPEN_WINDOW,
WIDGET_PROP_SELECTED_INDEX,
+ WIDGET_PROP_LOCALIZE_OPTIONS,
NULL};
static widget_t* combo_box_create_self(widget_t* parent, xy_t x, xy_t y, wh_t w, wh_t h);
@@ -194,6 +199,12 @@ static ret_t combo_box_on_event(widget_t* widget, event_t* e) {
return edit_on_event(widget, e);
}
+static ret_t combo_box_on_add_child(widget_t* widget, widget_t* child) {
+ widget_on(child, EVT_CLICK, combo_box_on_button_click, widget);
+
+ return RET_FAIL;
+}
+
TK_DECL_VTABLE(combo_box) = {.size = sizeof(combo_box_t),
.inputable = TRUE,
.type = WIDGET_TYPE_COMBO_BOX,
@@ -204,6 +215,7 @@ TK_DECL_VTABLE(combo_box) = {.size = sizeof(combo_box_t),
.on_paint_self = edit_on_paint_self,
.set_prop = combo_box_set_prop,
.get_prop = combo_box_get_prop,
+ .on_add_child = combo_box_on_add_child,
.on_layout_children = combo_box_on_layout_children,
.on_destroy = combo_box_on_destroy,
.on_event = combo_box_on_event};
@@ -350,8 +362,6 @@ widget_t* combo_box_create(widget_t* parent, xy_t x, xy_t y, wh_t w, wh_t h) {
widget_set_name(popup, "popup");
widget_use_style(popup, "combobox_down");
- widget_on(popup, EVT_CLICK, combo_box_on_button_click, widget);
-
return widget;
}
diff --git a/src/widgets/combo_box.h b/src/widgets/combo_box.h
index 1397bd04ec..bb2aa70d24 100644
--- a/src/widgets/combo_box.h
+++ b/src/widgets/combo_box.h
@@ -75,7 +75,7 @@ typedef widget_t* (*combo_box_custom_open_popup_t)(widget_t* combobox);
* ```
*
* >
- * 更多用法请参考:[combo_box.xml](https://github.com/zlgopen/awtk/blob/master/demos/assets/raw/ui/combo_box.xml)
+ * 更多用法请参考:[combo_box.xml](https://github.com/zlgopen/awtk/blob/master/demos/assets/default/raw/ui/combo_box.xml)
*
* 在c代码中使用函数combo\_box\_create创建下拉列表控件。如:
*
@@ -108,7 +108,7 @@ typedef widget_t* (*combo_box_custom_open_popup_t)(widget_t* combobox);
* ```
*
* > 更多用法请参考:[theme
- *default](https://github.com/zlgopen/awtk/blob/master/demos/assets/raw/styles/default.xml#L422)
+ *default](https://github.com/zlgopen/awtk/blob/master/demos/assets/default/raw/styles/default.xml#L422)
*
*/
typedef struct _combo_box_t {
diff --git a/src/widgets/edit.c b/src/widgets/edit.c
index e3640f2aec..260cac2dbd 100644
--- a/src/widgets/edit.c
+++ b/src/widgets/edit.c
@@ -65,7 +65,14 @@ static ret_t edit_update_caret(const timer_info_t* timer) {
}
ret_t edit_on_paint_self(widget_t* widget, canvas_t* c) {
- return text_edit_paint(EDIT(widget)->model, c);
+ edit_t* edit = EDIT(widget);
+ return_value_if_fail(edit != NULL, RET_BAD_PARAMS);
+
+ if (edit->input_type != INPUT_PASSWORD) {
+ text_edit_set_mask(edit->model, FALSE);
+ }
+
+ return text_edit_paint(edit->model, c);
}
static ret_t edit_do_input_char(widget_t* widget, wchar_t c) {
diff --git a/src/widgets/edit.h b/src/widgets/edit.h
index 81d8b80e0d..57bcebf7cb 100644
--- a/src/widgets/edit.h
+++ b/src/widgets/edit.h
@@ -60,7 +60,7 @@ typedef bool_t (*edit_is_valid_char_t)(widget_t* widget, wchar_t c);
* > XXX:需要在min/max/step之前设置input\_type。
*
* >更多用法请参考:
- * [edit.xml](https://github.com/zlgopen/awtk/blob/master/demos/assets/raw/ui/edit.xml)
+ * [edit.xml](https://github.com/zlgopen/awtk/blob/master/demos/assets/default/raw/ui/edit.xml)
*
* 在c代码中使用函数edit\_create创建编辑器控件。如:
*
@@ -88,7 +88,7 @@ typedef bool_t (*edit_is_valid_char_t)(widget_t* widget, wchar_t c);
*
* > 更多用法请参考:
* [theme
- *default](https://github.com/zlgopen/awtk/blob/master/demos/assets/raw/styles/default.xml#L104)
+ *default](https://github.com/zlgopen/awtk/blob/master/demos/assets/default/raw/styles/default.xml#L104)
*
*/
typedef struct _edit_t {
diff --git a/src/widgets/image.h b/src/widgets/image.h
index 4a927318d7..2bcf998d0e 100644
--- a/src/widgets/image.h
+++ b/src/widgets/image.h
@@ -52,7 +52,7 @@ BEGIN_C_DECLS
* ```
*
* > 更多用法请参考:
- * [image.xml](https://github.com/zlgopen/awtk/blob/master/demos/assets/raw/ui/images.xml)
+ * [image.xml](https://github.com/zlgopen/awtk/blob/master/demos/assets/default/raw/ui/images.xml)
*
* 在c代码中使用函数image\_create创建图片控件。如:
*
@@ -87,7 +87,7 @@ BEGIN_C_DECLS
*
* > 更多用法请参考:
* [theme
- * default](https://github.com/zlgopen/awtk/blob/master/demos/assets/raw/styles/default.xml#L313)
+ * default](https://github.com/zlgopen/awtk/blob/master/demos/assets/default/raw/styles/default.xml#L313)
*
*/
typedef struct _image_t {
diff --git a/src/widgets/label.h b/src/widgets/label.h
index ee97f2a817..08a85ec118 100644
--- a/src/widgets/label.h
+++ b/src/widgets/label.h
@@ -46,7 +46,7 @@ BEGIN_C_DECLS
* ```
*
* > 更多用法请参考:[label.xml](
- *https://github.com/zlgopen/awtk/blob/master/demos/assets/raw/ui/label.xml)
+ *https://github.com/zlgopen/awtk/blob/master/demos/assets/default/raw/ui/label.xml)
*
* 在c代码中使用函数label\_create创建文本控件。如:
*
@@ -70,7 +70,7 @@ BEGIN_C_DECLS
*
* > 更多用法请参考:
* [theme default](
- *https://github.com/zlgopen/awtk/blob/master/demos/assets/raw/styles/default.xml#L144)
+ *https://github.com/zlgopen/awtk/blob/master/demos/assets/default/raw/styles/default.xml#L144)
*
*/
typedef struct _label_t {
diff --git a/src/widgets/overlay.h b/src/widgets/overlay.h
index a80cf63ca2..6877adbf2b 100644
--- a/src/widgets/overlay.h
+++ b/src/widgets/overlay.h
@@ -47,7 +47,7 @@ BEGIN_C_DECLS
* ```
*
* >
- * 更多用法请参考:[overlay.xml](https://github.com/zlgopen/awtk/blob/master/demos/assets/raw/ui/)
+ * 更多用法请参考:[overlay.xml](https://github.com/zlgopen/awtk/blob/master/demos/assets/default/raw/ui/)
*
* 在c代码中使用函数overlay\_create创建窗口。如:
*
@@ -67,7 +67,7 @@ BEGIN_C_DECLS
* ```
*
* > 更多用法请参考:[theme
- * default](https://github.com/zlgopen/awtk/blob/master/demos/assets/raw/styles/default.xml#L0)
+ * default](https://github.com/zlgopen/awtk/blob/master/demos/assets/default/raw/styles/default.xml#L0)
*/
typedef struct _overlay_t {
window_base_t overlay;
diff --git a/src/widgets/pages.h b/src/widgets/pages.h
index 491f8689a4..9f317b711d 100644
--- a/src/widgets/pages.h
+++ b/src/widgets/pages.h
@@ -52,7 +52,7 @@ BEGIN_C_DECLS
* ```
*
* > 更多用法请参考:
- * [tab control](https://github.com/zlgopen/awtk/blob/master/demos/assets/raw/ui/)
+ * [tab control](https://github.com/zlgopen/awtk/blob/master/demos/assets/default/raw/ui/)
*
*/
typedef struct _pages_t {
diff --git a/src/widgets/popup.c b/src/widgets/popup.c
index 831b712ac6..19379593f1 100644
--- a/src/widgets/popup.c
+++ b/src/widgets/popup.c
@@ -71,6 +71,12 @@ static ret_t popup_on_event(widget_t* widget, event_t* e) {
break;
}
case EVT_POINTER_DOWN: {
+ popup->is_outside = FALSE;
+ if (popup->close_when_click_outside) {
+ pointer_event_t* evt = (pointer_event_t*)e;
+ rect_t r = rect_init(widget->x, widget->y, widget->w, widget->h);
+ popup->is_outside = !rect_contains(&r, evt->x, evt->y);
+ }
break;
}
case EVT_POINTER_UP: {
@@ -79,7 +85,7 @@ static ret_t popup_on_event(widget_t* widget, event_t* e) {
if (popup->close_when_click) {
close_window = TRUE;
- } else if (popup->close_when_click_outside) {
+ } else if (popup->close_when_click_outside && popup->is_outside) {
rect_t r = rect_init(widget->x, widget->y, widget->w, widget->h);
if (!rect_contains(&r, evt->x, evt->y)) {
close_window = TRUE;
diff --git a/src/widgets/popup.h b/src/widgets/popup.h
index 260e695afe..03036662bb 100644
--- a/src/widgets/popup.h
+++ b/src/widgets/popup.h
@@ -51,7 +51,7 @@ BEGIN_C_DECLS
* ```
*
* >
- * 更多用法请参考:[popup](https://github.com/zlgopen/awtk/blob/master/demos/assets/raw/ui/)
+ * 更多用法请参考:[popup](https://github.com/zlgopen/awtk/blob/master/demos/assets/default/raw/ui/)
*
* 在c代码中使用函数popup\_create创建弹出窗口。如:
*
@@ -75,11 +75,13 @@ BEGIN_C_DECLS
* ```
*
* > 更多用法请参考:[theme
- * default](https://github.com/zlgopen/awtk/blob/master/demos/assets/raw/styles/default.xml#L324)
+ * default](https://github.com/zlgopen/awtk/blob/master/demos/assets/default/raw/styles/default.xml#L324)
*/
typedef struct _popup_t {
window_base_t window;
+ bool_t is_outside;
+
/**
* @property {bool_t} close_when_click
* @annotation ["set_prop","get_prop","readable","persitent","design","scriptable"]
diff --git a/src/widgets/progress_bar.h b/src/widgets/progress_bar.h
index afab0e6de3..9991e79ef3 100644
--- a/src/widgets/progress_bar.h
+++ b/src/widgets/progress_bar.h
@@ -44,7 +44,7 @@ BEGIN_C_DECLS
* ```
*
* > 更多用法请参考:
- * [basic demo](https://github.com/zlgopen/awtk/blob/master/demos/assets/raw/ui/basic.xml)
+ * [basic demo](https://github.com/zlgopen/awtk/blob/master/demos/assets/default/raw/ui/basic.xml)
*
* 在c代码中使用函数progress\_bar\_create创建进度条控件。如:
*
@@ -65,7 +65,7 @@ BEGIN_C_DECLS
*
* > 更多用法请参考:
* [theme
- * default](https://github.com/zlgopen/awtk/blob/master/demos/assets/raw/styles/default.xml#L183)
+ * default](https://github.com/zlgopen/awtk/blob/master/demos/assets/default/raw/styles/default.xml#L183)
*
*/
typedef struct _progress_bar_t {
diff --git a/src/widgets/slider.h b/src/widgets/slider.h
index 810b66f7bd..ab2f5a243e 100644
--- a/src/widgets/slider.h
+++ b/src/widgets/slider.h
@@ -43,7 +43,7 @@ BEGIN_C_DECLS
* ```
*
* > 更多用法请参考:
- * [basic](https://github.com/zlgopen/awtk/blob/master/demos/assets/raw/ui/basic.xml)
+ * [basic](https://github.com/zlgopen/awtk/blob/master/demos/assets/default/raw/ui/basic.xml)
*
* 在c代码中使用函数slider\_create创建滑块控件。如:
*
@@ -68,7 +68,7 @@ BEGIN_C_DECLS
*
* > 更多用法请参考:
* [theme
- * default](https://github.com/zlgopen/awtk/blob/master/demos/assets/raw/styles/default.xml#L179)
+ * default](https://github.com/zlgopen/awtk/blob/master/demos/assets/default/raw/styles/default.xml#L179)
*
*/
typedef struct _slider_t {
diff --git a/src/widgets/spin_box.h b/src/widgets/spin_box.h
index 286a3d2090..ef33afe99d 100644
--- a/src/widgets/spin_box.h
+++ b/src/widgets/spin_box.h
@@ -46,7 +46,7 @@ BEGIN_C_DECLS
* ```
*
* >
- * 更多用法请参考:[spin_box.xml](https://github.com/zlgopen/awtk/blob/master/demos/assets/raw/ui/spinbox.xml)
+ * 更多用法请参考:[spin_box.xml](https://github.com/zlgopen/awtk/blob/master/demos/assets/default/raw/ui/spinbox.xml)
*
* 在c代码中使用函数spin_box\_create创建spinbox控件。如:
*
@@ -77,7 +77,7 @@ BEGIN_C_DECLS
* ```
*
* > 更多用法请参考:[theme
- * default](https://github.com/zlgopen/awtk/blob/master/demos/assets/raw/styles/default.xml#L128)
+ * default](https://github.com/zlgopen/awtk/blob/master/demos/assets/default/raw/styles/default.xml#L128)
*
*/
typedef edit_t spin_box_t;
diff --git a/src/widgets/system_bar.c b/src/widgets/system_bar.c
index af9140f76d..8be6d989c9 100644
--- a/src/widgets/system_bar.c
+++ b/src/widgets/system_bar.c
@@ -119,6 +119,30 @@ widget_t* system_bar_create(widget_t* parent, xy_t x, xy_t y, wh_t w, wh_t h) {
return widget;
}
+TK_DECL_VTABLE(system_bar_bottom) = {.size = sizeof(system_bar_t),
+ .type = WIDGET_TYPE_SYSTEM_BAR_BOTTOM,
+ .is_window = TRUE,
+ .clone_properties = s_system_bar_properties,
+ .persistent_properties = s_system_bar_properties,
+ .parent = TK_PARENT_VTABLE(window_base),
+ .create = system_bar_create,
+ .on_event = system_bar_on_event,
+ .set_prop = window_base_set_prop,
+ .get_prop = window_base_get_prop,
+ .on_paint_self = window_base_on_paint_self,
+ .on_paint_begin = window_base_on_paint_begin,
+ .on_paint_end = window_base_on_paint_end,
+ .on_destroy = system_bar_on_destroy};
+
+widget_t* system_bar_bottom_create(widget_t* parent, xy_t x, xy_t y, wh_t w, wh_t h) {
+ widget_t* widget = window_base_create(parent, TK_REF_VTABLE(system_bar_bottom), x, y, w, h);
+ return_value_if_fail(widget != NULL, NULL);
+
+ widget_on(widget->parent, EVT_TOP_WINDOW_CHANGED, system_bar_on_top_window_changed, widget);
+
+ return widget;
+}
+
widget_t* system_bar_cast(widget_t* widget) {
return_value_if_fail(WIDGET_IS_INSTANCE_OF(widget, system_bar), NULL);
diff --git a/src/widgets/system_bar.h b/src/widgets/system_bar.h
index 726516e292..c2a9e86948 100644
--- a/src/widgets/system_bar.h
+++ b/src/widgets/system_bar.h
@@ -57,7 +57,7 @@ BEGIN_C_DECLS
* ```
*
* > 更多用法请参考:
- * [system_bar](https://github.com/zlgopen/awtk/blob/master/demos/assets/raw/ui/system_bar.xml)
+ * [system_bar](https://github.com/zlgopen/awtk/blob/master/demos/assets/default/raw/ui/system_bar.xml)
*
* 在c代码中使用函数system\_bar\_create创建system\_bar窗口。如:
*
@@ -78,7 +78,7 @@ BEGIN_C_DECLS
* ```
*
*> 更多用法请参考:
- * [system_bar.xml](https://github.com/zlgopen/awtk/blob/master/demos/assets/raw/styles/system_bar.xml)
+ * [system_bar.xml](https://github.com/zlgopen/awtk/blob/master/demos/assets/default/raw/styles/system_bar.xml)
*
*/
typedef struct _system_bar_t {
@@ -99,6 +99,8 @@ typedef struct _system_bar_t {
*/
widget_t* system_bar_create(widget_t* parent, xy_t x, xy_t y, wh_t w, wh_t h);
+widget_t* system_bar_bottom_create(widget_t* parent, xy_t x, xy_t y, wh_t w, wh_t h);
+
/**
* @method system_bar_cast
* 转换为system_bar对象(供脚本语言使用)。
diff --git a/src/widgets/tab_button.h b/src/widgets/tab_button.h
index cdb4f81697..5d42ef81b7 100644
--- a/src/widgets/tab_button.h
+++ b/src/widgets/tab_button.h
@@ -49,7 +49,7 @@ BEGIN_C_DECLS
* 标签按钮一般放在标签按钮分组中,布局由标签按钮分组控件决定,不需要指定自己的布局参数和坐标。
*
* > 更多用法请参考:
- * [tab control](https://github.com/zlgopen/awtk/blob/master/demos/assets/raw/ui/)
+ * [tab control](https://github.com/zlgopen/awtk/blob/master/demos/assets/default/raw/ui/)
*
* 可用通过style来设置控件的显示风格,如字体的大小和颜色等等。如:
*
diff --git a/src/widgets/tab_button_group.h b/src/widgets/tab_button_group.h
index c4f4f5f611..5d2f4be716 100644
--- a/src/widgets/tab_button_group.h
+++ b/src/widgets/tab_button_group.h
@@ -49,7 +49,7 @@ BEGIN_C_DECLS
* ```
*
* > 更多用法请参考:
- * [tab control](https://github.com/zlgopen/awtk/blob/master/demos/assets/raw/ui/)
+ * [tab control](https://github.com/zlgopen/awtk/blob/master/demos/assets/default/raw/ui/)
*
* 可用通过style来设置控件的显示风格,如颜色等等。如:
*
diff --git a/src/widgets/tab_control.h b/src/widgets/tab_control.h
index 3fe268d3c1..386962307e 100644
--- a/src/widgets/tab_control.h
+++ b/src/widgets/tab_control.h
@@ -62,7 +62,7 @@ BEGIN_C_DECLS
* ```
*
* > 更多用法请参考:
- * [tab control](https://github.com/zlgopen/awtk/blob/master/demos/assets/raw/ui/)
+ * [tab control](https://github.com/zlgopen/awtk/blob/master/demos/assets/default/raw/ui/)
*
*/
typedef struct _tab_control_t {
diff --git a/src/widgets/widgets.c b/src/widgets/widgets.c
index 1660944692..966f590558 100644
--- a/src/widgets/widgets.c
+++ b/src/widgets/widgets.c
@@ -79,6 +79,7 @@ ret_t tk_widgets_init(void) {
widget_factory_register(f, WIDGET_TYPE_GROUP_BOX, group_box_create);
#ifndef AWTK_LITE
widget_factory_register(f, WIDGET_TYPE_SYSTEM_BAR, system_bar_create);
+ widget_factory_register(f, WIDGET_TYPE_SYSTEM_BAR_BOTTOM, system_bar_bottom_create);
widget_factory_register(f, WIDGET_TYPE_CALIBRATION_WIN, calibration_win_create);
widget_factory_register(f, WIDGET_TYPE_VIEW, view_create);
widget_factory_register(f, WIDGET_TYPE_OVERLAY, overlay_create);
diff --git a/src/window_animators/window_animator_common.c b/src/window_animators/window_animator_common.c
index 6862130563..64971fefcf 100644
--- a/src/window_animators/window_animator_common.c
+++ b/src/window_animators/window_animator_common.c
@@ -26,7 +26,7 @@
#include "base/window_manager.h"
#include "base/window_animator.h"
#include "base/dialog_highlighter_factory.h"
-
+#include "window_manager/window_manager_default.h"
#include "window_animators/window_animator_common.h"
ret_t window_animator_to_bottom_draw_curr(window_animator_t* wa) {
@@ -173,6 +173,9 @@ ret_t window_animator_destroy(window_animator_t* wa) {
static ret_t window_animator_paint_system_bar(window_animator_t* wa) {
widget_t* wm = wa->curr_win->parent;
widget_t* system_bar = widget_lookup_by_type(wm, WIDGET_TYPE_SYSTEM_BAR, TRUE);
+ if (system_bar == NULL) {
+ system_bar = widget_lookup_by_type(wm, WIDGET_TYPE_SYSTEM_BAR_BOTTOM, TRUE);
+ }
if (system_bar != NULL) {
#ifdef AWTK_WEB
@@ -180,7 +183,7 @@ static ret_t window_animator_paint_system_bar(window_animator_t* wa) {
rect_t dst = rect_init(system_bar->x, system_bar->y, system_bar->w, system_bar->h);
canvas_draw_image(wa->canvas, &(wa->prev_img), rect_scale(&src, wa->ratio), &dst);
#else
- widget_paint(system_bar, wa->canvas);
+ window_manager_paint_system_bar(wm, wa->canvas);
#endif /*AWTK_WEB*/
}
diff --git a/src/window_manager/window_manager_default.c b/src/window_manager/window_manager_default.c
index 4ff19626f3..b83dae26b5 100644
--- a/src/window_manager/window_manager_default.c
+++ b/src/window_manager/window_manager_default.c
@@ -33,12 +33,16 @@
#include "base/dialog_highlighter_factory.h"
#include "window_manager/window_manager_default.h"
+static ret_t window_manager_invalidate_system_bar(widget_t* widget);
static ret_t window_manager_default_inc_fps(widget_t* widget);
static ret_t window_manager_default_update_fps(widget_t* widget);
static ret_t window_manager_default_invalidate(widget_t* widget, rect_t* r);
+static ret_t window_manager_default_get_client_r(widget_t* widget, rect_t* r);
static ret_t window_manager_default_do_open_window(widget_t* wm, widget_t* window);
static ret_t window_manager_default_layout_child(widget_t* widget, widget_t* window);
+static ret_t window_manager_default_layout_system_bar(widget_t* widget, widget_t* window);
static ret_t window_manager_default_create_dialog_highlighter(widget_t* widget, widget_t* curr_win);
+static ret_t window_manager_default_layout_not_system_bar(widget_t* widget, widget_t* window, rect_t client_r);
static bool_t window_is_fullscreen(widget_t* widget) {
value_t v;
@@ -129,6 +133,16 @@ static widget_t* window_manager_find_prev_window(widget_t* widget) {
return NULL;
}
+static widget_t* window_manager_find_prev_any_window(widget_t* widget) {
+ return_value_if_fail(widget != NULL, NULL);
+
+ if (widget->children != NULL && widget->children->size >= 2) {
+ return (widget_t*)(widget->children->elms[widget->children->size - 2]);
+ }
+
+ return NULL;
+}
+
ret_t window_manager_default_snap_curr_window(widget_t* widget, widget_t* curr_win, bitmap_t* img,
framebuffer_object_t* fbo, bool_t auto_rotate) {
canvas_t* c = NULL;
@@ -191,10 +205,6 @@ ret_t window_manager_default_snap_prev_window(widget_t* widget, widget_t* prev_w
ENSURE(vgcanvas_bind_fbo(vg, fbo) == RET_OK);
ENSURE(canvas_begin_frame(c, NULL, LCD_DRAW_OFFLINE) == RET_OK);
ENSURE(widget_on_paint_background(widget, c) == RET_OK);
- if (wm->system_bar) {
- widget_paint(wm->system_bar, c);
- }
-
window_manager_paint_system_bar(widget, c);
ENSURE(widget_paint(prev_win, c) == RET_OK);
@@ -285,7 +295,7 @@ static ret_t window_manager_create_animator(window_manager_default_t* wm, widget
bool_t open) {
value_t v;
const char* anim_hint = NULL;
- widget_t* prev_win = window_manager_find_prev_window(WIDGET(wm));
+ widget_t* prev_win = window_manager_find_prev_any_window(WIDGET(wm));
const char* key = open ? WIDGET_PROP_OPEN_ANIM_HINT : WIDGET_PROP_CLOSE_ANIM_HINT;
if (prev_win == curr_win || prev_win == NULL || !widget_is_normal_window(prev_win)) {
@@ -399,10 +409,6 @@ static ret_t window_manager_default_open_window(widget_t* widget, widget_t* wind
window_manager_default_t* wm = WINDOW_MANAGER_DEFAULT(widget);
return_value_if_fail(widget != NULL && window != NULL, RET_BAD_PARAMS);
- if (widget_is_system_bar(window)) {
- return_value_if_fail(wm->system_bar == NULL, RET_BAD_PARAMS);
- }
-
wm->prev_win = window_manager_get_top_window(widget);
if (wm->animator != NULL) {
@@ -423,10 +429,6 @@ static ret_t window_manager_default_open_window(widget_t* widget, widget_t* wind
}
widget_invalidate(window, NULL);
- if (widget_is_system_bar(window)) {
- wm->system_bar = window;
- }
-
widget_set_prop_pointer(window, WIDGET_PROP_NATIVE_WINDOW, wm->native_window);
widget_on(window, EVT_DESTROY, wm_on_destroy_child, widget);
widget_update_style(widget);
@@ -446,7 +448,6 @@ static ret_t window_manager_idle_destroy_window(const idle_info_t* info) {
}
static ret_t window_manager_prepare_close_window(widget_t* widget, widget_t* window) {
- window_manager_default_t* wm = WINDOW_MANAGER_DEFAULT(widget);
return_value_if_fail(widget != NULL && window != NULL, RET_BAD_PARAMS);
if (widget->target == window) {
@@ -463,10 +464,6 @@ static ret_t window_manager_prepare_close_window(widget_t* widget, widget_t* win
}
}
- if (wm->system_bar == window) {
- wm->system_bar = NULL;
- }
-
return RET_OK;
}
@@ -561,6 +558,14 @@ static ret_t window_manager_update_cursor(widget_t* widget, int32_t x, int32_t y
}
static ret_t window_manager_paint_normal(widget_t* widget, canvas_t* c) {
+#ifdef FRAGMENT_FRAME_BUFFER_SIZE
+ uint32_t i = 0;
+ uint32_t y = 0;
+ uint32_t h = 0;
+ uint32_t tmp_h = 0;
+ uint32_t number = 0;
+#endif
+
uint64_t start_time = time_now_ms();
window_manager_default_t* wm = WINDOW_MANAGER_DEFAULT(widget);
@@ -570,12 +575,42 @@ static ret_t window_manager_paint_normal(widget_t* widget, canvas_t* c) {
rect_t fps_rect = rect_init(0, 0, 60, 30);
window_manager_default_invalidate(widget, &fps_rect);
}
+#ifdef FRAGMENT_FRAME_BUFFER_SIZE
+ if (wm->native_window->dirty_rect.w > 0 && wm->native_window->dirty_rect.h > 0) {
+ rect_t r = native_window_calc_dirty_rect(wm->native_window);
+ if (r.w > 0 && r.h > 0) {
+ assert(r.w <= FRAGMENT_FRAME_BUFFER_SIZE);
+ y = r.y;
+ h = r.h;
+ tmp_h = FRAGMENT_FRAME_BUFFER_SIZE / r.w;
+ number = r.h / tmp_h;
+
+ for (i = 0; i <= number; i++) {
+ r.y = y + i * tmp_h;
+ if (i == number) {
+ tmp_h = h % tmp_h;
+ }
+ r.h = tmp_h;
+
+ canvas_t* c = native_window_get_canvas(wm->native_window);
+ canvas_begin_frame(c, &r, LCD_DRAW_NORMAL);
+ wm->native_window->dirty = TRUE;
+ ENSURE(widget_paint(WIDGET(wm), c) == RET_OK);
+ window_manager_paint_cursor(widget, c);
+ canvas_end_frame(c);
+ }
+ native_window_update_last_dirty_rect(wm->native_window);
+ }
+ native_window_clear_dirty_rect(wm->native_window);
+ }
+#else
if (native_window_begin_frame(wm->native_window, LCD_DRAW_NORMAL) == RET_OK) {
ENSURE(widget_paint(WIDGET(wm), c) == RET_OK);
window_manager_paint_cursor(widget, c);
native_window_end_frame(wm->native_window);
}
+#endif
wm->last_paint_cost = time_now_ms() - start_time;
return RET_OK;
@@ -632,9 +667,7 @@ static ret_t window_manager_paint_animation(widget_t* widget, canvas_t* c) {
window_manager_default_do_open_window(widget, window);
}
- if (wm->system_bar != NULL) {
- widget_invalidate_force(wm->system_bar, NULL);
- }
+ window_manager_invalidate_system_bar(widget);
}
return RET_OK;
@@ -745,7 +778,7 @@ static ret_t window_manager_default_on_paint_children(widget_t* widget, canvas_t
/*paint dialog and other*/
WIDGET_FOR_EACH_CHILD_BEGIN(widget, iter, i)
if (i >= start && iter->visible) {
- if (wm->system_bar != iter && !widget_is_normal_window(iter)) {
+ if (!widget_is_system_bar(iter) && !widget_is_normal_window(iter)) {
widget_paint(iter, c);
}
}
@@ -801,10 +834,21 @@ static ret_t window_manager_default_on_destroy(widget_t* widget) {
}
static ret_t window_manager_default_on_layout_children(widget_t* widget) {
+ rect_t client_r = rect_init(0, 0, widget->w, widget->h);
return_value_if_fail(widget != NULL, RET_BAD_PARAMS);
WIDGET_FOR_EACH_CHILD_BEGIN(widget, iter, i)
- window_manager_default_layout_child(widget, iter);
+ if (widget_is_system_bar(iter)) {
+ window_manager_default_layout_system_bar(widget, iter);
+ }
+ WIDGET_FOR_EACH_CHILD_END();
+
+ window_manager_default_get_client_r(widget, &client_r);
+
+ WIDGET_FOR_EACH_CHILD_BEGIN(widget, iter, i)
+ if (!widget_is_system_bar(iter)) {
+ window_manager_default_layout_not_system_bar(widget, iter, client_r);
+ }
WIDGET_FOR_EACH_CHILD_END();
return RET_OK;
@@ -862,18 +906,50 @@ ret_t window_manager_default_on_event(widget_t* widget, event_t* e) {
return RET_OK;
}
-static ret_t window_manager_default_layout_child(widget_t* widget, widget_t* window) {
+static bool_t widget_is_system_bar_top(widget_t* window) {
+ return tk_str_eq(window->vt->type, WIDGET_TYPE_SYSTEM_BAR);
+}
+
+static bool_t widget_is_system_bar_bottom(widget_t* window) {
+ return tk_str_eq(window->vt->type, WIDGET_TYPE_SYSTEM_BAR_BOTTOM);
+}
+
+static ret_t window_manager_default_get_client_r(widget_t* widget, rect_t* r) {
+ *r = rect_init(0, 0, widget->w, widget->h);
+
+ WIDGET_FOR_EACH_CHILD_BEGIN(widget, iter, i)
+ if (widget_is_system_bar_top(iter)) {
+ r->y = iter->h;
+ r->h -= iter->h;
+ }
+
+ if (widget_is_system_bar_bottom(iter)) {
+ r->h -= iter->h;
+ }
+ WIDGET_FOR_EACH_CHILD_END();
+
+ return RET_OK;
+}
+
+static ret_t window_manager_default_layout_system_bar(widget_t* widget, widget_t* window) {
+ window->x = 0;
+ window->w = widget->w;
+
+ if (widget_is_system_bar_bottom(window)) {
+ window->y = widget->h - window->h;
+ }
+
+ widget_layout(window);
+
+ return RET_OK;
+}
+
+static ret_t window_manager_default_layout_not_system_bar(widget_t* widget, widget_t* window,
+ rect_t client_r) {
xy_t x = window->x;
xy_t y = window->y;
wh_t w = window->w;
wh_t h = window->h;
- window_manager_default_t* wm = WINDOW_MANAGER_DEFAULT(widget);
- rect_t client_r = rect_init(0, 0, widget->w, widget->h);
-
- if (wm->system_bar != NULL) {
- widget_t* bar = wm->system_bar;
- client_r = rect_init(0, bar->h, widget->w, widget->h - bar->h);
- }
if (widget_is_normal_window(window)) {
if (window_is_fullscreen(window)) {
@@ -887,10 +963,6 @@ static ret_t window_manager_default_layout_child(widget_t* widget, widget_t* win
w = client_r.w;
h = client_r.h;
}
- } else if (widget_is_system_bar(window)) {
- x = 0;
- y = 0;
- w = widget->w;
} else if (widget_is_dialog(window)) {
x = (widget->w - window->w) >> 1;
y = (widget->h - window->h) >> 1;
@@ -907,6 +979,16 @@ static ret_t window_manager_default_layout_child(widget_t* widget, widget_t* win
return RET_OK;
}
+static ret_t window_manager_default_layout_child(widget_t* widget, widget_t* window) {
+ if (widget_is_system_bar(window)) {
+ return window_manager_default_layout_system_bar(widget, window);
+ } else {
+ rect_t client_r = rect_init(0, 0, widget->w, widget->h);
+ window_manager_default_get_client_r(widget, &client_r);
+ return window_manager_default_layout_not_system_bar(widget, window, client_r);
+ }
+}
+
static ret_t window_manager_default_resize(widget_t* widget, wh_t w, wh_t h) {
rect_t r = rect_init(0, 0, w, h);
window_manager_default_t* wm = WINDOW_MANAGER_DEFAULT(widget);
@@ -1006,9 +1088,24 @@ ret_t window_manager_paint_system_bar(widget_t* widget, canvas_t* c) {
window_manager_default_t* wm = WINDOW_MANAGER_DEFAULT(widget);
return_value_if_fail(wm != NULL && c != NULL, RET_BAD_PARAMS);
- if (wm->system_bar != NULL && wm->system_bar->visible) {
- widget_paint(wm->system_bar, c);
+ WIDGET_FOR_EACH_CHILD_BEGIN_R(widget, iter, i)
+ if (widget_is_system_bar(iter)) {
+ widget_paint(iter, c);
}
+ WIDGET_FOR_EACH_CHILD_END()
+
+ return RET_OK;
+}
+
+static ret_t window_manager_invalidate_system_bar(widget_t* widget) {
+ window_manager_default_t* wm = WINDOW_MANAGER_DEFAULT(widget);
+ return_value_if_fail(wm != NULL, RET_BAD_PARAMS);
+
+ WIDGET_FOR_EACH_CHILD_BEGIN_R(widget, iter, i)
+ if (widget_is_system_bar(iter)) {
+ widget_invalidate_force(iter, NULL);
+ }
+ WIDGET_FOR_EACH_CHILD_END()
return RET_OK;
}
diff --git a/src/window_manager/window_manager_default.h b/src/window_manager/window_manager_default.h
index 5b56b51a91..cf6897b354 100644
--- a/src/window_manager/window_manager_default.h
+++ b/src/window_manager/window_manager_default.h
@@ -52,7 +52,6 @@ typedef struct _window_manager_default_t {
char* cursor;
rect_t r_cursor;
- widget_t* system_bar;
input_device_status_t input_device_status;
uint32_t screen_saver_timer_id;
uint32_t screen_saver_time;
diff --git a/tests/combo_box_test.cc b/tests/combo_box_test.cc
index d2e99ce732..4a962812fb 100644
--- a/tests/combo_box_test.cc
+++ b/tests/combo_box_test.cc
@@ -177,3 +177,20 @@ TEST(ComboBox, move_resize) {
widget_destroy(w);
}
+
+TEST(ComboBox, clone) {
+ widget_t* w2 = NULL;
+ widget_t* w1 = combo_box_create(NULL, 0, 0, 100, 100);
+ const char* str = "1:red;2:green;3:blue";
+
+ ASSERT_EQ(combo_box_set_options(w1, str), RET_OK);
+ ASSERT_EQ(combo_box_set_selected_index(w1, 0), RET_OK);
+
+ ASSERT_STREQ(COMBO_BOX(w1)->options, str);
+
+ w2 = widget_clone(w1, NULL);
+ ASSERT_EQ(widget_equal(w1, w2), TRUE);
+
+ widget_destroy(w1);
+ widget_destroy(w2);
+}
diff --git a/tests/draggable_test.cc b/tests/draggable_test.cc
new file mode 100644
index 0000000000..6a331d7682
--- /dev/null
+++ b/tests/draggable_test.cc
@@ -0,0 +1,47 @@
+#include "widgets/view.h"
+#include "features/draggable.h"
+#include "gtest/gtest.h"
+
+TEST(Draggable, basic) {
+ widget_t* w = view_create(NULL, 10, 20, 30, 40);
+ widget_t* d = draggable_create(w, 0, 0, 0, 0);
+ draggable_t* draggable = DRAGGABLE(d);
+
+ ASSERT_EQ(widget_get_prop_bool(d, DRAGGABLE_PROP_VERTICAL_ONLY, FALSE), FALSE);
+ ASSERT_EQ(widget_get_prop_bool(d, DRAGGABLE_PROP_HORIZONTAL_ONLY, FALSE), FALSE);
+ ASSERT_EQ(widget_get_prop_bool(d, DRAGGABLE_PROP_DRAG_WINDOW, FALSE), FALSE);
+ ASSERT_EQ(widget_get_prop_int(d, DRAGGABLE_PROP_LEFT, 0), DRAGGABLE_UNSPECIFIED_NUM);
+ ASSERT_EQ(widget_get_prop_int(d, DRAGGABLE_PROP_TOP, 0), DRAGGABLE_UNSPECIFIED_NUM);
+ ASSERT_EQ(widget_get_prop_int(d, DRAGGABLE_PROP_RIGHT, 0), DRAGGABLE_UNSPECIFIED_NUM);
+ ASSERT_EQ(widget_get_prop_int(d, DRAGGABLE_PROP_BOTTOM, 0), DRAGGABLE_UNSPECIFIED_NUM);
+
+ ASSERT_EQ(widget_set_prop_bool(d, DRAGGABLE_PROP_VERTICAL_ONLY, TRUE), RET_OK);
+ ASSERT_EQ(widget_set_prop_bool(d, DRAGGABLE_PROP_HORIZONTAL_ONLY, TRUE), RET_OK);
+ ASSERT_EQ(widget_set_prop_bool(d, DRAGGABLE_PROP_DRAG_WINDOW, TRUE), RET_OK);
+
+ ASSERT_EQ(widget_set_prop_int(d, DRAGGABLE_PROP_LEFT, 1), RET_OK);
+ ASSERT_EQ(widget_set_prop_int(d, DRAGGABLE_PROP_TOP, 2), RET_OK);
+ ASSERT_EQ(widget_set_prop_int(d, DRAGGABLE_PROP_RIGHT, 3), RET_OK);
+ ASSERT_EQ(widget_set_prop_int(d, DRAGGABLE_PROP_BOTTOM, 4), RET_OK);
+
+ ASSERT_EQ(widget_get_prop_bool(d, DRAGGABLE_PROP_VERTICAL_ONLY, FALSE), TRUE);
+ ASSERT_EQ(widget_get_prop_bool(d, DRAGGABLE_PROP_HORIZONTAL_ONLY, FALSE), TRUE);
+ ASSERT_EQ(widget_get_prop_bool(d, DRAGGABLE_PROP_DRAG_WINDOW, FALSE), TRUE);
+
+ ASSERT_EQ(widget_get_prop_int(d, DRAGGABLE_PROP_LEFT, 0), 1);
+ ASSERT_EQ(widget_get_prop_int(d, DRAGGABLE_PROP_TOP, 0), 2);
+ ASSERT_EQ(widget_get_prop_int(d, DRAGGABLE_PROP_RIGHT, 0), 3);
+ ASSERT_EQ(widget_get_prop_int(d, DRAGGABLE_PROP_BOTTOM, 9), 4);
+
+ ASSERT_EQ(widget_get_prop_bool(d, DRAGGABLE_PROP_VERTICAL_ONLY, FALSE), draggable->vertical_only);
+ ASSERT_EQ(widget_get_prop_bool(d, DRAGGABLE_PROP_HORIZONTAL_ONLY, FALSE),
+ draggable->horizontal_only);
+ ASSERT_EQ(widget_get_prop_bool(d, DRAGGABLE_PROP_DRAG_WINDOW, FALSE), draggable->drag_window);
+
+ ASSERT_EQ(widget_get_prop_int(d, DRAGGABLE_PROP_LEFT, 0), draggable->left);
+ ASSERT_EQ(widget_get_prop_int(d, DRAGGABLE_PROP_TOP, 0), draggable->top);
+ ASSERT_EQ(widget_get_prop_int(d, DRAGGABLE_PROP_RIGHT, 0), draggable->right);
+ ASSERT_EQ(widget_get_prop_int(d, DRAGGABLE_PROP_BOTTOM, 0), draggable->bottom);
+
+ widget_destroy(w);
+}
diff --git a/tests/edit_test.cc b/tests/edit_test.cc
index 25ab45144c..021bc33b76 100644
--- a/tests/edit_test.cc
+++ b/tests/edit_test.cc
@@ -441,3 +441,13 @@ TEST(Edit, events) {
widget_destroy(b);
}
+
+TEST(Edit, clone) {
+ widget_t* w1 = edit_create(NULL, 10, 20, 30, 40);
+ widget_t* w2 = widget_clone(w1, NULL);
+
+ ASSERT_EQ(widget_equal(w1, w2), TRUE);
+
+ widget_destroy(w1);
+ widget_destroy(w2);
+}
diff --git a/tests/emitter_test.cc b/tests/emitter_test.cc
index 55d23c93c6..2fece9e9c7 100644
--- a/tests/emitter_test.cc
+++ b/tests/emitter_test.cc
@@ -199,3 +199,30 @@ TEST(Emitter, remove_item) {
emitter_destroy(emitter);
}
+
+TEST(Emitter, off_by_tag) {
+ uint32_t type = 12;
+ emitter_t* emitter = emitter_create();
+
+ emitter_on_with_tag(emitter, type, on_remove, NULL, 1);
+ emitter_on_with_tag(emitter, type, on_remove, NULL, 1);
+
+ emitter_on_with_tag(emitter, type, on_remove, NULL, 2);
+ emitter_on_with_tag(emitter, type, on_remove, NULL, 3);
+
+ emitter_on_with_tag(emitter, type, on_remove, NULL, 1);
+ emitter_on_with_tag(emitter, type, on_remove, NULL, 1);
+
+ ASSERT_EQ(emitter_size(emitter), 6);
+
+ ASSERT_EQ(emitter_off_by_tag(emitter, 1), RET_OK);
+ ASSERT_EQ(emitter_size(emitter), 2);
+
+ ASSERT_EQ(emitter_off_by_tag(emitter, 3), RET_OK);
+ ASSERT_EQ(emitter_size(emitter), 1);
+
+ ASSERT_EQ(emitter_off_by_tag(emitter, 2), RET_OK);
+ ASSERT_EQ(emitter_size(emitter), 0);
+
+ emitter_destroy(emitter);
+}
diff --git a/tests/fragment_frame_buffer_test.cc b/tests/fragment_frame_buffer_test.cc
index 999771051a..8ac1b3d97e 100644
--- a/tests/fragment_frame_buffer_test.cc
+++ b/tests/fragment_frame_buffer_test.cc
@@ -20,6 +20,14 @@ static void write_data_func(pixel_t pixel) {
s_log += buff;
}
+typedef uint16_t pixel_t;
+#define LCD_FORMAT BITMAP_FMT_BGR565
+#define pixel_from_rgb(r, g, b) ((((r) >> 3) << 11) | (((g) >> 2) << 5) | ((b) >> 3))
+#define pixel_to_rgba(p) \
+ { (0xff & ((p >> 11) << 3)), (0xff & ((p >> 5) << 2)), (0xff & (p << 3)) }
+
+#include "base/pixel.h"
+#include "base/bitmap.h"
#include "lcd/fragment_frame_buffer.h"
TEST(FragmentFrameBuffer, basic) {
diff --git a/tests/image_animation_test.cc b/tests/image_animation_test.cc
index 2ebb75079e..43c7276e3b 100644
--- a/tests/image_animation_test.cc
+++ b/tests/image_animation_test.cc
@@ -89,6 +89,8 @@ TEST(ImageAnimation, range) {
ASSERT_EQ(ia->index, 101);
image_animation_update(w);
ASSERT_EQ(ia->index, 102);
+ ASSERT_EQ(image_animation_next(w), RET_OK);
+ ASSERT_EQ(ia->index, 103);
widget_destroy(w);
}
diff --git a/tests/mutex_test.cc b/tests/mutex_test.cc
new file mode 100644
index 0000000000..c4dee08779
--- /dev/null
+++ b/tests/mutex_test.cc
@@ -0,0 +1,25 @@
+#include "gtest/gtest.h"
+#include "tkc/mutex.h"
+#include "tkc/thread.h"
+#include "tkc/platform.h"
+
+static void* thread_entry(void* args) {
+ tk_mutex_t* mutex = (tk_mutex_t*)args;
+
+ sleep_ms(100);
+ tk_mutex_lock(mutex);
+
+ return NULL;
+}
+
+TEST(Mutex, basic) {
+ tk_mutex_t* mutex = tk_mutex_create();
+ tk_thread_t* thread = tk_thread_create(thread_entry, mutex);
+
+ tk_thread_start(thread);
+ ASSERT_EQ(tk_mutex_unlock(mutex), RET_OK);
+ tk_thread_join(thread);
+
+ tk_thread_destroy(thread);
+ tk_mutex_destroy(mutex);
+}
diff --git a/tests/ostream_retry_test.cc b/tests/ostream_retry_test.cc
new file mode 100644
index 0000000000..9be9d96334
--- /dev/null
+++ b/tests/ostream_retry_test.cc
@@ -0,0 +1,83 @@
+#include "gtest/gtest.h"
+#include "streams/mem/ostream_mem.h"
+#include "streams/misc/ostream_retry.h"
+
+TEST(OStreamRetry, basic) {
+ uint8_t buff[13];
+
+ tk_ostream_t* osmem = tk_ostream_mem_create(buff, sizeof(buff) - 1, 0, FALSE);
+ tk_ostream_mem_t* mem = TK_OSTREAM_MEM(osmem);
+ tk_ostream_t* osretry = tk_ostream_retry_create(osmem);
+ tk_ostream_retry_t* retry = TK_OSTREAM_RETRY(osretry);
+
+ memset(buff, 0x00, sizeof(buff));
+
+ ASSERT_EQ(tk_ostream_write(osretry, (const uint8_t*)"1234", 4), 4);
+ ASSERT_EQ(tk_ostream_write(osretry, (const uint8_t*)"1234", 4), 4);
+ ASSERT_EQ(tk_ostream_write(osretry, (const uint8_t*)"1234", 4), 4);
+ ASSERT_EQ(retry->pending_bytes, 0);
+ ASSERT_EQ(retry->pending_packets, 0);
+ ASSERT_STREQ((char*)buff, "123412341234");
+ ASSERT_EQ(tk_ostream_write(osretry, (const uint8_t*)"abcd", 4), 4);
+ ASSERT_EQ(retry->pending_bytes, 4);
+ ASSERT_EQ(retry->pending_packets, 1);
+ ASSERT_EQ(tk_ostream_write(osretry, (const uint8_t*)"ABCD", 4), 4);
+ ASSERT_EQ(retry->pending_bytes, 8);
+ ASSERT_EQ(retry->pending_packets, 2);
+
+ ASSERT_EQ(tk_ostream_write(osretry, (const uint8_t*)"1234", 4), 4);
+ ASSERT_EQ(retry->pending_bytes, 12);
+ ASSERT_EQ(retry->pending_packets, 3);
+ mem->cursor = 0;
+ tk_ostream_flush(osretry);
+ ASSERT_EQ(retry->pending_bytes, 0);
+ ASSERT_EQ(retry->pending_packets, 0);
+ ASSERT_STREQ((char*)buff, "abcdABCD1234");
+
+ ASSERT_EQ(tk_ostream_write(osretry, (const uint8_t*)"1234", 4), 4);
+ ASSERT_EQ(retry->pending_bytes, 4);
+ ASSERT_EQ(retry->pending_packets, 1);
+ mem->cursor = 0;
+ memset(buff, 0x00, sizeof(buff));
+ ASSERT_EQ(tk_ostream_write(osretry, (const uint8_t*)"abcd", 4), 4);
+ ASSERT_EQ(retry->pending_bytes, 0);
+ ASSERT_EQ(retry->pending_packets, 0);
+ ASSERT_STREQ((char*)buff, "1234abcd");
+
+ OBJECT_UNREF(osmem);
+ OBJECT_UNREF(osretry);
+}
+
+TEST(OStreamRetry, max_retry) {
+ uint8_t buff[13];
+
+ tk_ostream_t* osmem = tk_ostream_mem_create(buff, sizeof(buff) - 1, 0, FALSE);
+ tk_ostream_t* osretry = tk_ostream_retry_create(osmem);
+ tk_ostream_retry_t* retry = TK_OSTREAM_RETRY(osretry);
+ tk_ostream_retry_set_max_retry_times(osretry, 1);
+ ASSERT_EQ(retry->max_retry_times, 1);
+
+ memset(buff, 0x00, sizeof(buff));
+
+ ASSERT_EQ(tk_ostream_write(osretry, (const uint8_t*)"1234", 4), 4);
+ ASSERT_EQ(tk_ostream_write(osretry, (const uint8_t*)"1234", 4), 4);
+ ASSERT_EQ(tk_ostream_write(osretry, (const uint8_t*)"1234", 4), 4);
+ ASSERT_EQ(retry->pending_bytes, 0);
+ ASSERT_EQ(retry->pending_packets, 0);
+ ASSERT_STREQ((char*)buff, "123412341234");
+ ASSERT_EQ(tk_ostream_write(osretry, (const uint8_t*)"abcd", 4), 4);
+ ASSERT_EQ(retry->pending_bytes, 4);
+ ASSERT_EQ(retry->pending_packets, 1);
+
+ ASSERT_EQ(tk_ostream_flush(osretry), RET_OK);
+ ASSERT_EQ(retry->discard_bytes, 4);
+ ASSERT_EQ(retry->discard_packets, 1);
+
+ ASSERT_EQ(tk_ostream_write(osretry, (const uint8_t*)"abcd", 4), 4);
+ ASSERT_EQ(tk_ostream_flush(osretry), RET_OK);
+ ASSERT_EQ(retry->discard_bytes, 8);
+ ASSERT_EQ(retry->discard_packets, 2);
+
+ OBJECT_UNREF(osmem);
+ OBJECT_UNREF(osretry);
+}
diff --git a/tests/ring_buffer_test.cc b/tests/ring_buffer_test.cc
index 787e5591aa..b5ca8464c2 100644
--- a/tests/ring_buffer_test.cc
+++ b/tests/ring_buffer_test.cc
@@ -170,3 +170,34 @@ TEST(RingBuffer, extendable) {
ring_buffer_destroy(rb);
}
+
+TEST(RingBuffer, write_skip_read) {
+ char buff[32];
+ ring_buffer_t* rb = ring_buffer_create(32, 32);
+
+ memset(buff, 0x00, sizeof(buff));
+ ASSERT_EQ(ring_buffer_write(rb, "1234567890", 10), 10);
+ ASSERT_EQ(ring_buffer_skip(rb, 4), RET_OK);
+ ASSERT_EQ(ring_buffer_size(rb), 6);
+ ASSERT_EQ(ring_buffer_read(rb, buff, 4), 4);
+ ASSERT_STREQ(buff, "5678");
+ ASSERT_EQ(ring_buffer_size(rb), 2);
+
+ ASSERT_EQ(ring_buffer_write(rb, "1234567890", 10), 10);
+ ASSERT_EQ(ring_buffer_size(rb), 12);
+ ASSERT_EQ(ring_buffer_write(rb, "1234567890", 10), 10);
+ ASSERT_EQ(ring_buffer_size(rb), 22);
+ ASSERT_EQ(ring_buffer_write(rb, "abcdABCD", 8), 8);
+ ASSERT_EQ(ring_buffer_size(rb), 30);
+ ASSERT_EQ(ring_buffer_skip(rb, 22), RET_OK);
+ ASSERT_EQ(ring_buffer_size(rb), 8);
+
+ ASSERT_EQ(ring_buffer_read(rb, buff, 4), 4);
+ ASSERT_STREQ(buff, "abcd");
+ ASSERT_EQ(ring_buffer_size(rb), 4);
+ ASSERT_EQ(ring_buffer_read(rb, buff, 4), 4);
+ ASSERT_STREQ(buff, "ABCD");
+ ASSERT_EQ(ring_buffer_size(rb), 0);
+
+ ring_buffer_destroy(rb);
+}
diff --git a/tests/semaphore_test.cc b/tests/semaphore_test.cc
new file mode 100644
index 0000000000..a745d271e1
--- /dev/null
+++ b/tests/semaphore_test.cc
@@ -0,0 +1,25 @@
+#include "gtest/gtest.h"
+#include "tkc/semaphore.h"
+#include "tkc/thread.h"
+#include "tkc/platform.h"
+
+static void* thread_entry(void* args) {
+ tk_semaphore_t* sem = (tk_semaphore_t*)args;
+
+ sleep_ms(100);
+ tk_semaphore_post(sem);
+
+ return NULL;
+}
+
+TEST(Semaphore, basic) {
+ tk_semaphore_t* sem = tk_semaphore_create(0, "hello");
+ tk_thread_t* thread = tk_thread_create(thread_entry, sem);
+
+ tk_thread_start(thread);
+ ASSERT_EQ(tk_semaphore_wait(sem, 2000), RET_OK);
+ tk_thread_join(thread);
+
+ tk_thread_destroy(thread);
+ tk_semaphore_destroy(sem);
+}
diff --git a/tests/shdlc_test.cc b/tests/shdlc_test.cc
index 16e3d37d42..b6bfd9a0d8 100644
--- a/tests/shdlc_test.cc
+++ b/tests/shdlc_test.cc
@@ -200,7 +200,7 @@ TEST(SHDLC, data_error) {
wb->data[7] = 'd';
istream = tk_istream_mem_create(wb->data, wb->cursor, 0, FALSE);
- ASSERT_EQ(shdlc_read_data(istream, wb_r, 1000), RET_IO);
+ ASSERT_EQ(shdlc_read_data(istream, wb_r, 1000), RET_TIMEOUT);
OBJECT_UNREF(istream);
wbuffer_deinit(wb);
diff --git a/tests/widget_test.cc b/tests/widget_test.cc
index d668b6663d..4c27337e47 100644
--- a/tests/widget_test.cc
+++ b/tests/widget_test.cc
@@ -1103,3 +1103,30 @@ TEST(Widget, feedback1) {
widget_destroy(w);
}
+
+TEST(Widget, off) {
+ widget_t* w = button_create(NULL, 0, 0, 0, 0);
+
+ ASSERT_EQ(widget_on(w, EVT_MOVE, widget_log_events, NULL) > 0, TRUE);
+ ASSERT_EQ(emitter_size(w->emitter), 1);
+ ASSERT_EQ(widget_off_by_func(w, EVT_MOVE, widget_log_events, NULL), RET_OK);
+
+ widget_destroy(w);
+}
+
+TEST(Widget, off_by_tag) {
+ widget_t* w = button_create(NULL, 0, 0, 0, 0);
+
+ ASSERT_EQ(widget_on_with_tag(w, EVT_MOVE, widget_log_events, NULL, 1) > 0, TRUE);
+ ASSERT_EQ(widget_on_with_tag(w, EVT_MOVE, widget_log_events, NULL, 1) > 0, TRUE);
+ ASSERT_EQ(widget_on_with_tag(w, EVT_MOVE, widget_log_events, NULL, 1) > 0, TRUE);
+ ASSERT_EQ(widget_on_with_tag(w, EVT_MOVE, widget_log_events, NULL, 2) > 0, TRUE);
+ ASSERT_EQ(widget_on_with_tag(w, EVT_MOVE, widget_log_events, NULL, 2) > 0, TRUE);
+
+ ASSERT_EQ(emitter_size(w->emitter), 5);
+
+ ASSERT_EQ(widget_off_by_tag(w, 1), RET_OK);
+ ASSERT_EQ(emitter_size(w->emitter), 2);
+
+ widget_destroy(w);
+}
diff --git a/tools/idl_gen/idl.json b/tools/idl_gen/idl.json
index 7e96a12d63..852c3c474e 100644
--- a/tools/idl_gen/idl.json
+++ b/tools/idl_gen/idl.json
@@ -1,86 +1,86 @@
[
{
"type": "enum",
- "desc": " 控件状态常量定义。\n\n 这里指定常用的状态值,扩展控件可以在自己的头文件中定义私有的状态。\n\n",
+ "desc": " 控件状态常量定义。\r\n\r\n 这里指定常用的状态值,扩展控件可以在自己的头文件中定义私有的状态。\r\n",
"consts": [
{
- "desc": " 无效状态。\n\n",
+ "desc": " 无效状态。\r\n",
"name": "WIDGET_STATE_NONE"
},
{
- "desc": " 正常状态。\n\n",
+ "desc": " 正常状态。\r\n",
"name": "WIDGET_STATE_NORMAL"
},
{
- "desc": " 指针按下状态。\n\n",
+ "desc": " 指针按下状态。\r\n",
"name": "WIDGET_STATE_PRESSED"
},
{
- "desc": " 指针悬浮状态。\n\n",
+ "desc": " 指针悬浮状态。\r\n",
"name": "WIDGET_STATE_OVER"
},
{
- "desc": " 禁用状态。\n\n",
+ "desc": " 禁用状态。\r\n",
"name": "WIDGET_STATE_DISABLE"
},
{
- "desc": " 聚焦状态。\n\n",
+ "desc": " 聚焦状态。\r\n",
"name": "WIDGET_STATE_FOCUSED"
},
{
- "desc": " 勾选状态。\n\n",
+ "desc": " 勾选状态。\r\n",
"name": "WIDGET_STATE_CHECKED"
},
{
- "desc": " 没勾选状态。\n\n",
+ "desc": " 没勾选状态。\r\n",
"name": "WIDGET_STATE_UNCHECKED"
},
{
- "desc": " 编辑器无内容状态。\n\n",
+ "desc": " 编辑器无内容状态。\r\n",
"name": "WIDGET_STATE_EMPTY"
},
{
- "desc": " 编辑器无内容同时聚焦的状态。\n\n",
+ "desc": " 编辑器无内容同时聚焦的状态。\r\n",
"name": "WIDGET_STATE_EMPTY_FOCUS"
},
{
- "desc": " 输入错误状态。\n\n",
+ "desc": " 输入错误状态。\r\n",
"name": "WIDGET_STATE_ERROR"
},
{
- "desc": " 选中状态。\n\n",
+ "desc": " 选中状态。\r\n",
"name": "WIDGET_STATE_SELECTED"
},
{
- "desc": " 正常状态(选中项)。\n\n",
+ "desc": " 正常状态(选中项)。\r\n",
"name": "WIDGET_STATE_NORMAL_OF_CHECKED"
},
{
- "desc": " 指针按下状态(选中项)。\n\n",
+ "desc": " 指针按下状态(选中项)。\r\n",
"name": "WIDGET_STATE_PRESSED_OF_CHECKED"
},
{
- "desc": " 指针悬浮状态(选中项)。\n\n",
+ "desc": " 指针悬浮状态(选中项)。\r\n",
"name": "WIDGET_STATE_OVER_OF_CHECKED"
},
{
- "desc": " 焦点状态(选中项)。\n\n",
+ "desc": " 焦点状态(选中项)。\r\n",
"name": "WIDGET_STATE_FOCUSED_OF_CHECKED"
},
{
- "desc": " 正常状态(当前项)。\n\n",
+ "desc": " 正常状态(当前项)。\r\n",
"name": "WIDGET_STATE_NORMAL_OF_ACTIVE"
},
{
- "desc": " 指针按下状态(当前项)。\n\n",
+ "desc": " 指针按下状态(当前项)。\r\n",
"name": "WIDGET_STATE_PRESSED_OF_ACTIVE"
},
{
- "desc": " 指针悬浮状态(当前项)。\n\n",
+ "desc": " 指针悬浮状态(当前项)。\r\n",
"name": "WIDGET_STATE_OVER_OF_ACTIVE"
},
{
- "desc": " 焦点状态(当前项)。\n\n",
+ "desc": " 焦点状态(当前项)。\r\n",
"name": "WIDGET_STATE_FOCUSED_OF_ACTIVE"
}
],
@@ -125,7 +125,7 @@
}
],
"annotation": {},
- "desc": " 初始化TK。\n\n\n",
+ "desc": " 初始化TK。\r\n\r\n",
"name": "tk_init",
"return": {
"type": "ret_t",
@@ -135,7 +135,7 @@
{
"params": [],
"annotation": {},
- "desc": " 进入TK事件主循环。\n\n\n",
+ "desc": " 进入TK事件主循环。\r\n\r\n",
"name": "tk_run",
"return": {
"type": "ret_t",
@@ -148,7 +148,7 @@
"static": true,
"scriptable": true
},
- "desc": " 退出TK事件主循环。\n\n\n",
+ "desc": " 退出TK事件主循环。\r\n\r\n",
"name": "tk_quit",
"alias": "global_quit",
"return": {
@@ -162,7 +162,7 @@
"static": true,
"scriptable": true
},
- "desc": " 获取全局指针的X坐标。\n\n\n",
+ "desc": " 获取全局指针的X坐标。\r\n\r\n",
"name": "tk_get_pointer_x",
"alias": "global_get_pointer_x",
"return": {
@@ -176,7 +176,7 @@
"static": true,
"scriptable": true
},
- "desc": " 获取全局指针的Y坐标。\n\n\n",
+ "desc": " 获取全局指针的Y坐标。\r\n\r\n",
"name": "tk_get_pointer_y",
"alias": "global_get_pointer_y",
"return": {
@@ -190,7 +190,7 @@
"static": true,
"scriptable": true
},
- "desc": " 获取全局指针是否按下。\n\n\n",
+ "desc": " 获取全局指针是否按下。\r\n\r\n",
"name": "tk_is_pointer_pressed",
"alias": "global_is_pointer_pressed",
"return": {
@@ -207,7 +207,7 @@
}
],
"annotation": {},
- "desc": " 设置屏幕的旋转方向(XXX:目前仅支持0度和90度)。\n\n\n",
+ "desc": " 设置屏幕的旋转方向(XXX:目前仅支持0度和90度)。\r\n\r\n",
"name": "tk_set_lcd_orientation",
"return": {
"type": "ret_t",
@@ -219,7 +219,7 @@
"annotation": {
"private": true
},
- "desc": " 初始化资源。\n\n\n",
+ "desc": " 初始化资源。\r\n\r\n",
"name": "tk_init_assets",
"return": {
"type": "ret_t",
@@ -230,7 +230,7 @@
"events": [],
"properties": [],
"header": "src/awtk_global.h",
- "desc": " TK全局对象。\n\n",
+ "desc": " TK全局对象。\r\n",
"name": "global_t",
"annotation": {
"scriptable": true,
@@ -248,7 +248,7 @@
"scriptable": true,
"gc": true
},
- "desc": " 创建图片对象(一般供脚本语言中使用)。\n\n",
+ "desc": " 创建图片对象(一般供脚本语言中使用)。\r\n",
"name": "bitmap_create",
"return": {
"type": "bitmap_t*",
@@ -283,7 +283,7 @@
"scriptable": true,
"gc": true
},
- "desc": " 创建图片对象。\n\n\n",
+ "desc": " 创建图片对象。\r\n\r\n",
"name": "bitmap_create_ex",
"return": {
"type": "bitmap_t*",
@@ -301,7 +301,7 @@
"annotation": {
"scriptable": true
},
- "desc": " 获取图片一个像素占用的字节数。\n\n\n",
+ "desc": " 获取图片一个像素占用的字节数。\r\n\r\n",
"name": "bitmap_get_bpp",
"return": {
"type": "uint32_t",
@@ -332,7 +332,7 @@
}
],
"annotation": {},
- "desc": " 获取图片指定像素的rgba颜色值(主要用于测试程序)。\n\n\n",
+ "desc": " 获取图片指定像素的rgba颜色值(主要用于测试程序)。\r\n\r\n",
"name": "bitmap_get_pixel",
"return": {
"type": "ret_t",
@@ -353,7 +353,7 @@
}
],
"annotation": {},
- "desc": " 设置line_length。\n\n\n",
+ "desc": " 设置line_length。\r\n\r\n",
"name": "bitmap_set_line_length",
"return": {
"type": "ret_t",
@@ -369,7 +369,7 @@
}
],
"annotation": {},
- "desc": " 获取每一行占用内存的字节数。\n\n\n",
+ "desc": " 获取每一行占用内存的字节数。\r\n\r\n",
"name": "bitmap_get_line_length",
"return": {
"type": "ret_t",
@@ -410,7 +410,7 @@
}
],
"annotation": {},
- "desc": " 初始化图片。\n 数据。3通道时为RGB888格式,4通道时为RGBA888格式(内部拷贝该数据,不会引用,调用者自行释放)。\n\n\n",
+ "desc": " 初始化图片。\r\n 数据。3通道时为RGB888格式,4通道时为RGBA888格式(内部拷贝该数据,不会引用,调用者自行释放)。\r\n\r\n",
"name": "bitmap_init_from_rgba",
"return": {
"type": "ret_t",
@@ -446,7 +446,7 @@
}
],
"annotation": {},
- "desc": " 初始化图片。\n\n\n",
+ "desc": " 初始化图片。\r\n\r\n",
"name": "bitmap_init",
"return": {
"type": "ret_t",
@@ -466,7 +466,7 @@
"scriptable": true,
"gc": true
},
- "desc": " 销毁图片。\n\n",
+ "desc": " 销毁图片。\r\n",
"name": "bitmap_destroy",
"return": {
"type": "ret_t",
@@ -478,7 +478,7 @@
"properties": [
{
"name": "w",
- "desc": " 宽度。\n\n",
+ "desc": " 宽度。\r\n",
"type": "wh_t",
"annotation": {
"readable": true,
@@ -487,7 +487,7 @@
},
{
"name": "h",
- "desc": " 高度。\n\n",
+ "desc": " 高度。\r\n",
"type": "wh_t",
"annotation": {
"readable": true,
@@ -496,7 +496,7 @@
},
{
"name": "line_length",
- "desc": " 每一行实际占用的内存(也称为stride或pitch),一般情况下为w*bpp。\n\n",
+ "desc": " 每一行实际占用的内存(也称为stride或pitch),一般情况下为w*bpp。\r\n",
"type": "uint32_t",
"annotation": {
"readable": true,
@@ -505,7 +505,7 @@
},
{
"name": "flags",
- "desc": " 标志。请参考{bitmap_flag_t}。\n\n",
+ "desc": " 标志。请参考{bitmap_flag_t}。\r\n",
"type": "uint16_t",
"annotation": {
"readable": true,
@@ -514,7 +514,7 @@
},
{
"name": "format",
- "desc": " 格式。请参考{bitmap_format_t}。\n\n",
+ "desc": " 格式。请参考{bitmap_format_t}。\r\n",
"type": "uint16_t",
"annotation": {
"readable": true,
@@ -523,7 +523,7 @@
},
{
"name": "name",
- "desc": " 名称。\n\n",
+ "desc": " 名称。\r\n",
"type": "const char*",
"annotation": {
"readable": true,
@@ -532,7 +532,7 @@
},
{
"name": "data",
- "desc": " 图片数据。\n\n",
+ "desc": " 图片数据。\r\n",
"type": "uint8_t*",
"annotation": {
"readable": true
@@ -540,7 +540,7 @@
}
],
"header": "base/bitmap.h",
- "desc": " 位图。\n\n",
+ "desc": " 位图。\r\n",
"name": "bitmap_t",
"annotation": {
"scriptable": true
@@ -549,74 +549,74 @@
},
{
"type": "enum",
- "desc": " 图片绘制方法常量定义。\n\n",
+ "desc": " 图片绘制方法常量定义。\r\n",
"consts": [
{
- "desc": " 缺省显示。将图片按原大小显示在目标矩形的左上角。\n\n",
+ "desc": " 缺省显示。将图片按原大小显示在目标矩形的左上角。\r\n",
"name": "IMAGE_DRAW_DEFAULT"
},
{
- "desc": " 居中显示。将图片按原大小显示在目标矩形的中央。\n\n",
+ "desc": " 居中显示。将图片按原大小显示在目标矩形的中央。\r\n",
"name": "IMAGE_DRAW_CENTER"
},
{
- "desc": " 图标显示。同居中显示,但会根据屏幕密度调整大小。\n\n",
+ "desc": " 图标显示。同居中显示,但会根据屏幕密度调整大小。\r\n",
"name": "IMAGE_DRAW_ICON"
},
{
- "desc": " 缩放显示。将图片缩放至目标矩形的大小(不保证宽高成比例)。\n\n",
+ "desc": " 缩放显示。将图片缩放至目标矩形的大小(不保证宽高成比例)。\r\n",
"name": "IMAGE_DRAW_SCALE"
},
{
- "desc": " 自动缩放显示。将图片缩放至目标矩形的宽度或高度(选取最小的比例),并居中显示。\n\n",
+ "desc": " 自动缩放显示。将图片缩放至目标矩形的宽度或高度(选取最小的比例),并居中显示。\r\n",
"name": "IMAGE_DRAW_SCALE_AUTO"
},
{
- "desc": " 如果图片比目标矩形大,自动缩小显示,否则居中显示。\n\n",
+ "desc": " 如果图片比目标矩形大,自动缩小显示,否则居中显示。\r\n",
"name": "IMAGE_DRAW_SCALE_DOWN"
},
{
- "desc": " 宽度缩放显示。 将图片缩放至目标矩形的宽度,高度按此比例进行缩放,超出不部分不显示。\n\n",
+ "desc": " 宽度缩放显示。 将图片缩放至目标矩形的宽度,高度按此比例进行缩放,超出不部分不显示。\r\n",
"name": "IMAGE_DRAW_SCALE_W"
},
{
- "desc": " 高度缩放显示。将图片缩放至目标矩形的高度,宽度按此比例进行缩放,超出不部分不显示。\n\n",
+ "desc": " 高度缩放显示。将图片缩放至目标矩形的高度,宽度按此比例进行缩放,超出不部分不显示。\r\n",
"name": "IMAGE_DRAW_SCALE_H"
},
{
- "desc": " 平铺显示。\n\n",
+ "desc": " 平铺显示。\r\n",
"name": "IMAGE_DRAW_REPEAT"
},
{
- "desc": " 水平方向平铺显示,垂直方向缩放。\n\n",
+ "desc": " 水平方向平铺显示,垂直方向缩放。\r\n",
"name": "IMAGE_DRAW_REPEAT_X"
},
{
- "desc": " 垂直方向平铺显示,水平方向缩放。\n\n",
+ "desc": " 垂直方向平铺显示,水平方向缩放。\r\n",
"name": "IMAGE_DRAW_REPEAT_Y"
},
{
- "desc": " 垂直方向平铺显示,水平方向缩放(从底部到顶部)。\n\n",
+ "desc": " 垂直方向平铺显示,水平方向缩放(从底部到顶部)。\r\n",
"name": "IMAGE_DRAW_REPEAT_Y_INVERSE"
},
{
- "desc": " 9宫格显示。\n 将图片分成等大小的9块,4个角按原大小显示在目标矩形的4个角,左右上下和中间5块分别缩放显示在对应的目标区域。\n\n",
+ "desc": " 9宫格显示。\r\n 将图片分成等大小的9块,4个角按原大小显示在目标矩形的4个角,左右上下和中间5块分别缩放显示在对应的目标区域。\r\n",
"name": "IMAGE_DRAW_PATCH9"
},
{
- "desc": " 水平方向3宫格显示,垂直方向居中显示。\n 将图片在水平方向上分成等大小的3块,左右两块按原大小显示在目标矩形的左右,中间一块缩放显示在目标区域中间剩余部分。\n\n",
+ "desc": " 水平方向3宫格显示,垂直方向居中显示。\r\n 将图片在水平方向上分成等大小的3块,左右两块按原大小显示在目标矩形的左右,中间一块缩放显示在目标区域中间剩余部分。\r\n",
"name": "IMAGE_DRAW_PATCH3_X"
},
{
- "desc": " 垂直方向3宫格显示,水平方向居中显示。\n 将图片在垂直方向上分成等大小的3块,上下两块按原大小显示在目标矩形的上下,中间一块缩放显示在目标区域中间剩余部分。\n\n",
+ "desc": " 垂直方向3宫格显示,水平方向居中显示。\r\n 将图片在垂直方向上分成等大小的3块,上下两块按原大小显示在目标矩形的上下,中间一块缩放显示在目标区域中间剩余部分。\r\n",
"name": "IMAGE_DRAW_PATCH3_Y"
},
{
- "desc": " 水平方向3宫格显示,垂直方向缩放显示。\n 将图片在水平方向上分成等大小的3块,左右两块按原大小显示在目标矩形的左右,中间一块缩放显示在目标区域中间剩余部分。\n\n",
+ "desc": " 水平方向3宫格显示,垂直方向缩放显示。\r\n 将图片在水平方向上分成等大小的3块,左右两块按原大小显示在目标矩形的左右,中间一块缩放显示在目标区域中间剩余部分。\r\n",
"name": "IMAGE_DRAW_PATCH3_X_SCALE_Y"
},
{
- "desc": " 垂直方向3宫格显示,水平方向缩放显示。\n 将图片在垂直方向上分成等大小的3块,上下两块按原大小显示在目标矩形的上下,中间一块缩放显示在目标区域中间剩余部分。\n\n",
+ "desc": " 垂直方向3宫格显示,水平方向缩放显示。\r\n 将图片在垂直方向上分成等大小的3块,上下两块按原大小显示在目标矩形的上下,中间一块缩放显示在目标区域中间剩余部分。\r\n",
"name": "IMAGE_DRAW_PATCH3_Y_SCALE_X"
}
],
@@ -1542,7 +1542,7 @@
"annotation": {
"constructor": true
},
- "desc": " 获取缺省的子控件布局算法工厂对象。\n\n",
+ "desc": " 获取缺省的子控件布局算法工厂对象。\r\n",
"name": "children_layouter_factory",
"return": {
"type": "children_layouter_factory_t*",
@@ -1558,7 +1558,7 @@
}
],
"annotation": {},
- "desc": " 设置缺省的子控件布局算法工厂对象。\n\n\n",
+ "desc": " 设置缺省的子控件布局算法工厂对象。\r\n\r\n",
"name": "children_layouter_factory_set",
"return": {
"type": "ret_t",
@@ -1570,7 +1570,7 @@
"annotation": {
"constructor": true
},
- "desc": " 创建子控件布局算法工厂对象。\n\n\n",
+ "desc": " 创建子控件布局算法工厂对象。\r\n\r\n",
"name": "children_layouter_factory_create",
"return": {
"type": "children_layouter_factory_t*",
@@ -1596,7 +1596,7 @@
}
],
"annotation": {},
- "desc": " 注册子控件布局算法创建函数。\n\n\n",
+ "desc": " 注册子控件布局算法创建函数。\r\n\r\n",
"name": "children_layouter_factory_register",
"return": {
"type": "ret_t",
@@ -1619,7 +1619,7 @@
"annotation": {
"constructor": true
},
- "desc": " 创建指定类型的子控件布局算法对象。\n\n\n",
+ "desc": " 创建指定类型的子控件布局算法对象。\r\n\r\n",
"name": "children_layouter_factory_create_layouter",
"return": {
"type": "children_layouter_t*",
@@ -1635,7 +1635,7 @@
}
],
"annotation": {},
- "desc": " 析构并释放子控件布局算法工厂对象。\n\n\n",
+ "desc": " 析构并释放子控件布局算法工厂对象。\r\n\r\n",
"name": "children_layouter_factory_destroy",
"return": {
"type": "ret_t",
@@ -1646,7 +1646,7 @@
"events": [],
"properties": [],
"header": "base/children_layouter_factory.h",
- "desc": " 子控件布局算法工厂。\n\n\n",
+ "desc": " 子控件布局算法工厂。\r\n\r\n",
"name": "children_layouter_factory_t",
"level": 1
},
@@ -1662,7 +1662,7 @@
}
],
"annotation": {},
- "desc": " 获取全部参数。\n\n\n",
+ "desc": " 获取全部参数。\r\n\r\n",
"name": "children_layouter_to_string",
"return": {
"type": "ret_t",
@@ -1683,7 +1683,7 @@
}
],
"annotation": {},
- "desc": " 对控件的子控件进行布局。\n\n\n\n",
+ "desc": " 对控件的子控件进行布局。\r\n\r\n\r\n",
"name": "children_layouter_layout",
"return": {
"type": "ret_t",
@@ -1709,7 +1709,7 @@
}
],
"annotation": {},
- "desc": " 获取指定的参数。\n\n\n\n",
+ "desc": " 获取指定的参数。\r\n\r\n\r\n",
"name": "children_layouter_get_param",
"return": {
"type": "ret_t",
@@ -1735,7 +1735,7 @@
}
],
"annotation": {},
- "desc": " 获取指定的参数。\n\n\n\n",
+ "desc": " 获取指定的参数。\r\n\r\n\r\n",
"name": "children_layouter_set_param",
"return": {
"type": "ret_t",
@@ -1761,7 +1761,7 @@
}
],
"annotation": {},
- "desc": " 设置字符串格式的参数。\n\n\n\n",
+ "desc": " 设置字符串格式的参数。\r\n\r\n\r\n",
"name": "children_layouter_set_param_str",
"return": {
"type": "ret_t",
@@ -1787,7 +1787,7 @@
}
],
"annotation": {},
- "desc": " 获取指定的浮点格式的参数。\n\n\n\n",
+ "desc": " 获取指定的浮点格式的参数。\r\n\r\n\r\n",
"name": "children_layouter_get_param_float",
"return": {
"type": "ret_t",
@@ -1813,7 +1813,7 @@
}
],
"annotation": {},
- "desc": " 获取指定的整数格式的参数。\n\n\n\n",
+ "desc": " 获取指定的整数格式的参数。\r\n\r\n\r\n",
"name": "children_layouter_get_param_int",
"return": {
"type": "ret_t",
@@ -1829,7 +1829,7 @@
}
],
"annotation": {},
- "desc": " 判断layouter对象是否有效。\n\n\n\n",
+ "desc": " 判断layouter对象是否有效。\r\n\r\n\r\n",
"name": "children_layouter_is_valid",
"return": {
"type": "bool_t",
@@ -1845,7 +1845,7 @@
}
],
"annotation": {},
- "desc": " 销毁layouter对象。\n\n\n\n",
+ "desc": " 销毁layouter对象。\r\n\r\n\r\n",
"name": "children_layouter_destroy",
"return": {
"type": "ret_t",
@@ -1861,7 +1861,7 @@
}
],
"annotation": {},
- "desc": " 创建layouter对象。\n\n\n",
+ "desc": " 创建layouter对象。\r\n\r\n",
"name": "children_layouter_create",
"return": {
"type": "children_layouter_t*",
@@ -1872,20 +1872,20 @@
"events": [],
"properties": [],
"header": "base/children_layouter.h",
- "desc": " 子控件排版布局器的接口。\n\n 按特定算法对子控件进行排版布局,子类需要实现vtable中的函数。\n\n\n",
+ "desc": " 子控件排版布局器的接口。\r\n\r\n 按特定算法对子控件进行排版布局,子类需要实现vtable中的函数。\r\n\r\n",
"name": "children_layouter_t",
"level": 1
},
{
"type": "enum",
- "desc": " 剪切板数据类型定义。\n\n",
+ "desc": " 剪切板数据类型定义。\r\n",
"consts": [
{
- "desc": " 无数据。\n\n",
+ "desc": " 无数据。\r\n",
"name": "CLIP_BOARD_DATA_TYPE_NONE"
},
{
- "desc": " UTF8文本。\n\n",
+ "desc": " UTF8文本。\r\n",
"name": "CLIP_BOARD_DATA_TYPE_TEXT"
}
],
@@ -1905,7 +1905,7 @@
"annotation": {
"constructor": true
},
- "desc": " 获取缺省的剪切板对象。\n\n\n",
+ "desc": " 获取缺省的剪切板对象。\r\n\r\n",
"name": "clip_board",
"alias": "clip_board_instance",
"return": {
@@ -1922,7 +1922,7 @@
}
],
"annotation": {},
- "desc": " 设置缺省的剪切板对象。\n\n\n",
+ "desc": " 设置缺省的剪切板对象。\r\n\r\n",
"name": "clip_board_set",
"return": {
"type": "ret_t",
@@ -1938,7 +1938,7 @@
}
],
"annotation": {},
- "desc": " 清空剪切板中的数据。\n\n\n",
+ "desc": " 清空剪切板中的数据。\r\n\r\n",
"name": "clip_board_clear",
"return": {
"type": "ret_t",
@@ -1969,7 +1969,7 @@
}
],
"annotation": {},
- "desc": " 设置数据到剪切板中。\n\n\n",
+ "desc": " 设置数据到剪切板中。\r\n\r\n",
"name": "clip_board_set_data",
"return": {
"type": "ret_t",
@@ -2000,7 +2000,7 @@
}
],
"annotation": {},
- "desc": " 从剪切板中获取数据。\n\n\n",
+ "desc": " 从剪切板中获取数据。\r\n\r\n",
"name": "clip_board_get_data",
"return": {
"type": "ret_t",
@@ -2016,7 +2016,7 @@
}
],
"annotation": {},
- "desc": " 销毁剪切板对象。\n\n\n",
+ "desc": " 销毁剪切板对象。\r\n\r\n",
"name": "clip_board_destroy",
"return": {
"type": "ret_t",
@@ -2035,7 +2035,7 @@
"static": true,
"scriptable": true
},
- "desc": " 设置文本(UTF8)数据到剪切板。\n\n\n",
+ "desc": " 设置文本(UTF8)数据到剪切板。\r\n\r\n",
"name": "clip_board_set_text",
"return": {
"type": "ret_t",
@@ -2048,7 +2048,7 @@
"static": true,
"scriptable": true
},
- "desc": " 从剪切板中获取文本(UTF8)数据。\n\n\n",
+ "desc": " 从剪切板中获取文本(UTF8)数据。\r\n\r\n",
"name": "clip_board_get_text",
"return": {
"type": "const char*",
@@ -2059,7 +2059,7 @@
"events": [],
"properties": [],
"header": "base/clip_board.h",
- "desc": " 剪切板接口。\n\n",
+ "desc": " 剪切板接口。\r\n",
"name": "clip_board_t",
"annotation": {
"scriptable": true
@@ -2074,7 +2074,7 @@
"annotation": {
"constructor": true
},
- "desc": " 获取缺省的对话框高亮策略工厂对象。\n\n",
+ "desc": " 获取缺省的对话框高亮策略工厂对象。\r\n",
"name": "dialog_highlighter_factory",
"return": {
"type": "dialog_highlighter_factory_t*",
@@ -2090,7 +2090,7 @@
}
],
"annotation": {},
- "desc": " 设置缺省的对话框高亮策略工厂对象。\n\n\n",
+ "desc": " 设置缺省的对话框高亮策略工厂对象。\r\n\r\n",
"name": "dialog_highlighter_factory_set",
"return": {
"type": "ret_t",
@@ -2102,7 +2102,7 @@
"annotation": {
"constructor": true
},
- "desc": " 创建对话框高亮策略工厂对象。\n\n\n",
+ "desc": " 创建对话框高亮策略工厂对象。\r\n\r\n",
"name": "dialog_highlighter_factory_create",
"return": {
"type": "dialog_highlighter_factory_t*",
@@ -2128,7 +2128,7 @@
}
],
"annotation": {},
- "desc": " 注册对话框高亮策略创建函数。\n\n\n",
+ "desc": " 注册对话框高亮策略创建函数。\r\n\r\n",
"name": "dialog_highlighter_factory_register",
"return": {
"type": "ret_t",
@@ -2156,7 +2156,7 @@
"annotation": {
"constructor": true
},
- "desc": " 创建指定类型的对话框高亮策略对象。\n\n\n",
+ "desc": " 创建指定类型的对话框高亮策略对象。\r\n\r\n",
"name": "dialog_highlighter_factory_create_highlighter",
"return": {
"type": "dialog_highlighter_t*",
@@ -2172,7 +2172,7 @@
}
],
"annotation": {},
- "desc": " 析构并释放对话框高亮策略工厂对象。\n\n\n",
+ "desc": " 析构并释放对话框高亮策略工厂对象。\r\n\r\n",
"name": "dialog_highlighter_factory_destroy",
"return": {
"type": "ret_t",
@@ -2183,16 +2183,16 @@
"events": [],
"properties": [],
"header": "base/dialog_highlighter_factory.h",
- "desc": " 对话框高亮策略工厂。\n\n\n",
+ "desc": " 对话框高亮策略工厂。\r\n\r\n",
"name": "dialog_highlighter_factory_t",
"level": 1
},
{
"type": "enum",
- "desc": " @type string\n 内置的对话框高亮策略。\n\n",
+ "desc": " @type string\r\n 内置的对话框高亮策略。\r\n",
"consts": [
{
- "desc": " 缺省的对话框高亮策略。\n\n",
+ "desc": " 缺省的对话框高亮策略。\r\n",
"name": "DIALOG_HIGHLIGHTER_DEFAULT"
}
],
@@ -2213,7 +2213,7 @@
}
],
"annotation": {},
- "desc": " 创建对话框高亮策略对象。\n\n>供子类构造函数用。\n\n\n",
+ "desc": " 创建对话框高亮策略对象。\r\n\r\n>供子类构造函数用。\r\n\r\n",
"name": "dialog_highlighter_create",
"return": {
"type": "dialog_highlighter_t*",
@@ -2239,7 +2239,7 @@
}
],
"annotation": {},
- "desc": " 设置背景图片。\n\n\n",
+ "desc": " 设置背景图片。\r\n\r\n",
"name": "dialog_highlighter_set_bg",
"return": {
"type": "ret_t",
@@ -2260,7 +2260,7 @@
}
],
"annotation": {},
- "desc": " 初始化。在绘制完背景,在截图前调用。\n\n\n",
+ "desc": " 初始化。在绘制完背景,在截图前调用。\r\n\r\n",
"name": "dialog_highlighter_prepare",
"return": {
"type": "ret_t",
@@ -2281,7 +2281,7 @@
}
],
"annotation": {},
- "desc": " 绘制背景。\n\n\n",
+ "desc": " 绘制背景。\r\n\r\n",
"name": "dialog_highlighter_draw",
"return": {
"type": "ret_t",
@@ -2297,7 +2297,7 @@
}
],
"annotation": {},
- "desc": " 是否是动态绘制(方便外层优化)。\n\n\n",
+ "desc": " 是否是动态绘制(方便外层优化)。\r\n\r\n",
"name": "dialog_highlighter_is_dynamic",
"return": {
"type": "bool_t",
@@ -2313,7 +2313,7 @@
}
],
"annotation": {},
- "desc": " 销毁对话框高亮策略对象。\n\n\n",
+ "desc": " 销毁对话框高亮策略对象。\r\n\r\n",
"name": "dialog_highlighter_destroy",
"return": {
"type": "ret_t",
@@ -2325,283 +2325,287 @@
"properties": [
{
"name": "img",
- "desc": " 底层窗口的截图。\n\n",
+ "desc": " 底层窗口的截图。\r\n",
"type": "bitmap_t"
},
{
"name": "canvas",
- "desc": " 画布。\n\n",
+ "desc": " 画布。\r\n",
"type": "canvas_t*"
},
{
"name": "dialog",
- "desc": " 对应的对话框。\n\n",
+ "desc": " 对应的对话框。\r\n",
"type": "widget_t*"
}
],
"header": "base/dialog_highlighter.h",
- "desc": " 对话框高亮策略。\n\n> 高亮策略的基本思路是对背景进行处理,比如将背景变暗或变模糊。\n\n\n",
+ "desc": " 对话框高亮策略。\r\n\r\n> 高亮策略的基本思路是对背景进行处理,比如将背景变暗或变模糊。\r\n\r\n",
"name": "dialog_highlighter_t",
"level": 1
},
{
"type": "enum",
- "desc": " 类型常量定义。\n\n",
+ "desc": " 类型常量定义。\r\n",
"consts": [
{
- "desc": " 指针按下事件名(pointer_event_t)。\n\n",
+ "desc": " 指针按下事件名(pointer_event_t)。\r\n",
"name": "EVT_POINTER_DOWN"
},
{
- "desc": " 指针按下事件名,在子控件处理之前触发(pointer_event_t)。\n\n",
+ "desc": " 指针按下事件名,在子控件处理之前触发(pointer_event_t)。\r\n",
"name": "EVT_POINTER_DOWN_BEFORE_CHILDREN"
},
{
- "desc": " 指针移动事件名(pointer_event_t)。\n\n",
+ "desc": " 指针移动事件名(pointer_event_t)。\r\n",
"name": "EVT_POINTER_MOVE"
},
{
- "desc": " 指针移动事件名,在子控件处理之前触发(pointer_event_t)。\n\n",
+ "desc": " 指针移动事件名,在子控件处理之前触发(pointer_event_t)。\r\n",
"name": "EVT_POINTER_MOVE_BEFORE_CHILDREN"
},
{
- "desc": " 指针抬起事件名(pointer_event_t)。\n\n",
+ "desc": " 指针抬起事件名(pointer_event_t)。\r\n",
"name": "EVT_POINTER_UP"
},
{
- "desc": " 指针抬起事件名,在子控件处理之前触发(pointer_event_t)。\n\n",
+ "desc": " 指针抬起事件名,在子控件处理之前触发(pointer_event_t)。\r\n",
"name": "EVT_POINTER_UP_BEFORE_CHILDREN"
},
{
- "desc": " 滚轮事件名(pointer_event_t)。\n\n",
+ "desc": " 滚轮事件名(pointer_event_t)。\r\n",
"name": "EVT_WHEEL"
},
{
- "desc": " 取消前一个指针按下事件名(pointer_event_t)。\n\n",
+ "desc": " 鼠标滚轮事件名,在子控件处理之前触发(key_event_t)。\r\n",
+ "name": "EVT_WHEEL_BEFORE_CHILDREN"
+ },
+ {
+ "desc": " 取消前一个指针按下事件名(pointer_event_t)。\r\n",
"name": "EVT_POINTER_DOWN_ABORT"
},
{
- "desc": " 右键/长按弹出上下文菜单的事件名(pointer_event_t)。\n\n",
+ "desc": " 右键/长按弹出上下文菜单的事件名(pointer_event_t)。\r\n",
"name": "EVT_CONTEXT_MENU"
},
{
- "desc": " 指针进入事件名(pointer_event_t)。\n\n",
+ "desc": " 指针进入事件名(pointer_event_t)。\r\n",
"name": "EVT_POINTER_ENTER"
},
{
- "desc": " 指针离开事件名(pointer_event_t)。\n\n",
+ "desc": " 指针离开事件名(pointer_event_t)。\r\n",
"name": "EVT_POINTER_LEAVE"
},
{
- "desc": " 长按事件名(pointer_event_t)。\n\n",
+ "desc": " 长按事件名(pointer_event_t)。\r\n",
"name": "EVT_LONG_PRESS"
},
{
- "desc": " 点击事件名(pointer_event_t)。\n\n",
+ "desc": " 点击事件名(pointer_event_t)。\r\n",
"name": "EVT_CLICK"
},
{
- "desc": " 得到焦点事件名(event_t)。\n\n",
+ "desc": " 得到焦点事件名(event_t)。\r\n",
"name": "EVT_FOCUS"
},
{
- "desc": " 失去焦点事件名(event_t)。\n\n",
+ "desc": " 失去焦点事件名(event_t)。\r\n",
"name": "EVT_BLUR"
},
{
- "desc": " 键按下事件名(key_event_t)。\n\n",
+ "desc": " 键按下事件名(key_event_t)。\r\n",
"name": "EVT_KEY_DOWN"
},
{
- "desc": " 键按下事件名,在子控件处理之前触发(key_event_t)。\n\n",
+ "desc": " 键按下事件名,在子控件处理之前触发(key_event_t)。\r\n",
"name": "EVT_KEY_DOWN_BEFORE_CHILDREN"
},
{
- "desc": " 按键repeat事件名(key_event_t)。\n\n",
+ "desc": " 按键repeat事件名(key_event_t)。\r\n",
"name": "EVT_KEY_REPEAT"
},
{
- "desc": " 键抬起事件名(key_event_t)。\n\n",
+ "desc": " 键抬起事件名(key_event_t)。\r\n",
"name": "EVT_KEY_UP"
},
{
- "desc": " 键抬起事件名,在子控件处理之前触发(key_event_t)。\n\n",
+ "desc": " 键抬起事件名,在子控件处理之前触发(key_event_t)。\r\n",
"name": "EVT_KEY_UP_BEFORE_CHILDREN"
},
{
- "desc": " 即将移动Widget的事件名(event_t)。\n\n",
+ "desc": " 即将移动Widget的事件名(event_t)。\r\n",
"name": "EVT_WILL_MOVE"
},
{
- "desc": " 移动Widget的事件名(event_t)。\n\n",
+ "desc": " 移动Widget的事件名(event_t)。\r\n",
"name": "EVT_MOVE"
},
{
- "desc": " 即将调整Widget大小的事件名(event_t)。\n\n",
+ "desc": " 即将调整Widget大小的事件名(event_t)。\r\n",
"name": "EVT_WILL_RESIZE"
},
{
- "desc": " 调整Widget大小的事件名(event_t)。\n\n",
+ "desc": " 调整Widget大小的事件名(event_t)。\r\n",
"name": "EVT_RESIZE"
},
{
- "desc": " 即将调整Widget大小/位置的事件名(event_t)。\n\n",
+ "desc": " 即将调整Widget大小/位置的事件名(event_t)。\r\n",
"name": "EVT_WILL_MOVE_RESIZE"
},
{
- "desc": " 调整Widget大小/位置的事件名(event_t)。\n\n",
+ "desc": " 调整Widget大小/位置的事件名(event_t)。\r\n",
"name": "EVT_MOVE_RESIZE"
},
{
- "desc": " 控件的值即将改变的事件名(event_t)。\n\n",
+ "desc": " 控件的值即将改变的事件名(event_t)。\r\n",
"name": "EVT_VALUE_WILL_CHANGE"
},
{
- "desc": " 控件的值改变的事件名(event_t)。\n\n",
+ "desc": " 控件的值改变的事件名(event_t)。\r\n",
"name": "EVT_VALUE_CHANGED"
},
{
- "desc": " 控件的值持续改变(如编辑器正在编辑)的事件名(event_t)。\n\n",
+ "desc": " 控件的值持续改变(如编辑器正在编辑)的事件名(event_t)。\r\n",
"name": "EVT_VALUE_CHANGING"
},
{
- "desc": " 绘制的事件名(paint_event_t)。\n\n",
+ "desc": " 绘制的事件名(paint_event_t)。\r\n",
"name": "EVT_PAINT"
},
{
- "desc": " 即将绘制的事件名(paint_event_t)。\n\n",
+ "desc": " 即将绘制的事件名(paint_event_t)。\r\n",
"name": "EVT_BEFORE_PAINT"
},
{
- "desc": " 绘制完成的事件名(paint_event_t)。\n\n",
+ "desc": " 绘制完成的事件名(paint_event_t)。\r\n",
"name": "EVT_AFTER_PAINT"
},
{
- "desc": " 绘制完成(canvas状态已经恢复)的事件名(paint_event_t)。\n\n",
+ "desc": " 绘制完成(canvas状态已经恢复)的事件名(paint_event_t)。\r\n",
"name": "EVT_PAINT_DONE"
},
{
- "desc": " locale改变的事件(event_t)。\n\n",
+ "desc": " locale改变的事件(event_t)。\r\n",
"name": "EVT_LOCALE_CHANGED"
},
{
- "desc": " 控件动画开始事件(event_t)。\n\n",
+ "desc": " 控件动画开始事件(event_t)。\r\n",
"name": "EVT_ANIM_START"
},
{
- "desc": " 控件动画被主动停止的事件(event_t)。\n\n",
+ "desc": " 控件动画被主动停止的事件(event_t)。\r\n",
"name": "EVT_ANIM_STOP"
},
{
- "desc": " 控件动画被暂停的事件(event_t)。\n\n",
+ "desc": " 控件动画被暂停的事件(event_t)。\r\n",
"name": "EVT_ANIM_PAUSE"
},
{
- "desc": " 控件动画yoyo/repeat时,完成一次的事件(event_t)。\n\n",
+ "desc": " 控件动画yoyo/repeat时,完成一次的事件(event_t)。\r\n",
"name": "EVT_ANIM_ONCE"
},
{
- "desc": " 控件动画完成事件(event_t)。\n\n",
+ "desc": " 控件动画完成事件(event_t)。\r\n",
"name": "EVT_ANIM_END"
},
{
- "desc": " 窗口加载完成事件(event_t)。\n\n",
+ "desc": " 窗口加载完成事件(event_t)。\r\n",
"name": "EVT_WINDOW_LOAD"
},
{
- "desc": " 窗口即将打开事件(event_t)。\n 如果有窗口动画,在窗口动画开始前触发。如果没有窗口动画,在窗口被加载后的下一次循环中触发。\n\n",
+ "desc": " 窗口即将打开事件(event_t)。\r\n 如果有窗口动画,在窗口动画开始前触发。如果没有窗口动画,在窗口被加载后的下一次循环中触发。\r\n",
"name": "EVT_WINDOW_WILL_OPEN"
},
{
- "desc": " 窗口打开事件(event_t)。\n 如果有窗口动画,在窗口动画完成时触发。如果没有窗口动画,在窗口被加载后的下一次循环中触发。\n\n",
+ "desc": " 窗口打开事件(event_t)。\r\n 如果有窗口动画,在窗口动画完成时触发。如果没有窗口动画,在窗口被加载后的下一次循环中触发。\r\n",
"name": "EVT_WINDOW_OPEN"
},
{
- "desc": " 窗口被切换到后台事件(event_t)。\n 打开新窗口时,当前窗口被切换到后台时,对当前窗口触发本事件。\n\n",
+ "desc": " 窗口被切换到后台事件(event_t)。\r\n 打开新窗口时,当前窗口被切换到后台时,对当前窗口触发本事件。\r\n",
"name": "EVT_WINDOW_TO_BACKGROUND"
},
{
- "desc": " 窗口被切换到前台事件(event_t)。\n 关闭当前窗口时,前一个窗口被切换到前台时,对前一个窗口触发本事件。\n\n",
+ "desc": " 窗口被切换到前台事件(event_t)。\r\n 关闭当前窗口时,前一个窗口被切换到前台时,对前一个窗口触发本事件。\r\n",
"name": "EVT_WINDOW_TO_FOREGROUND"
},
{
- "desc": " 窗口关闭事件。\n\n",
+ "desc": " 窗口关闭事件。\r\n",
"name": "EVT_WINDOW_CLOSE"
},
{
- "desc": " 请求关闭窗口的事件(event_t)。\n\n",
+ "desc": " 请求关闭窗口的事件(event_t)。\r\n",
"name": "EVT_REQUEST_CLOSE_WINDOW"
},
{
- "desc": " 顶层窗口改变的事件(window_event_t)。\n\n",
+ "desc": " 顶层窗口改变的事件(window_event_t)。\r\n",
"name": "EVT_TOP_WINDOW_CHANGED"
},
{
- "desc": " 输入法提交输入的文本事件(im_commit_event_t)。\n\n",
+ "desc": " 输入法提交输入的文本事件(im_commit_event_t)。\r\n",
"name": "EVT_IM_COMMIT"
},
{
- "desc": " 输入法请求显示候选字事件(im_candidates_event_t)。\n\n",
+ "desc": " 输入法请求显示候选字事件(im_candidates_event_t)。\r\n",
"name": "EVT_IM_SHOW_CANDIDATES"
},
{
- "desc": " 软键盘Action点击事件(event_t)。\n\n",
+ "desc": " 软键盘Action点击事件(event_t)。\r\n",
"name": "EVT_IM_ACTION"
},
{
- "desc": " 请求更新软键盘上的Action按钮的信息(im_action_button_info_event_t)。\n\n",
+ "desc": " 请求更新软键盘上的Action按钮的信息(im_action_button_info_event_t)。\r\n",
"name": "EVT_IM_ACTION_INFO"
},
{
- "desc": " 开始拖动(event_t)。\n\n",
+ "desc": " 开始拖动(event_t)。\r\n",
"name": "EVT_DRAG_START"
},
{
- "desc": " 拖动(event_t)。\n\n",
+ "desc": " 拖动(event_t)。\r\n",
"name": "EVT_DRAG"
},
{
- "desc": " 结束拖动(event_t)。\n\n",
+ "desc": " 结束拖动(event_t)。\r\n",
"name": "EVT_DRAG_END"
},
{
- "desc": " 在指定的时间内(WITH_SCREEN_SAVER_TIME),没有用户输入事件,由窗口管理器触发。\n\n",
+ "desc": " 在指定的时间内(WITH_SCREEN_SAVER_TIME),没有用户输入事件,由窗口管理器触发。\r\n",
"name": "EVT_SCREEN_SAVER"
},
{
- "desc": " 内存不足(event_t)。\n\n",
+ "desc": " 内存不足(event_t)。\r\n",
"name": "EVT_LOW_MEMORY"
},
{
- "desc": " 内存耗尽(event_t)。\n\n",
+ "desc": " 内存耗尽(event_t)。\r\n",
"name": "EVT_OUT_OF_MEMORY"
},
{
- "desc": " 屏幕即将旋转(event_t)。\n\n",
+ "desc": " 屏幕即将旋转(event_t)。\r\n",
"name": "EVT_ORIENTATION_WILL_CHANGED"
},
{
- "desc": " 屏幕旋转(event_t)。\n\n",
+ "desc": " 屏幕旋转(event_t)。\r\n",
"name": "EVT_ORIENTATION_CHANGED"
},
{
- "desc": " 控件创建事件(event_t)。\n\n",
+ "desc": " 控件创建事件(event_t)。\r\n",
"name": "EVT_WIDGET_CREATED"
},
{
- "desc": " 请求退出应用程序事件。\n 点击原生窗口关闭按钮时,通过窗口管理器触发,注册该事件并返回RET_STOP,可以阻止窗口关闭。\n\n",
+ "desc": " 请求退出应用程序事件。\r\n 点击原生窗口关闭按钮时,通过窗口管理器触发,注册该事件并返回RET_STOP,可以阻止窗口关闭。\r\n",
"name": "EVT_REQUEST_QUIT_APP"
},
{
- "desc": " 主题变化(event_t)。\n\n",
+ "desc": " 主题变化(event_t)。\r\n",
"name": "EVT_THEME_CHANGED"
},
{
- "desc": " event queue其它请求编号起始值。\n\n",
+ "desc": " event queue其它请求编号起始值。\r\n",
"name": "EVT_REQ_START"
},
{
- "desc": " 用户定义事件起始值。\n\n",
+ "desc": " 用户定义事件起始值。\r\n",
"name": "EVT_USER_START"
}
],
@@ -2640,7 +2644,7 @@
}
],
"annotation": {},
- "desc": " 加载字体。\n\n\n\n",
+ "desc": " 加载字体。\r\n\r\n\r\n",
"name": "font_loader_load",
"return": {
"type": "font_t*",
@@ -2651,7 +2655,7 @@
"events": [],
"properties": [],
"header": "base/font_loader.h",
- "desc": " 字体加载接口。\n\n",
+ "desc": " 字体加载接口。\r\n",
"name": "font_loader_t",
"level": 1
},
@@ -2663,7 +2667,7 @@
"annotation": {
"constructor": true
},
- "desc": " 获取缺省的字体管理器。\n\n",
+ "desc": " 获取缺省的字体管理器。\r\n",
"name": "font_manager",
"return": {
"type": "font_manager_t*",
@@ -2679,7 +2683,7 @@
}
],
"annotation": {},
- "desc": " 设置缺省的字体管理器。\n\n\n",
+ "desc": " 设置缺省的字体管理器。\r\n\r\n",
"name": "font_manager_set",
"return": {
"type": "ret_t",
@@ -2697,7 +2701,7 @@
"annotation": {
"constructor": true
},
- "desc": " 创建字体管理器。\n\n\n",
+ "desc": " 创建字体管理器。\r\n\r\n",
"name": "font_manager_create",
"return": {
"type": "font_manager_t*",
@@ -2720,7 +2724,7 @@
"annotation": {
"constructor": true
},
- "desc": " 初始化字体管理器。\n\n\n",
+ "desc": " 初始化字体管理器。\r\n\r\n",
"name": "font_manager_init",
"return": {
"type": "font_manager_t*",
@@ -2741,7 +2745,7 @@
}
],
"annotation": {},
- "desc": " 设置资源管理器对象\n\n 之所以需要设置资源管理器对象,而不是使用缺省的资源管理器对象,是因为在designer中有两个字体管理器:\n\n * 一个用于designer本身加载字体。\n\n * 一个用于被设计的窗口加载字体。\n\n这两个字体管理器需要从不同的路径加载资源。\n\n\n",
+ "desc": " 设置资源管理器对象\r\n\r\n 之所以需要设置资源管理器对象,而不是使用缺省的资源管理器对象,是因为在designer中有两个字体管理器:\r\n\r\n * 一个用于designer本身加载字体。\r\n\r\n * 一个用于被设计的窗口加载字体。\r\n\r\n这两个字体管理器需要从不同的路径加载资源。\r\n\r\n",
"name": "font_manager_set_assets_manager",
"return": {
"type": "ret_t",
@@ -2767,7 +2771,7 @@
}
],
"annotation": {},
- "desc": " 向缓存中加入字体。\n\n\n",
+ "desc": " 向缓存中加入字体。\r\n\r\n",
"name": "font_manager_add_font",
"return": {
"type": "ret_t",
@@ -2793,7 +2797,7 @@
}
],
"annotation": {},
- "desc": " 从缓存中查找字体,如果没找到,再加载字体,并缓存。\n\n\n",
+ "desc": " 从缓存中查找字体,如果没找到,再加载字体,并缓存。\r\n\r\n",
"name": "font_manager_get_font",
"return": {
"type": "font_t*",
@@ -2821,7 +2825,7 @@
"annotation": {
"scriptable": true
},
- "desc": " 卸载指定的字体。\n\n\n",
+ "desc": " 卸载指定的字体。\r\n\r\n",
"name": "font_manager_unload_font",
"return": {
"type": "ret_t",
@@ -2839,7 +2843,7 @@
"annotation": {
"scriptable": true
},
- "desc": " 卸载全部字体。\n\n\n",
+ "desc": " 卸载全部字体。\r\n\r\n",
"name": "font_manager_unload_all",
"return": {
"type": "ret_t",
@@ -2855,7 +2859,7 @@
}
],
"annotation": {},
- "desc": " 析构字体管理器。\n\n\n",
+ "desc": " 析构字体管理器。\r\n\r\n",
"name": "font_manager_deinit",
"return": {
"type": "ret_t",
@@ -2871,7 +2875,7 @@
}
],
"annotation": {},
- "desc": " 析构并释放字体管理器。\n\n\n",
+ "desc": " 析构并释放字体管理器。\r\n\r\n",
"name": "font_manager_destroy",
"return": {
"type": "ret_t",
@@ -2883,7 +2887,7 @@
"properties": [
{
"name": "loader",
- "desc": " 字体加载器。\n\n",
+ "desc": " 字体加载器。\r\n",
"type": "font_loader_t*",
"annotation": {
"private": true
@@ -2891,7 +2895,7 @@
},
{
"name": "assets_manager",
- "desc": " 资源管理器。\n\n",
+ "desc": " 资源管理器。\r\n",
"type": "assets_manager_t*",
"annotation": {
"private": true
@@ -2899,7 +2903,7 @@
}
],
"header": "base/font_manager.h",
- "desc": " 字体管理器,负责字体的加载和缓存管理。\n (如果使用nanovg,字体由nanovg内部管理)\n\n",
+ "desc": " 字体管理器,负责字体的加载和缓存管理。\r\n (如果使用nanovg,字体由nanovg内部管理)\r\n",
"name": "font_manager_t",
"annotation": {
"scriptable": true
@@ -2908,18 +2912,18 @@
},
{
"type": "enum",
- "desc": " 字模格式常量定义。\n\n",
+ "desc": " 字模格式常量定义。\r\n",
"consts": [
{
- "desc": " 每个像素占用1个字节(缺省)。\n\n",
+ "desc": " 每个像素占用1个字节(缺省)。\r\n",
"name": "GLYPH_FMT_ALPHA"
},
{
- "desc": " 每个像素占用1个比特。\n\n",
+ "desc": " 每个像素占用1个比特。\r\n",
"name": "GLYPH_FMT_MONO"
},
{
- "desc": " 每个像素占用4个字节。\n\n",
+ "desc": " 每个像素占用4个字节。\r\n",
"name": "GLYPH_FMT_RGBA"
}
],
@@ -2939,7 +2943,7 @@
"annotation": {
"constructor": true
},
- "desc": " 创建glyph对象。\n\n\n",
+ "desc": " 创建glyph对象。\r\n\r\n",
"name": "glyph_create",
"return": {
"type": "glyph_t*",
@@ -2951,7 +2955,7 @@
"annotation": {
"constructor": true
},
- "desc": " 克隆glyph对象。\n\n\n",
+ "desc": " 克隆glyph对象。\r\n\r\n",
"name": "glyph_clone",
"return": {
"type": "glyph_t*",
@@ -2969,7 +2973,7 @@
"annotation": {
"deconstructor": true
},
- "desc": " 销毁glyph对象。\n\n\n",
+ "desc": " 销毁glyph对象。\r\n\r\n",
"name": "glyph_destroy",
"return": {
"type": "ret_t",
@@ -2981,7 +2985,7 @@
"properties": [
{
"name": "x",
- "desc": " x坐标。\n\n",
+ "desc": " x坐标。\r\n",
"type": "int16_t",
"annotation": {
"readable": true
@@ -2989,7 +2993,7 @@
},
{
"name": "y",
- "desc": " y坐标。\n\n",
+ "desc": " y坐标。\r\n",
"type": "int16_t",
"annotation": {
"readable": true
@@ -2997,7 +3001,7 @@
},
{
"name": "w",
- "desc": " 宽度。\n\n",
+ "desc": " 宽度。\r\n",
"type": "uint16_t",
"annotation": {
"readable": true
@@ -3005,7 +3009,7 @@
},
{
"name": "h",
- "desc": " 高度。\n\n",
+ "desc": " 高度。\r\n",
"type": "uint16_t",
"annotation": {
"readable": true
@@ -3013,7 +3017,7 @@
},
{
"name": "advance",
- "desc": " 占位宽度。\n\n",
+ "desc": " 占位宽度。\r\n",
"type": "uint16_t",
"annotation": {
"readable": true
@@ -3021,7 +3025,7 @@
},
{
"name": "format",
- "desc": " 格式。\n\n",
+ "desc": " 格式。\r\n",
"type": "uint8_t",
"annotation": {
"readable": true
@@ -3029,7 +3033,7 @@
},
{
"name": "pitch",
- "desc": " pitch。\n\n",
+ "desc": " pitch。\r\n",
"type": "uint8_t",
"annotation": {
"readable": true
@@ -3037,7 +3041,7 @@
},
{
"name": "data",
- "desc": " 数据。\n\n",
+ "desc": " 数据。\r\n",
"type": "const uint8_t*",
"annotation": {
"readable": true
@@ -3045,7 +3049,7 @@
}
],
"header": "base/font.h",
- "desc": " 代表一个字符的字模。\n\n\n",
+ "desc": " 代表一个字符的字模。\r\n\r\n",
"name": "glyph_t",
"level": 1
},
@@ -3066,7 +3070,7 @@
}
],
"annotation": {},
- "desc": " 获取字体的基线。\n\n\n",
+ "desc": " 获取字体的基线。\r\n\r\n",
"name": "font_get_baseline",
"return": {
"type": "int32_t",
@@ -3092,7 +3096,7 @@
}
],
"annotation": {},
- "desc": " 检查当前字体是否与指定名称和大小相匹配。\n\n\n\n",
+ "desc": " 检查当前字体是否与指定名称和大小相匹配。\r\n\r\n\r\n",
"name": "font_match",
"return": {
"type": "int32_t",
@@ -3123,7 +3127,7 @@
}
],
"annotation": {},
- "desc": " 获取指定字符和大小的字模。\n\n\n\n",
+ "desc": " 获取指定字符和大小的字模。\r\n\r\n\r\n",
"name": "font_get_glyph",
"return": {
"type": "ret_t",
@@ -3141,7 +3145,7 @@
"annotation": {
"deconstructor": true
},
- "desc": " 销毁font对象。\n\n\n",
+ "desc": " 销毁font对象。\r\n\r\n",
"name": "font_destroy",
"return": {
"type": "ret_t",
@@ -3152,7 +3156,7 @@
"events": [],
"properties": [],
"header": "base/font.h",
- "desc": " 代表一种字体。\n\n\n",
+ "desc": " 代表一种字体。\r\n\r\n",
"name": "font_t",
"level": 1
},
@@ -3302,7 +3306,7 @@
"events": [],
"properties": [],
"header": "base/hscrollable.h",
- "desc": " 帮助实现控件左右滚动的效果。\n\n",
+ "desc": " 帮助实现控件左右滚动的效果。\r\n",
"name": "hscrollable_t",
"level": 1
},
@@ -3326,7 +3330,7 @@
"scriptable": "custom",
"static": true
},
- "desc": " 增加一个idle。\n\n\n",
+ "desc": " 增加一个idle。\r\n\r\n",
"name": "idle_add",
"return": {
"type": "uint32_t",
@@ -3349,7 +3353,7 @@
"annotation": {
"static": true
},
- "desc": " 用于非GUI线程增加一个idle,本函数向主循环的事件队列中发送一个增加idle的请求。\n\n\n",
+ "desc": " 用于非GUI线程增加一个idle,本函数向主循环的事件队列中发送一个增加idle的请求。\r\n\r\n",
"name": "idle_queue",
"return": {
"type": "ret_t",
@@ -3368,7 +3372,7 @@
"scriptable": true,
"static": true
},
- "desc": " 删除指定的idle。\n\n\n",
+ "desc": " 删除指定的idle。\r\n\r\n",
"name": "idle_remove",
"return": {
"type": "ret_t",
@@ -3380,7 +3384,7 @@
"annotation": {
"private": true
},
- "desc": " 查找指定ID的idle。\n\n\n",
+ "desc": " 查找指定ID的idle。\r\n\r\n",
"name": "idle_find",
"return": {
"type": "idle_info_t*",
@@ -3406,7 +3410,7 @@
}
],
"annotation": {},
- "desc": " 设置一个回调函数,在idle被销毁时调用(方便脚本语言去释放回调函数)。\n\n\n",
+ "desc": " 设置一个回调函数,在idle被销毁时调用(方便脚本语言去释放回调函数)。\r\n\r\n",
"name": "idle_set_on_destroy",
"return": {
"type": "ret_t",
@@ -3418,7 +3422,7 @@
"annotation": {
"private": true
},
- "desc": " 调用全部idle的函数。\n\n\n",
+ "desc": " 调用全部idle的函数。\r\n\r\n",
"name": "idle_dispatch",
"return": {
"type": "ret_t",
@@ -3430,7 +3434,7 @@
"annotation": {
"static": true
},
- "desc": " 返回idle的个数。\n\n\n",
+ "desc": " 返回idle的个数。\r\n\r\n",
"name": "idle_count",
"return": {
"type": "uint32_t",
@@ -3441,7 +3445,7 @@
"events": [],
"properties": [],
"header": "base/idle.h",
- "desc": "\n idle可以看作是duration为0的定时器。\n\n > idle可以用来实现一些异步处理。\n\n 示例:\n\n ```c\n static ret_t something_on_idle(const idle_info_t* info) {\n widget_t* widget = WIDGET(info->ctx);\n edit_t* edit = EDIT(widget);\n ...\n return RET_REMOVE;\n }\n\n ...\n\n idle_add(something_on_idle, edit);\n\n ```\n\n > 在非GUI线程请用idle\\_queue。\n\n\n",
+ "desc": "\r\n idle可以看作是duration为0的定时器。\r\n\r\n > idle可以用来实现一些异步处理。\r\n\r\n 示例:\r\n\r\n ```c\r\n static ret_t something_on_idle(const idle_info_t* info) {\r\n widget_t* widget = WIDGET(info->ctx);\r\n edit_t* edit = EDIT(widget);\r\n ...\r\n return RET_REMOVE;\r\n }\r\n\r\n ...\r\n\r\n idle_add(something_on_idle, edit);\r\n\r\n ```\r\n\r\n > 在非GUI线程请用idle\\_queue。\r\n\r\n",
"name": "idle_t",
"annotation": {
"scriptable": true,
@@ -3471,7 +3475,7 @@
}
],
"annotation": {},
- "desc": " 加载图片。\n\n\n",
+ "desc": " 加载图片。\r\n\r\n",
"name": "image_loader_load",
"return": {
"type": "ret_t",
@@ -3489,7 +3493,7 @@
"annotation": {
"static": true
},
- "desc": " 注册图片加载器。\n\n\n\n",
+ "desc": " 注册图片加载器。\r\n\r\n\r\n",
"name": "image_loader_register",
"return": {
"type": "ret_t",
@@ -3507,7 +3511,7 @@
"annotation": {
"static": true
},
- "desc": " 注销图片加载器。\n\n\n\n",
+ "desc": " 注销图片加载器。\r\n\r\n\r\n",
"name": "image_loader_unregister",
"return": {
"type": "ret_t",
@@ -3530,7 +3534,7 @@
"annotation": {
"static": true
},
- "desc": " 查找满足条件加载器并加载图片。\n\n\n\n",
+ "desc": " 查找满足条件加载器并加载图片。\r\n\r\n\r\n",
"name": "image_loader_load_image",
"return": {
"type": "ret_t",
@@ -3541,7 +3545,7 @@
"events": [],
"properties": [],
"header": "base/image_loader.h",
- "desc": " 图片加载接口。\n\n",
+ "desc": " 图片加载接口。\r\n",
"name": "image_loader_t",
"level": 1
},
@@ -3554,7 +3558,7 @@
"constructor": true,
"scriptable": true
},
- "desc": " 获取缺省的图片管理器。\n\n",
+ "desc": " 获取缺省的图片管理器。\r\n",
"name": "image_manager",
"alias": "image_manager_instance",
"return": {
@@ -3571,7 +3575,7 @@
}
],
"annotation": {},
- "desc": " 设置缺省的图片管理器。\n\n\n",
+ "desc": " 设置缺省的图片管理器。\r\n\r\n",
"name": "image_manager_set",
"return": {
"type": "ret_t",
@@ -3583,7 +3587,7 @@
"annotation": {
"constructor": true
},
- "desc": " 创建图片管理器。\n\n\n",
+ "desc": " 创建图片管理器。\r\n\r\n",
"name": "image_manager_create",
"return": {
"type": "image_manager_t*",
@@ -3601,7 +3605,7 @@
"annotation": {
"constructor": true
},
- "desc": " 初始化图片管理器。\n\n\n",
+ "desc": " 初始化图片管理器。\r\n\r\n",
"name": "image_manager_init",
"return": {
"type": "image_manager_t*",
@@ -3629,7 +3633,7 @@
"annotation": {
"scriptable": true
},
- "desc": " 获取指定的图片。\n 先从缓存查找,如果没找到,再加载并缓存。\n\n\n\n",
+ "desc": " 获取指定的图片。\r\n 先从缓存查找,如果没找到,再加载并缓存。\r\n\r\n\r\n",
"name": "image_manager_get_bitmap",
"return": {
"type": "ret_t",
@@ -3650,7 +3654,7 @@
}
],
"annotation": {},
- "desc": " 从图片管理器中卸载指定时间内没有使用的图片。\n\n\n",
+ "desc": " 从图片管理器中卸载指定时间内没有使用的图片。\r\n\r\n",
"name": "image_manager_unload_unused",
"return": {
"type": "ret_t",
@@ -3666,7 +3670,7 @@
}
],
"annotation": {},
- "desc": " 从图片管理器中卸载全部图片。\n\n\n\n",
+ "desc": " 从图片管理器中卸载全部图片。\r\n\r\n\r\n",
"name": "image_manager_unload_all",
"return": {
"type": "ret_t",
@@ -3687,7 +3691,7 @@
}
],
"annotation": {},
- "desc": " 从图片管理器中卸载指定的图片。\n\n\n",
+ "desc": " 从图片管理器中卸载指定的图片。\r\n\r\n",
"name": "image_manager_unload_bitmap",
"return": {
"type": "ret_t",
@@ -3708,7 +3712,7 @@
}
],
"annotation": {},
- "desc": " 更新缓存中图片的specific信息。\n\n\n",
+ "desc": " 更新缓存中图片的specific信息。\r\n\r\n",
"name": "image_manager_update_specific",
"return": {
"type": "ret_t",
@@ -3729,7 +3733,7 @@
}
],
"annotation": {},
- "desc": " 设置资源管理器对象。\n\n 之所以需要设置资源管理器对象,而不是使用缺省的资源管理器对象,是因为在designer中有两个图片管理器:\n\n * 一个用于designer本身加载图片。\n\n * 一个用于被设计的窗口加载图片。\n\n这两个图片管理器需要从不同的路径加载资源。\n\n\n\n",
+ "desc": " 设置资源管理器对象。\r\n\r\n 之所以需要设置资源管理器对象,而不是使用缺省的资源管理器对象,是因为在designer中有两个图片管理器:\r\n\r\n * 一个用于designer本身加载图片。\r\n\r\n * 一个用于被设计的窗口加载图片。\r\n\r\n这两个图片管理器需要从不同的路径加载资源。\r\n\r\n\r\n",
"name": "image_manager_set_assets_manager",
"return": {
"type": "ret_t",
@@ -3745,7 +3749,7 @@
}
],
"annotation": {},
- "desc": " 析构图片管理器。\n\n\n",
+ "desc": " 析构图片管理器。\r\n\r\n",
"name": "image_manager_deinit",
"return": {
"type": "ret_t",
@@ -3761,7 +3765,7 @@
}
],
"annotation": {},
- "desc": " 析构并释放图片管理器。\n\n\n",
+ "desc": " 析构并释放图片管理器。\r\n\r\n",
"name": "image_manager_destroy",
"return": {
"type": "ret_t",
@@ -3773,7 +3777,7 @@
"properties": [
{
"name": "images",
- "desc": " 缓存的图片。\n\n",
+ "desc": " 缓存的图片。\r\n",
"type": "darray_t",
"annotation": {
"private": true
@@ -3781,7 +3785,7 @@
},
{
"name": "assets_manager",
- "desc": " 资源管理器。\n\n",
+ "desc": " 资源管理器。\r\n",
"type": "assets_manager_t*",
"annotation": {
"private": true
@@ -3789,7 +3793,7 @@
}
],
"header": "base/image_manager.h",
- "desc": " 图片管理器。负责加载,解码和缓存图片。\n\n",
+ "desc": " 图片管理器。负责加载,解码和缓存图片。\r\n",
"name": "image_manager_t",
"annotation": {
"scriptable": true
@@ -3859,7 +3863,7 @@
"annotation": {
"constructor": true
},
- "desc": " 创建输入法引擎对象。\n\n\n",
+ "desc": " 创建输入法引擎对象。\r\n\r\n",
"name": "input_engine_create",
"return": {
"type": "input_engine_t*",
@@ -3877,7 +3881,7 @@
"annotation": {
"deconstructor": true
},
- "desc": " 销毁输入法引擎对象。\n\n\n",
+ "desc": " 销毁输入法引擎对象。\r\n\r\n",
"name": "input_engine_destroy",
"return": {
"type": "ret_t",
@@ -3893,7 +3897,7 @@
}
],
"annotation": {},
- "desc": " 清除所有输入的按键组合和候选字。\n\n\n",
+ "desc": " 清除所有输入的按键组合和候选字。\r\n\r\n",
"name": "input_engine_reset_input",
"return": {
"type": "ret_t",
@@ -3914,7 +3918,7 @@
}
],
"annotation": {},
- "desc": " 输入新的按键,并更新候选字。\n\n\n",
+ "desc": " 输入新的按键,并更新候选字。\r\n\r\n",
"name": "input_engine_input",
"return": {
"type": "ret_t",
@@ -3926,7 +3930,7 @@
"properties": [
{
"name": "keys",
- "desc": " 当前的按键组合。\n\n",
+ "desc": " 当前的按键组合。\r\n",
"type": "str_t",
"annotation": {
"private": true
@@ -3934,7 +3938,7 @@
},
{
"name": "candidates",
- "desc": " 当前按键组合对应的候选字列表。\n\n",
+ "desc": " 当前按键组合对应的候选字列表。\r\n",
"type": "char*",
"annotation": {
"private": true
@@ -3942,7 +3946,7 @@
},
{
"name": "candidates_nr",
- "desc": " 当前按键组合对应的候选字/词个数。\n\n",
+ "desc": " 当前按键组合对应的候选字/词个数。\r\n",
"type": "uint32_t",
"annotation": {
"private": true
@@ -3950,52 +3954,52 @@
}
],
"header": "base/input_engine.h",
- "desc": " 输入法引擎接口。\n\n 常见的实现方式有以下几种:\n\n * 空实现。用于不需要输入法的嵌入式平台。\n\n * 拼音输入法实现。用于需要输入法的嵌入式平台。\n\n ```graphviz\n [default_style]\n\n input_engine_pinyin_t -> input_engine_t[arrowhead=empty style=dashed]\n input_engine_null_t -> input_engine_t[arrowhead=empty style=dashed]\n\n ```\n\n",
+ "desc": " 输入法引擎接口。\r\n\r\n 常见的实现方式有以下几种:\r\n\r\n * 空实现。用于不需要输入法的嵌入式平台。\r\n\r\n * 拼音输入法实现。用于需要输入法的嵌入式平台。\r\n\r\n ```graphviz\r\n [default_style]\r\n\r\n input_engine_pinyin_t -> input_engine_t[arrowhead=empty style=dashed]\r\n input_engine_null_t -> input_engine_t[arrowhead=empty style=dashed]\r\n\r\n ```\r\n",
"name": "input_engine_t",
"level": 1
},
{
"type": "enum",
- "desc": " 输入类型常量定义。\n\n",
+ "desc": " 输入类型常量定义。\r\n",
"consts": [
{
- "desc": " 文本。\n\n",
+ "desc": " 文本。\r\n",
"name": "INPUT_TEXT"
},
{
- "desc": " 整数。\n\n",
+ "desc": " 整数。\r\n",
"name": "INPUT_INT"
},
{
- "desc": " 非负整数。\n\n",
+ "desc": " 非负整数。\r\n",
"name": "INPUT_UINT"
},
{
- "desc": " 16进制整数。\n\n",
+ "desc": " 16进制整数。\r\n",
"name": "INPUT_HEX"
},
{
- "desc": " 浮点数。\n\n",
+ "desc": " 浮点数。\r\n",
"name": "INPUT_FLOAT"
},
{
- "desc": " 非负浮点数。\n\n",
+ "desc": " 非负浮点数。\r\n",
"name": "INPUT_UFLOAT"
},
{
- "desc": " 邮件地址。\n\n",
+ "desc": " 邮件地址。\r\n",
"name": "INPUT_EMAIL"
},
{
- "desc": " 密码。\n\n",
+ "desc": " 密码。\r\n",
"name": "INPUT_PASSWORD"
},
{
- "desc": " 电话号码。\n\n",
+ "desc": " 电话号码。\r\n",
"name": "INPUT_PHONE"
},
{
- "desc": " 使用自定义的软键盘(如计算器等应用不希望弹出系统软键盘)。\n\n",
+ "desc": " 使用自定义的软键盘(如计算器等应用不希望弹出系统软键盘)。\r\n",
"name": "INPUT_CUSTOM"
}
],
@@ -4024,7 +4028,7 @@
}
],
"annotation": {},
- "desc": " 分发一个事件。\n\n\n",
+ "desc": " 分发一个事件。\r\n\r\n",
"name": "input_method_dispatch",
"return": {
"type": "ret_t",
@@ -4045,7 +4049,7 @@
}
],
"annotation": {},
- "desc": " 分发一个事件当前焦点控件。\n\n\n",
+ "desc": " 分发一个事件当前焦点控件。\r\n\r\n",
"name": "input_method_dispatch_to_widget",
"return": {
"type": "ret_t",
@@ -4076,7 +4080,7 @@
}
],
"annotation": {},
- "desc": " 注册指定事件的处理函数。\n\n\n",
+ "desc": " 注册指定事件的处理函数。\r\n\r\n",
"name": "input_method_on",
"return": {
"type": "uint32_t",
@@ -4097,7 +4101,7 @@
}
],
"annotation": {},
- "desc": " 注销指定事件的处理函数。\n\n\n",
+ "desc": " 注销指定事件的处理函数。\r\n\r\n",
"name": "input_method_off",
"return": {
"type": "ret_t",
@@ -4118,7 +4122,7 @@
}
],
"annotation": {},
- "desc": " 打开或关闭输入法。\n\n\n",
+ "desc": " 打开或关闭输入法。\r\n\r\n",
"name": "input_method_request",
"return": {
"type": "ret_t",
@@ -4144,7 +4148,7 @@
}
],
"annotation": {},
- "desc": " 设置软键盘上的action按钮的信息。\n\n\n",
+ "desc": " 设置软键盘上的action按钮的信息。\r\n\r\n",
"name": "input_method_update_action_button_info",
"return": {
"type": "ret_t",
@@ -4160,7 +4164,7 @@
}
],
"annotation": {},
- "desc": " 软键盘上的action按钮被点击时,调用本函数分发EVT_IM_ACTION事件。\n\n\n",
+ "desc": " 软键盘上的action按钮被点击时,调用本函数分发EVT_IM_ACTION事件。\r\n\r\n",
"name": "input_method_dispatch_action",
"return": {
"type": "ret_t",
@@ -4183,7 +4187,7 @@
"annotation": {
"scriptable": true
},
- "desc": " 提交输入文本。\n\n\n",
+ "desc": " 提交输入文本。\r\n\r\n",
"name": "input_method_commit_text",
"return": {
"type": "ret_t",
@@ -4209,7 +4213,7 @@
}
],
"annotation": {},
- "desc": " 提交输入文本。\n\n\n",
+ "desc": " 提交输入文本。\r\n\r\n",
"name": "input_method_commit_text_ex",
"return": {
"type": "ret_t",
@@ -4232,7 +4236,7 @@
"annotation": {
"scriptable": true
},
- "desc": " 提交按键。\n\n\n",
+ "desc": " 提交按键。\r\n\r\n",
"name": "input_method_dispatch_key",
"return": {
"type": "ret_t",
@@ -4258,7 +4262,7 @@
}
],
"annotation": {},
- "desc": " 请求显示候选字。\n\n\n",
+ "desc": " 请求显示候选字。\r\n\r\n",
"name": "input_method_dispatch_candidates",
"return": {
"type": "ret_t",
@@ -4268,7 +4272,7 @@
{
"params": [],
"annotation": {},
- "desc": " 创建输入法对象。在具体实现中实现。\n\n\n",
+ "desc": " 创建输入法对象。在具体实现中实现。\r\n\r\n",
"name": "input_method_create",
"return": {
"type": "input_method_t*",
@@ -4284,7 +4288,7 @@
}
],
"annotation": {},
- "desc": " 销毁输入法对象。在具体实现中实现。\n\n\n",
+ "desc": " 销毁输入法对象。在具体实现中实现。\r\n\r\n",
"name": "input_method_destroy",
"return": {
"type": "ret_t",
@@ -4297,7 +4301,7 @@
"constructor": true,
"scriptable": true
},
- "desc": " 获取全局输入法对象。\n\n\n",
+ "desc": " 获取全局输入法对象。\r\n\r\n",
"name": "input_method",
"alias": "input_method_instance",
"return": {
@@ -4314,7 +4318,7 @@
}
],
"annotation": {},
- "desc": " 设置全局输入法对象。\n\n\n",
+ "desc": " 设置全局输入法对象。\r\n\r\n",
"name": "input_method_set",
"return": {
"type": "ret_t",
@@ -4326,7 +4330,7 @@
"properties": [
{
"name": "widget",
- "desc": " 当前的焦点控件。\n\n",
+ "desc": " 当前的焦点控件。\r\n",
"type": "widget_t*",
"annotation": {
"private": true
@@ -4334,7 +4338,7 @@
},
{
"name": "keyboard",
- "desc": " 当前的软件键盘。\n\n",
+ "desc": " 当前的软件键盘。\r\n",
"type": "widget_t*",
"annotation": {
"private": true
@@ -4342,7 +4346,7 @@
},
{
"name": "win",
- "desc": " 当前的窗口。\n\n",
+ "desc": " 当前的窗口。\r\n",
"type": "widget_t*",
"annotation": {
"private": true
@@ -4350,7 +4354,15 @@
},
{
"name": "win_delta_y",
- "desc": " 由于软键盘的弹出,可能会将窗口向上推移,win_delta_y为推移的距离。\n\n",
+ "desc": " 由于软键盘的弹出,可能会将窗口向上推移,win_delta_y为推移的距离。\r\n",
+ "type": "int32_t",
+ "annotation": {
+ "private": true
+ }
+ },
+ {
+ "name": "win_old_y",
+ "desc": " 窗口原来的位置。\r\n",
"type": "int32_t",
"annotation": {
"private": true
@@ -4358,7 +4370,7 @@
},
{
"name": "action_button_enable",
- "desc": " 软键盘的上的action按钮是否可用。\n\n",
+ "desc": " 软键盘的上的action按钮是否可用。\r\n",
"type": "bool_t",
"annotation": {
"readable": true
@@ -4366,7 +4378,7 @@
},
{
"name": "action_button_enable",
- "desc": " 软键盘的上的action按钮文本。\n\n",
+ "desc": " 软键盘的上的action按钮文本。\r\n",
"type": "bool_t",
"annotation": {
"readable": true
@@ -4374,7 +4386,7 @@
},
{
"name": "emitter",
- "desc": " emitter。用于实现dispatch/on/off等功能。\n\n",
+ "desc": " emitter。用于实现dispatch/on/off等功能。\r\n",
"type": "emitter_t",
"annotation": {
"private": true
@@ -4382,7 +4394,7 @@
},
{
"name": "input_type",
- "desc": " 当前输入的类型。\n\n",
+ "desc": " 当前输入的类型。\r\n",
"type": "input_type_t",
"annotation": {
"readable": true
@@ -4390,7 +4402,7 @@
}
],
"header": "base/input_method.h",
- "desc": " 输入法接口。\n\n 常见的实现方式有以下几种:\n\n * 空实现。用于不需要输入法的嵌入式平台。\n\n * 缺省实现。用于需要输入法的嵌入式平台。\n\n * 基于SDL实现的平台原生输入法。用于桌面系统和手机系统。\n\n ```graphviz\n [default_style]\n\n input_method_default_t -> input_method_t [arrowhead=empty style=dashed]\n input_method_sdl_t -> input_method_t [arrowhead=empty style=dashed]\n input_method_null_t -> input_method_t [arrowhead=empty style=dashed]\n\n ```\n\n > 输入类型请参考:[input\\_type](input_type_t.md)\n\n\n",
+ "desc": " 输入法接口。\r\n\r\n 常见的实现方式有以下几种:\r\n\r\n * 空实现。用于不需要输入法的嵌入式平台。\r\n\r\n * 缺省实现。用于需要输入法的嵌入式平台。\r\n\r\n * 基于SDL实现的平台原生输入法。用于桌面系统和手机系统。\r\n\r\n ```graphviz\r\n [default_style]\r\n\r\n input_method_default_t -> input_method_t [arrowhead=empty style=dashed]\r\n input_method_sdl_t -> input_method_t [arrowhead=empty style=dashed]\r\n input_method_null_t -> input_method_t [arrowhead=empty style=dashed]\r\n\r\n ```\r\n\r\n > 输入类型请参考:[input\\_type](input_type_t.md)\r\n\r\n",
"name": "input_method_t",
"annotation": {
"scriptable": true
@@ -4399,522 +4411,522 @@
},
{
"type": "enum",
- "desc": " key code。\n\n",
+ "desc": " key code。\r\n",
"consts": [
{
- "desc": " TK_KEY_RETURN\n\n",
+ "desc": " TK_KEY_RETURN\r\n",
"name": "TK_KEY_RETURN"
},
{
- "desc": " TK_KEY_ESCAPE\n\n",
+ "desc": " TK_KEY_ESCAPE\r\n",
"name": "TK_KEY_ESCAPE"
},
{
- "desc": " TK_KEY_BACKSPACE\n\n",
+ "desc": " TK_KEY_BACKSPACE\r\n",
"name": "TK_KEY_BACKSPACE"
},
{
- "desc": " TK_KEY_TAB\n\n",
+ "desc": " TK_KEY_TAB\r\n",
"name": "TK_KEY_TAB"
},
{
- "desc": " TK_KEY_SPACE\n\n",
+ "desc": " TK_KEY_SPACE\r\n",
"name": "TK_KEY_SPACE"
},
{
- "desc": " TK_KEY_EXCLAIM\n\n",
+ "desc": " TK_KEY_EXCLAIM\r\n",
"name": "TK_KEY_EXCLAIM"
},
{
- "desc": " TK_KEY_QUOTEDBL\n\n",
+ "desc": " TK_KEY_QUOTEDBL\r\n",
"name": "TK_KEY_QUOTEDBL"
},
{
- "desc": " TK_KEY_HASH\n\n",
+ "desc": " TK_KEY_HASH\r\n",
"name": "TK_KEY_HASH"
},
{
- "desc": " TK_KEY_PERCENT\n\n",
+ "desc": " TK_KEY_PERCENT\r\n",
"name": "TK_KEY_PERCENT"
},
{
- "desc": " TK_KEY_DOLLAR\n\n",
+ "desc": " TK_KEY_DOLLAR\r\n",
"name": "TK_KEY_DOLLAR"
},
{
- "desc": " TK_KEY_AMPERSAND\n\n",
+ "desc": " TK_KEY_AMPERSAND\r\n",
"name": "TK_KEY_AMPERSAND"
},
{
- "desc": " TK_KEY_QUOTE\n\n",
+ "desc": " TK_KEY_QUOTE\r\n",
"name": "TK_KEY_QUOTE"
},
{
- "desc": " TK_KEY_LEFTPAREN\n\n",
+ "desc": " TK_KEY_LEFTPAREN\r\n",
"name": "TK_KEY_LEFTPAREN"
},
{
- "desc": " TK_KEY_RIGHTPAREN\n\n",
+ "desc": " TK_KEY_RIGHTPAREN\r\n",
"name": "TK_KEY_RIGHTPAREN"
},
{
- "desc": " TK_KEY_ASTERISK\n\n",
+ "desc": " TK_KEY_ASTERISK\r\n",
"name": "TK_KEY_ASTERISK"
},
{
- "desc": " TK_KEY_PLUS\n\n",
+ "desc": " TK_KEY_PLUS\r\n",
"name": "TK_KEY_PLUS"
},
{
- "desc": " TK_KEY_COMMA\n\n",
+ "desc": " TK_KEY_COMMA\r\n",
"name": "TK_KEY_COMMA"
},
{
- "desc": " TK_KEY_MINUS\n\n",
+ "desc": " TK_KEY_MINUS\r\n",
"name": "TK_KEY_MINUS"
},
{
- "desc": " TK_KEY_PERIOD\n\n",
+ "desc": " TK_KEY_PERIOD\r\n",
"name": "TK_KEY_PERIOD"
},
{
- "desc": " TK_KEY_SLASH\n\n",
+ "desc": " TK_KEY_SLASH\r\n",
"name": "TK_KEY_SLASH"
},
{
- "desc": " TK_KEY_0\n\n",
+ "desc": " TK_KEY_0\r\n",
"name": "TK_KEY_0"
},
{
- "desc": " TK_KEY_1\n\n",
+ "desc": " TK_KEY_1\r\n",
"name": "TK_KEY_1"
},
{
- "desc": " TK_KEY_2\n\n",
+ "desc": " TK_KEY_2\r\n",
"name": "TK_KEY_2"
},
{
- "desc": " TK_KEY_3\n\n",
+ "desc": " TK_KEY_3\r\n",
"name": "TK_KEY_3"
},
{
- "desc": " TK_KEY_4\n\n",
+ "desc": " TK_KEY_4\r\n",
"name": "TK_KEY_4"
},
{
- "desc": " TK_KEY_5\n\n",
+ "desc": " TK_KEY_5\r\n",
"name": "TK_KEY_5"
},
{
- "desc": " TK_KEY_6\n\n",
+ "desc": " TK_KEY_6\r\n",
"name": "TK_KEY_6"
},
{
- "desc": " TK_KEY_7\n\n",
+ "desc": " TK_KEY_7\r\n",
"name": "TK_KEY_7"
},
{
- "desc": " TK_KEY_8\n\n",
+ "desc": " TK_KEY_8\r\n",
"name": "TK_KEY_8"
},
{
- "desc": " TK_KEY_9\n\n",
+ "desc": " TK_KEY_9\r\n",
"name": "TK_KEY_9"
},
{
- "desc": " TK_KEY_COLON\n\n",
+ "desc": " TK_KEY_COLON\r\n",
"name": "TK_KEY_COLON"
},
{
- "desc": " TK_KEY_SEMICOLON\n\n",
+ "desc": " TK_KEY_SEMICOLON\r\n",
"name": "TK_KEY_SEMICOLON"
},
{
- "desc": " TK_KEY_LESS\n\n",
+ "desc": " TK_KEY_LESS\r\n",
"name": "TK_KEY_LESS"
},
{
- "desc": " TK_KEY_EQUAL\n\n",
+ "desc": " TK_KEY_EQUAL\r\n",
"name": "TK_KEY_EQUAL"
},
{
- "desc": " TK_KEY_GREATER\n\n",
+ "desc": " TK_KEY_GREATER\r\n",
"name": "TK_KEY_GREATER"
},
{
- "desc": " TK_KEY_QUESTION\n\n",
+ "desc": " TK_KEY_QUESTION\r\n",
"name": "TK_KEY_QUESTION"
},
{
- "desc": " TK_KEY_AT\n\n",
+ "desc": " TK_KEY_AT\r\n",
"name": "TK_KEY_AT"
},
{
- "desc": " TK_KEY_LEFTBRACKET\n\n",
+ "desc": " TK_KEY_LEFTBRACKET\r\n",
"name": "TK_KEY_LEFTBRACKET"
},
{
- "desc": " TK_KEY_BACKSLASH\n\n",
+ "desc": " TK_KEY_BACKSLASH\r\n",
"name": "TK_KEY_BACKSLASH"
},
{
- "desc": " TK_KEY_RIGHTBRACKET\n\n",
+ "desc": " TK_KEY_RIGHTBRACKET\r\n",
"name": "TK_KEY_RIGHTBRACKET"
},
{
- "desc": " TK_KEY_CARET\n\n",
+ "desc": " TK_KEY_CARET\r\n",
"name": "TK_KEY_CARET"
},
{
- "desc": " TK_KEY_UNDERSCORE\n\n",
+ "desc": " TK_KEY_UNDERSCORE\r\n",
"name": "TK_KEY_UNDERSCORE"
},
{
- "desc": " TK_KEY_BACKQUOTE\n\n",
+ "desc": " TK_KEY_BACKQUOTE\r\n",
"name": "TK_KEY_BACKQUOTE"
},
{
- "desc": " TK_KEY_a\n\n",
+ "desc": " TK_KEY_a\r\n",
"name": "TK_KEY_a"
},
{
- "desc": " TK_KEY_b\n\n",
+ "desc": " TK_KEY_b\r\n",
"name": "TK_KEY_b"
},
{
- "desc": " TK_KEY_c\n\n",
+ "desc": " TK_KEY_c\r\n",
"name": "TK_KEY_c"
},
{
- "desc": " TK_KEY_d\n\n",
+ "desc": " TK_KEY_d\r\n",
"name": "TK_KEY_d"
},
{
- "desc": " TK_KEY_e\n\n",
+ "desc": " TK_KEY_e\r\n",
"name": "TK_KEY_e"
},
{
- "desc": " TK_KEY_f\n\n",
+ "desc": " TK_KEY_f\r\n",
"name": "TK_KEY_f"
},
{
- "desc": " TK_KEY_g\n\n",
+ "desc": " TK_KEY_g\r\n",
"name": "TK_KEY_g"
},
{
- "desc": " TK_KEY_h\n\n",
+ "desc": " TK_KEY_h\r\n",
"name": "TK_KEY_h"
},
{
- "desc": " TK_KEY_i\n\n",
+ "desc": " TK_KEY_i\r\n",
"name": "TK_KEY_i"
},
{
- "desc": " TK_KEY_j\n\n",
+ "desc": " TK_KEY_j\r\n",
"name": "TK_KEY_j"
},
{
- "desc": " TK_KEY_k\n\n",
+ "desc": " TK_KEY_k\r\n",
"name": "TK_KEY_k"
},
{
- "desc": " TK_KEY_l\n\n",
+ "desc": " TK_KEY_l\r\n",
"name": "TK_KEY_l"
},
{
- "desc": " TK_KEY_m\n\n",
+ "desc": " TK_KEY_m\r\n",
"name": "TK_KEY_m"
},
{
- "desc": " TK_KEY_n\n\n",
+ "desc": " TK_KEY_n\r\n",
"name": "TK_KEY_n"
},
{
- "desc": " TK_KEY_o\n\n",
+ "desc": " TK_KEY_o\r\n",
"name": "TK_KEY_o"
},
{
- "desc": " TK_KEY_p\n\n",
+ "desc": " TK_KEY_p\r\n",
"name": "TK_KEY_p"
},
{
- "desc": " TK_KEY_q\n\n",
+ "desc": " TK_KEY_q\r\n",
"name": "TK_KEY_q"
},
{
- "desc": " TK_KEY_r\n\n",
+ "desc": " TK_KEY_r\r\n",
"name": "TK_KEY_r"
},
{
- "desc": " TK_KEY_s\n\n",
+ "desc": " TK_KEY_s\r\n",
"name": "TK_KEY_s"
},
{
- "desc": " TK_KEY_t\n\n",
+ "desc": " TK_KEY_t\r\n",
"name": "TK_KEY_t"
},
{
- "desc": " TK_KEY_u\n\n",
+ "desc": " TK_KEY_u\r\n",
"name": "TK_KEY_u"
},
{
- "desc": " TK_KEY_v\n\n",
+ "desc": " TK_KEY_v\r\n",
"name": "TK_KEY_v"
},
{
- "desc": " TK_KEY_w\n\n",
+ "desc": " TK_KEY_w\r\n",
"name": "TK_KEY_w"
},
{
- "desc": " TK_KEY_x\n\n",
+ "desc": " TK_KEY_x\r\n",
"name": "TK_KEY_x"
},
{
- "desc": " TK_KEY_y\n\n",
+ "desc": " TK_KEY_y\r\n",
"name": "TK_KEY_y"
},
{
- "desc": " TK_KEY_z\n\n",
+ "desc": " TK_KEY_z\r\n",
"name": "TK_KEY_z"
},
{
- "desc": " TK_KEY_A\n\n",
+ "desc": " TK_KEY_A\r\n",
"name": "TK_KEY_A"
},
{
- "desc": " TK_KEY_B\n\n",
+ "desc": " TK_KEY_B\r\n",
"name": "TK_KEY_B"
},
{
- "desc": " TK_KEY_C\n\n",
+ "desc": " TK_KEY_C\r\n",
"name": "TK_KEY_C"
},
{
- "desc": " TK_KEY_D\n\n",
+ "desc": " TK_KEY_D\r\n",
"name": "TK_KEY_D"
},
{
- "desc": " TK_KEY_E\n\n",
+ "desc": " TK_KEY_E\r\n",
"name": "TK_KEY_E"
},
{
- "desc": " TK_KEY_F\n\n",
+ "desc": " TK_KEY_F\r\n",
"name": "TK_KEY_F"
},
{
- "desc": " TK_KEY_G\n\n",
+ "desc": " TK_KEY_G\r\n",
"name": "TK_KEY_G"
},
{
- "desc": " TK_KEY_H\n\n",
+ "desc": " TK_KEY_H\r\n",
"name": "TK_KEY_H"
},
{
- "desc": " TK_KEY_I\n\n",
+ "desc": " TK_KEY_I\r\n",
"name": "TK_KEY_I"
},
{
- "desc": " TK_KEY_J\n\n",
+ "desc": " TK_KEY_J\r\n",
"name": "TK_KEY_J"
},
{
- "desc": " TK_KEY_K\n\n",
+ "desc": " TK_KEY_K\r\n",
"name": "TK_KEY_K"
},
{
- "desc": " TK_KEY_L\n\n",
+ "desc": " TK_KEY_L\r\n",
"name": "TK_KEY_L"
},
{
- "desc": " TK_KEY_M\n\n",
+ "desc": " TK_KEY_M\r\n",
"name": "TK_KEY_M"
},
{
- "desc": " TK_KEY_N\n\n",
+ "desc": " TK_KEY_N\r\n",
"name": "TK_KEY_N"
},
{
- "desc": " TK_KEY_O\n\n",
+ "desc": " TK_KEY_O\r\n",
"name": "TK_KEY_O"
},
{
- "desc": " TK_KEY_P\n\n",
+ "desc": " TK_KEY_P\r\n",
"name": "TK_KEY_P"
},
{
- "desc": " TK_KEY_Q\n\n",
+ "desc": " TK_KEY_Q\r\n",
"name": "TK_KEY_Q"
},
{
- "desc": " TK_KEY_R\n\n",
+ "desc": " TK_KEY_R\r\n",
"name": "TK_KEY_R"
},
{
- "desc": " TK_KEY_S\n\n",
+ "desc": " TK_KEY_S\r\n",
"name": "TK_KEY_S"
},
{
- "desc": " TK_KEY_T\n\n",
+ "desc": " TK_KEY_T\r\n",
"name": "TK_KEY_T"
},
{
- "desc": " TK_KEY_U\n\n",
+ "desc": " TK_KEY_U\r\n",
"name": "TK_KEY_U"
},
{
- "desc": " TK_KEY_V\n\n",
+ "desc": " TK_KEY_V\r\n",
"name": "TK_KEY_V"
},
{
- "desc": " TK_KEY_W\n\n",
+ "desc": " TK_KEY_W\r\n",
"name": "TK_KEY_W"
},
{
- "desc": " TK_KEY_X\n\n",
+ "desc": " TK_KEY_X\r\n",
"name": "TK_KEY_X"
},
{
- "desc": " TK_KEY_Y\n\n",
+ "desc": " TK_KEY_Y\r\n",
"name": "TK_KEY_Y"
},
{
- "desc": " TK_KEY_Z\n\n",
+ "desc": " TK_KEY_Z\r\n",
"name": "TK_KEY_Z"
},
{
- "desc": " TK_KEY_DOT\n\n",
+ "desc": " TK_KEY_DOT\r\n",
"name": "TK_KEY_DOT"
},
{
- "desc": " TK_KEY_DELETE\n\n",
+ "desc": " TK_KEY_DELETE\r\n",
"name": "TK_KEY_DELETE"
},
{
- "desc": " TK_KEY_LEFTBRACE\n\n",
+ "desc": " TK_KEY_LEFTBRACE\r\n",
"name": "TK_KEY_LEFTBRACE"
},
{
- "desc": " TK_KEY_RIGHTBRACE\n\n",
+ "desc": " TK_KEY_RIGHTBRACE\r\n",
"name": "TK_KEY_RIGHTBRACE"
},
{
- "desc": " TK_KEY_LSHIFT\n\n",
+ "desc": " TK_KEY_LSHIFT\r\n",
"name": "TK_KEY_LSHIFT"
},
{
- "desc": " TK_KEY_RSHIFT\n\n",
+ "desc": " TK_KEY_RSHIFT\r\n",
"name": "TK_KEY_RSHIFT"
},
{
- "desc": " TK_KEY_LCTRL\n\n",
+ "desc": " TK_KEY_LCTRL\r\n",
"name": "TK_KEY_LCTRL"
},
{
- "desc": " TK_KEY_RCTRL\n\n",
+ "desc": " TK_KEY_RCTRL\r\n",
"name": "TK_KEY_RCTRL"
},
{
- "desc": " TK_KEY_LALT\n\n",
+ "desc": " TK_KEY_LALT\r\n",
"name": "TK_KEY_LALT"
},
{
- "desc": " TK_KEY_RALT\n\n",
+ "desc": " TK_KEY_RALT\r\n",
"name": "TK_KEY_RALT"
},
{
- "desc": " TK_KEY_CAPSLOCK\n\n",
+ "desc": " TK_KEY_CAPSLOCK\r\n",
"name": "TK_KEY_CAPSLOCK"
},
{
- "desc": " TK_KEY_HOME\n\n",
+ "desc": " TK_KEY_HOME\r\n",
"name": "TK_KEY_HOME"
},
{
- "desc": " TK_KEY_END\n\n",
+ "desc": " TK_KEY_END\r\n",
"name": "TK_KEY_END"
},
{
- "desc": " TK_KEY_INSERT\n\n",
+ "desc": " TK_KEY_INSERT\r\n",
"name": "TK_KEY_INSERT"
},
{
- "desc": " TK_KEY_UP\n\n",
+ "desc": " TK_KEY_UP\r\n",
"name": "TK_KEY_UP"
},
{
- "desc": " TK_KEY_DOWN\n\n",
+ "desc": " TK_KEY_DOWN\r\n",
"name": "TK_KEY_DOWN"
},
{
- "desc": " TK_KEY_LEFT\n\n",
+ "desc": " TK_KEY_LEFT\r\n",
"name": "TK_KEY_LEFT"
},
{
- "desc": " TK_KEY_RIGHT\n\n",
+ "desc": " TK_KEY_RIGHT\r\n",
"name": "TK_KEY_RIGHT"
},
{
- "desc": " TK_KEY_PAGEUP\n\n",
+ "desc": " TK_KEY_PAGEUP\r\n",
"name": "TK_KEY_PAGEUP"
},
{
- "desc": " TK_KEY_PAGEDOWN\n\n",
+ "desc": " TK_KEY_PAGEDOWN\r\n",
"name": "TK_KEY_PAGEDOWN"
},
{
- "desc": " TK_KEY_F1\n\n",
+ "desc": " TK_KEY_F1\r\n",
"name": "TK_KEY_F1"
},
{
- "desc": " TK_KEY_F2\n\n",
+ "desc": " TK_KEY_F2\r\n",
"name": "TK_KEY_F2"
},
{
- "desc": " TK_KEY_F3\n\n",
+ "desc": " TK_KEY_F3\r\n",
"name": "TK_KEY_F3"
},
{
- "desc": " TK_KEY_F4\n\n",
+ "desc": " TK_KEY_F4\r\n",
"name": "TK_KEY_F4"
},
{
- "desc": " TK_KEY_F5\n\n",
+ "desc": " TK_KEY_F5\r\n",
"name": "TK_KEY_F5"
},
{
- "desc": " TK_KEY_F6\n\n",
+ "desc": " TK_KEY_F6\r\n",
"name": "TK_KEY_F6"
},
{
- "desc": " TK_KEY_F7\n\n",
+ "desc": " TK_KEY_F7\r\n",
"name": "TK_KEY_F7"
},
{
- "desc": " TK_KEY_F8\n\n",
+ "desc": " TK_KEY_F8\r\n",
"name": "TK_KEY_F8"
},
{
- "desc": " TK_KEY_F9\n\n",
+ "desc": " TK_KEY_F9\r\n",
"name": "TK_KEY_F9"
},
{
- "desc": " TK_KEY_F10\n\n",
+ "desc": " TK_KEY_F10\r\n",
"name": "TK_KEY_F10"
},
{
- "desc": " TK_KEY_F11\n\n",
+ "desc": " TK_KEY_F11\r\n",
"name": "TK_KEY_F11"
},
{
- "desc": " TK_KEY_F12\n\n",
+ "desc": " TK_KEY_F12\r\n",
"name": "TK_KEY_F12"
},
{
- "desc": " TK_KEY_MENU\n\n",
+ "desc": " TK_KEY_MENU\r\n",
"name": "TK_KEY_MENU"
},
{
- "desc": " TK_KEY_COMMAND\n\n",
+ "desc": " TK_KEY_COMMAND\r\n",
"name": "TK_KEY_COMMAND"
}
],
@@ -5836,7 +5848,7 @@
"constructor": true,
"scriptable": true
},
- "desc": " 获取缺省locale_info。\n\n\n",
+ "desc": " 获取缺省locale_info。\r\n\r\n",
"name": "locale_info",
"alias": "locale_info_instance",
"return": {
@@ -5853,7 +5865,7 @@
}
],
"annotation": {},
- "desc": " 设置缺省locale_info。\n\n\n",
+ "desc": " 设置缺省locale_info。\r\n\r\n",
"name": "locale_info_set",
"return": {
"type": "ret_t",
@@ -5876,7 +5888,7 @@
"annotation": {
"constructor": true
},
- "desc": " 创建locale_info。\n\n\n",
+ "desc": " 创建locale_info。\r\n\r\n",
"name": "locale_info_create",
"return": {
"type": "locale_info_t*",
@@ -5899,7 +5911,7 @@
"annotation": {
"scriptable": true
},
- "desc": " 翻译字符串。\n\n\n",
+ "desc": " 翻译字符串。\r\n\r\n",
"name": "locale_info_tr",
"return": {
"type": "char*",
@@ -5927,7 +5939,7 @@
"annotation": {
"scriptable": true
},
- "desc": " 设置当前的国家和语言。\n\n\n",
+ "desc": " 设置当前的国家和语言。\r\n\r\n",
"name": "locale_info_change",
"return": {
"type": "ret_t",
@@ -5939,7 +5951,7 @@
{
"type": "locale_info_t*",
"name": "locale_info",
- "desc": "控件对象。"
+ "desc": "locale_info对象。"
},
{
"type": "event_type_t",
@@ -5960,7 +5972,7 @@
"annotation": {
"scriptable": "custom"
},
- "desc": " 注册指定事件的处理函数。\n\n\n",
+ "desc": " 注册指定事件的处理函数。\r\n\r\n",
"name": "locale_info_on",
"return": {
"type": "uint32_t",
@@ -5972,7 +5984,7 @@
{
"type": "locale_info_t*",
"name": "locale_info",
- "desc": "控件对象。"
+ "desc": "locale_info对象。"
},
{
"type": "uint32_t",
@@ -5983,7 +5995,7 @@
"annotation": {
"scriptable": true
},
- "desc": " 注销指定事件的处理函数。\n\n\n",
+ "desc": " 注销指定事件的处理函数。\r\n\r\n",
"name": "locale_info_off",
"return": {
"type": "ret_t",
@@ -5995,7 +6007,7 @@
{
"type": "locale_info_t*",
"name": "locale_info",
- "desc": "图片管理器对象。"
+ "desc": "locale_info对象。"
},
{
"type": "assets_manager_t*",
@@ -6004,7 +6016,7 @@
}
],
"annotation": {},
- "desc": " 设置资源管理器对象。\n\n\n\n",
+ "desc": " 设置资源管理器对象。\r\n\r\n\r\n",
"name": "locale_info_set_assets_manager",
"return": {
"type": "ret_t",
@@ -6020,7 +6032,23 @@
}
],
"annotation": {},
- "desc": " 释放全部资源并销毁locale_info对象。\n\n\n",
+ "desc": " 重新加载字符串资源。\r\n\r\n\r\n",
+ "name": "locale_info_reload",
+ "return": {
+ "type": "ret_t",
+ "desc": "返回RET_OK表示成功,否则表示失败。"
+ }
+ },
+ {
+ "params": [
+ {
+ "type": "locale_info_t*",
+ "name": "locale_info",
+ "desc": "locale_info对象。"
+ }
+ ],
+ "annotation": {},
+ "desc": " 释放全部资源并销毁locale_info对象。\r\n\r\n",
"name": "locale_info_destroy",
"return": {
"type": "ret_t",
@@ -6032,7 +6060,7 @@
"properties": [
{
"name": "country;",
- "desc": " 国家或地区。如:CN\n\n",
+ "desc": " 国家或地区。如:CN\r\n",
"type": "char*",
"annotation": {
"readable": true
@@ -6040,7 +6068,7 @@
},
{
"name": "language",
- "desc": " 语言。如:zh\n\n",
+ "desc": " 语言。如:zh\r\n",
"type": "char*",
"annotation": {
"readable": true
@@ -6048,7 +6076,7 @@
},
{
"name": "assets_manager",
- "desc": " 资源管理器。\n\n",
+ "desc": " 资源管理器。\r\n",
"type": "assets_manager_t*",
"annotation": {
"private": true
@@ -6056,7 +6084,7 @@
}
],
"header": "base/locale_info.h",
- "desc": " 本地化信息。提供字符串翻译数据管理,当前语言改变的事件通知等等。\n\n\n",
+ "desc": " 本地化信息。提供字符串翻译数据管理,当前语言改变的事件通知等等。\r\n\r\n",
"name": "locale_info_t",
"annotation": {
"scriptable": true
@@ -6071,7 +6099,7 @@
"annotation": {
"constructor": true
},
- "desc": " 获取缺省的控件自身布局算法工厂对象。\n\n",
+ "desc": " 获取缺省的控件自身布局算法工厂对象。\r\n",
"name": "self_layouter_factory",
"return": {
"type": "self_layouter_factory_t*",
@@ -6087,7 +6115,7 @@
}
],
"annotation": {},
- "desc": " 设置缺省的控件自身布局算法工厂对象。\n\n\n",
+ "desc": " 设置缺省的控件自身布局算法工厂对象。\r\n\r\n",
"name": "self_layouter_factory_set",
"return": {
"type": "ret_t",
@@ -6099,7 +6127,7 @@
"annotation": {
"constructor": true
},
- "desc": " 创建控件自身布局算法工厂对象。\n\n\n",
+ "desc": " 创建控件自身布局算法工厂对象。\r\n\r\n",
"name": "self_layouter_factory_create",
"return": {
"type": "self_layouter_factory_t*",
@@ -6125,7 +6153,7 @@
}
],
"annotation": {},
- "desc": " 注册控件自身布局算法创建函数。\n\n\n",
+ "desc": " 注册控件自身布局算法创建函数。\r\n\r\n",
"name": "self_layouter_factory_register",
"return": {
"type": "ret_t",
@@ -6148,7 +6176,7 @@
"annotation": {
"constructor": true
},
- "desc": " 创建指定类型的控件自身布局算法对象。\n\n\n",
+ "desc": " 创建指定类型的控件自身布局算法对象。\r\n\r\n",
"name": "self_layouter_factory_create_layouter",
"return": {
"type": "self_layouter_t*",
@@ -6164,7 +6192,7 @@
}
],
"annotation": {},
- "desc": " 析构并释放控件自身布局算法工厂对象。\n\n\n",
+ "desc": " 析构并释放控件自身布局算法工厂对象。\r\n\r\n",
"name": "self_layouter_factory_destroy",
"return": {
"type": "ret_t",
@@ -6175,7 +6203,7 @@
"events": [],
"properties": [],
"header": "base/self_layouter_factory.h",
- "desc": " 控件自身布局算法工厂。\n\n\n",
+ "desc": " 控件自身布局算法工厂。\r\n\r\n",
"name": "self_layouter_factory_t",
"level": 1
},
@@ -6191,7 +6219,7 @@
}
],
"annotation": {},
- "desc": " 获取全部参数。\n\n\n",
+ "desc": " 获取全部参数。\r\n\r\n",
"name": "self_layouter_to_string",
"return": {
"type": "ret_t",
@@ -6217,7 +6245,7 @@
}
],
"annotation": {},
- "desc": " 对控件自身进行布局。\n\n\n",
+ "desc": " 对控件自身进行布局。\r\n\r\n",
"name": "self_layouter_layout",
"return": {
"type": "ret_t",
@@ -6243,7 +6271,7 @@
}
],
"annotation": {},
- "desc": " 获取指定的参数。\n\n\n",
+ "desc": " 获取指定的参数。\r\n\r\n",
"name": "self_layouter_get_param",
"return": {
"type": "ret_t",
@@ -6269,7 +6297,7 @@
}
],
"annotation": {},
- "desc": " 获取指定的参数。\n\n\n",
+ "desc": " 获取指定的参数。\r\n\r\n",
"name": "self_layouter_set_param",
"return": {
"type": "ret_t",
@@ -6295,7 +6323,7 @@
}
],
"annotation": {},
- "desc": " 设置字符串格式的参数。\n\n\n",
+ "desc": " 设置字符串格式的参数。\r\n\r\n",
"name": "self_layouter_set_param_str",
"return": {
"type": "ret_t",
@@ -6321,7 +6349,7 @@
}
],
"annotation": {},
- "desc": " 获取指定的浮点格式的参数。\n\n\n",
+ "desc": " 获取指定的浮点格式的参数。\r\n\r\n",
"name": "self_layouter_get_param_float",
"return": {
"type": "ret_t",
@@ -6347,7 +6375,7 @@
}
],
"annotation": {},
- "desc": " 获取指定的整数格式的参数。\n\n\n",
+ "desc": " 获取指定的整数格式的参数。\r\n\r\n",
"name": "self_layouter_get_param_int",
"return": {
"type": "ret_t",
@@ -6363,7 +6391,7 @@
}
],
"annotation": {},
- "desc": " 销毁layouter对象。\n\n\n",
+ "desc": " 销毁layouter对象。\r\n\r\n",
"name": "self_layouter_destroy",
"return": {
"type": "ret_t",
@@ -6379,7 +6407,7 @@
}
],
"annotation": {},
- "desc": " 创建layouter对象。\n\n\n",
+ "desc": " 创建layouter对象。\r\n\r\n",
"name": "self_layouter_create",
"return": {
"type": "self_layouter_t*",
@@ -6390,7 +6418,7 @@
"events": [],
"properties": [],
"header": "base/self_layouter.h",
- "desc": " 控件自身排版布局器的接口。\n\n 按特定算法对控件进行排版布局,子类需要实现vtable中的函数。\n\n",
+ "desc": " 控件自身排版布局器的接口。\r\n\r\n 按特定算法对控件进行排版布局,子类需要实现vtable中的函数。\r\n",
"name": "self_layouter_t",
"level": 1
},
@@ -6402,7 +6430,7 @@
"annotation": {
"constructor": true
},
- "desc": " 初始化快捷键对象。\n\n\n",
+ "desc": " 初始化快捷键对象。\r\n\r\n",
"name": "shortcut_init",
"return": {
"type": "shortcut_t*",
@@ -6420,7 +6448,7 @@
"annotation": {
"constructor": true
},
- "desc": " 初始化快捷键对象。\n\n\n",
+ "desc": " 初始化快捷键对象。\r\n\r\n",
"name": "shortcut_init_with_str",
"return": {
"type": "shortcut_t*",
@@ -6441,7 +6469,7 @@
}
],
"annotation": {},
- "desc": " 比较两个快捷键对象。\n\n\n",
+ "desc": " 比较两个快捷键对象。\r\n\r\n",
"name": "shortcut_equal",
"return": {
"type": "bool_t",
@@ -6462,7 +6490,7 @@
}
],
"annotation": {},
- "desc": " 检查事件与快捷键是否匹配。\n\n\n",
+ "desc": " 检查事件与快捷键是否匹配。\r\n\r\n",
"name": "shortcut_match",
"return": {
"type": "bool_t",
@@ -6474,7 +6502,7 @@
"properties": [
{
"name": "is_valid",
- "desc": " 是否有效。\n\n",
+ "desc": " 是否有效。\r\n",
"type": "bool_t",
"annotation": {
"readable": true
@@ -6482,7 +6510,7 @@
},
{
"name": "key",
- "desc": " 键值。\n\n",
+ "desc": " 键值。\r\n",
"type": "uint32_t",
"annotation": {
"readable": true
@@ -6490,7 +6518,7 @@
},
{
"name": "alt",
- "desc": " alt键是否按下。\n\n",
+ "desc": " alt键是否按下。\r\n",
"type": "bool_t",
"annotation": {
"readable": true
@@ -6498,7 +6526,7 @@
},
{
"name": "lalt",
- "desc": " left alt键是否按下。\n\n",
+ "desc": " left alt键是否按下。\r\n",
"type": "bool_t",
"annotation": {
"readable": true
@@ -6506,7 +6534,7 @@
},
{
"name": "ralt",
- "desc": " right alt键是否按下。\n\n",
+ "desc": " right alt键是否按下。\r\n",
"type": "bool_t",
"annotation": {
"readable": true
@@ -6514,7 +6542,7 @@
},
{
"name": "ctrl",
- "desc": " ctrl键是否按下。\n\n",
+ "desc": " ctrl键是否按下。\r\n",
"type": "bool_t",
"annotation": {
"readable": true
@@ -6522,7 +6550,7 @@
},
{
"name": "lctrl",
- "desc": " left ctrl键是否按下。\n\n",
+ "desc": " left ctrl键是否按下。\r\n",
"type": "bool_t",
"annotation": {
"readable": true
@@ -6530,7 +6558,7 @@
},
{
"name": "rctrl",
- "desc": " right ctrl键是否按下。\n\n",
+ "desc": " right ctrl键是否按下。\r\n",
"type": "bool_t",
"annotation": {
"readable": true
@@ -6538,7 +6566,7 @@
},
{
"name": "shift",
- "desc": " shift键是否按下。\n\n",
+ "desc": " shift键是否按下。\r\n",
"type": "bool_t",
"annotation": {
"readable": true
@@ -6546,7 +6574,7 @@
},
{
"name": "lshift",
- "desc": " left shift键是否按下。\n\n",
+ "desc": " left shift键是否按下。\r\n",
"type": "bool_t",
"annotation": {
"readable": true
@@ -6554,7 +6582,7 @@
},
{
"name": "rshift",
- "desc": " right shift键是否按下。\n\n",
+ "desc": " right shift键是否按下。\r\n",
"type": "bool_t",
"annotation": {
"readable": true
@@ -6562,7 +6590,7 @@
},
{
"name": "cmd",
- "desc": " cmd/win键是否按下。\n\n",
+ "desc": " cmd/win键是否按下。\r\n",
"type": "bool_t",
"annotation": {
"readable": true
@@ -6570,7 +6598,7 @@
},
{
"name": "menu",
- "desc": " menu键是否按下。\n\n",
+ "desc": " menu键是否按下。\r\n",
"type": "bool_t",
"annotation": {
"readable": true
@@ -6578,7 +6606,7 @@
}
],
"header": "base/shortcut.h",
- "desc": " 快捷键。\n\n",
+ "desc": " 快捷键。\r\n",
"name": "shortcut_t",
"level": 1
},
@@ -6599,7 +6627,7 @@
}
],
"annotation": {},
- "desc": " 创建style。\n\n\n",
+ "desc": " 创建style。\r\n\r\n",
"name": "style_factory_create_style",
"return": {
"type": "style_t*",
@@ -6611,7 +6639,7 @@
"annotation": {
"constructor": true
},
- "desc": " 获取缺省的style factory。\n\n",
+ "desc": " 获取缺省的style factory。\r\n",
"name": "style_factory",
"alias": "style_factory_instance",
"return": {
@@ -6628,7 +6656,7 @@
}
],
"annotation": {},
- "desc": " 设置缺省的style factory(需要自定义的style factory才设置)。\n\n\n",
+ "desc": " 设置缺省的style factory(需要自定义的style factory才设置)。\r\n\r\n",
"name": "style_factory_set",
"return": {
"type": "ret_t",
@@ -6639,140 +6667,140 @@
"events": [],
"properties": [],
"header": "base/style_factory.h",
- "desc": " style工厂接口,主要用于创建style。\n\n> 在特殊情况下,可以实现自己的style工厂,比如支持CSS和可实时修改的style。\n\n\n",
+ "desc": " style工厂接口,主要用于创建style。\r\n\r\n> 在特殊情况下,可以实现自己的style工厂,比如支持CSS和可实时修改的style。\r\n\r\n",
"name": "style_factory_t",
"level": 1
},
{
"type": "enum",
- "desc": " style常量定义。\n\n",
+ "desc": " style常量定义。\r\n",
"consts": [
{
- "desc": " 背景颜色。\n\n",
+ "desc": " 背景颜色。\r\n",
"name": "STYLE_ID_BG_COLOR"
},
{
- "desc": " 前景颜色。\n\n",
+ "desc": " 前景颜色。\r\n",
"name": "STYLE_ID_FG_COLOR"
},
{
- "desc": " 蒙版颜色。\n\n",
+ "desc": " 蒙版颜色。\r\n",
"name": "STYLE_ID_MASK_COLOR"
},
{
- "desc": " 字体名称。\n\n",
+ "desc": " 字体名称。\r\n",
"name": "STYLE_ID_FONT_NAME"
},
{
- "desc": " 字体大小。\n\n",
+ "desc": " 字体大小。\r\n",
"name": "STYLE_ID_FONT_SIZE"
},
{
- "desc": " 字体风格(粗体、斜体等)。\n\n",
+ "desc": " 字体风格(粗体、斜体等)。\r\n",
"name": "STYLE_ID_FONT_STYLE"
},
{
- "desc": " 文本颜色。\n\n",
+ "desc": " 文本颜色。\r\n",
"name": "STYLE_ID_TEXT_COLOR"
},
{
- "desc": " 提示文本颜色。\n\n",
+ "desc": " 提示文本颜色。\r\n",
"name": "STYLE_ID_TIPS_TEXT_COLOR"
},
{
- "desc": " 文本水平对齐的方式。\n\n",
+ "desc": " 文本水平对齐的方式。\r\n",
"name": "STYLE_ID_TEXT_ALIGN_H"
},
{
- "desc": " 文本垂直对齐的方式。\n\n",
+ "desc": " 文本垂直对齐的方式。\r\n",
"name": "STYLE_ID_TEXT_ALIGN_V"
},
{
- "desc": " 边框颜色。\n\n",
+ "desc": " 边框颜色。\r\n",
"name": "STYLE_ID_BORDER_COLOR"
},
{
- "desc": " 边框线宽。\n\n",
+ "desc": " 边框线宽。\r\n",
"name": "STYLE_ID_BORDER_WIDTH"
},
{
- "desc": " 边框类型。\n\n",
+ "desc": " 边框类型。\r\n",
"name": "STYLE_ID_BORDER"
},
{
- "desc": " 图片的名称。\n\n",
+ "desc": " 图片的名称。\r\n",
"name": "STYLE_ID_BG_IMAGE"
},
{
- "desc": " 图片的显示方式。\n\n",
+ "desc": " 图片的显示方式。\r\n",
"name": "STYLE_ID_BG_IMAGE_DRAW_TYPE"
},
{
- "desc": " 图标的名称。\n\n",
+ "desc": " 图标的名称。\r\n",
"name": "STYLE_ID_ICON"
},
{
- "desc": " 图片的名称。\n\n",
+ "desc": " 图片的名称。\r\n",
"name": "STYLE_ID_FG_IMAGE"
},
{
- "desc": " 图片的显示方式。\n\n",
+ "desc": " 图片的显示方式。\r\n",
"name": "STYLE_ID_FG_IMAGE_DRAW_TYPE"
},
{
- "desc": " 间距。\n\n",
+ "desc": " 间距。\r\n",
"name": "STYLE_ID_SPACER"
},
{
- "desc": " 边距。\n\n",
+ "desc": " 边距。\r\n",
"name": "STYLE_ID_MARGIN"
},
{
- "desc": " 左边距。\n\n",
+ "desc": " 左边距。\r\n",
"name": "STYLE_ID_MARGIN_LEFT"
},
{
- "desc": " 右边距。\n\n",
+ "desc": " 右边距。\r\n",
"name": "STYLE_ID_MARGIN_RIGHT"
},
{
- "desc": " 顶边距。\n\n",
+ "desc": " 顶边距。\r\n",
"name": "STYLE_ID_MARGIN_TOP"
},
{
- "desc": " 底边距。\n\n",
+ "desc": " 底边距。\r\n",
"name": "STYLE_ID_MARGIN_BOTTOM"
},
{
- "desc": " 图标的位置。\n\n",
+ "desc": " 图标的位置。\r\n",
"name": "STYLE_ID_ICON_AT"
},
{
- "desc": " Active图标的名称。\n\n",
+ "desc": " Active图标的名称。\r\n",
"name": "STYLE_ID_ACTIVE_ICON"
},
{
- "desc": " X方向的偏移,方便实现按下的效果。\n\n",
+ "desc": " X方向的偏移,方便实现按下的效果。\r\n",
"name": "STYLE_ID_X_OFFSET"
},
{
- "desc": " Y方向的偏移,方便实现按下的效果。\n\n",
+ "desc": " Y方向的偏移,方便实现按下的效果。\r\n",
"name": "STYLE_ID_Y_OFFSET"
},
{
- "desc": " 编辑器中选中区域的背景颜色。\n\n",
+ "desc": " 编辑器中选中区域的背景颜色。\r\n",
"name": "STYLE_ID_SELECTED_BG_COLOR"
},
{
- "desc": " 编辑器中选中区域的前景颜色。\n\n",
+ "desc": " 编辑器中选中区域的前景颜色。\r\n",
"name": "STYLE_ID_SELECTED_FG_COLOR"
},
{
- "desc": " 编辑器中选中区域的文本颜色。\n\n",
+ "desc": " 编辑器中选中区域的文本颜色。\r\n",
"name": "STYLE_ID_SELECTED_TEXT_COLOR"
},
{
- "desc": " 圆角半径(仅在WITH_VGCANVAS定义时生效)。\n\n",
+ "desc": " 圆角半径(仅在WITH_VGCANVAS定义时生效)。\r\n",
"name": "STYLE_ID_ROUND_RADIUS"
}
],
@@ -6804,7 +6832,7 @@
"annotation": {
"scriptable": true
},
- "desc": " widget状态改变时,通知style更新数据。\n\n\n",
+ "desc": " widget状态改变时,通知style更新数据。\r\n\r\n",
"name": "style_notify_widget_state_changed",
"return": {
"type": "ret_t",
@@ -6822,7 +6850,7 @@
"annotation": {
"scriptable": true
},
- "desc": " 检查style对象是否有效\n\n\n",
+ "desc": " 检查style对象是否有效\r\n\r\n",
"name": "style_is_valid",
"return": {
"type": "bool_t",
@@ -6850,7 +6878,7 @@
"annotation": {
"scriptable": true
},
- "desc": " 获取指定name的整数格式的值。\n\n\n",
+ "desc": " 获取指定name的整数格式的值。\r\n\r\n",
"name": "style_get_int",
"return": {
"type": "int32_t",
@@ -6876,7 +6904,7 @@
}
],
"annotation": {},
- "desc": " 获取指定name的颜色值。\n\n\n",
+ "desc": " 获取指定name的颜色值。\r\n\r\n",
"name": "style_get_color",
"return": {
"type": "color_t",
@@ -6904,7 +6932,7 @@
"annotation": {
"scriptable": true
},
- "desc": " 获取指定name的字符串格式的值。\n\n\n",
+ "desc": " 获取指定name的字符串格式的值。\r\n\r\n",
"name": "style_get_str",
"return": {
"type": "const char*",
@@ -6937,7 +6965,7 @@
"annotation": {
"scriptable": true
},
- "desc": " 设置指定状态的指定属性的值(仅仅对mutable的style有效)。\n\n\n",
+ "desc": " 设置指定状态的指定属性的值(仅仅对mutable的style有效)。\r\n\r\n",
"name": "style_set",
"return": {
"type": "ret_t",
@@ -6955,7 +6983,7 @@
"annotation": {
"scriptable": true
},
- "desc": " 检查style是否是mutable的。\n\n\n",
+ "desc": " 检查style是否是mutable的。\r\n\r\n",
"name": "style_is_mutable",
"return": {
"type": "bool_t",
@@ -6971,7 +6999,7 @@
}
],
"annotation": {},
- "desc": " 销毁style对象\n\n\n",
+ "desc": " 销毁style对象\r\n\r\n",
"name": "style_destroy",
"return": {
"type": "ret_t",
@@ -6982,7 +7010,7 @@
"events": [],
"properties": [],
"header": "base/style.h",
- "desc": " 控件风格。\n\n widget从style对象中,获取诸如字体、颜色和图片相关的参数,根据这些参数来绘制界面。\n\n ```c\n style_t* style = widget->astyle;\n int32_t margin = style_get_int(style, STYLE_ID_MARGIN, 2);\n int32_t icon_at = style_get_int(style, STYLE_ID_ICON_AT, ICON_AT_AUTO);\n uint16_t font_size = style_get_int(style, STYLE_ID_FONT_SIZE, TK_DEFAULT_FONT_SIZE);\n ```\n\n 属性名称的请参考[style\\_id](style_id_t.md)\n\n\n",
+ "desc": " 控件风格。\r\n\r\n widget从style对象中,获取诸如字体、颜色和图片相关的参数,根据这些参数来绘制界面。\r\n\r\n ```c\r\n style_t* style = widget->astyle;\r\n int32_t margin = style_get_int(style, STYLE_ID_MARGIN, 2);\r\n int32_t icon_at = style_get_int(style, STYLE_ID_ICON_AT, ICON_AT_AUTO);\r\n uint16_t font_size = style_get_int(style, STYLE_ID_FONT_SIZE, TK_DEFAULT_FONT_SIZE);\r\n ```\r\n\r\n 属性名称的请参考[style\\_id](style_id_t.md)\r\n\r\n",
"name": "style_t",
"annotation": {
"scriptable": true
@@ -7003,7 +7031,7 @@
"annotation": {
"constructor": true
},
- "desc": " 创建联想字对象。\n\n\n",
+ "desc": " 创建联想字对象。\r\n\r\n",
"name": "suggest_words_create",
"return": {
"type": "suggest_words_t*",
@@ -7024,7 +7052,7 @@
}
],
"annotation": {},
- "desc": " 查找prefix对应的联想字列表,成功后会更新words/words_nr。\n\n\n",
+ "desc": " 查找prefix对应的联想字列表,成功后会更新words/words_nr。\r\n\r\n",
"name": "suggest_words_find",
"return": {
"type": "ret_t",
@@ -7040,7 +7068,7 @@
}
],
"annotation": {},
- "desc": " @deconstructor\n 销毁联想字对象。\n\n\n",
+ "desc": " @deconstructor\r\n 销毁联想字对象。\r\n\r\n",
"name": "suggest_words_destroy",
"return": {
"type": "ret_t",
@@ -7052,7 +7080,7 @@
"properties": [
{
"name": "words",
- "desc": " 联想字列表。find函数执行成功后会更新。\n\n",
+ "desc": " 联想字列表。find函数执行成功后会更新。\r\n",
"type": "char*",
"annotation": {
"private": true
@@ -7060,7 +7088,7 @@
},
{
"name": "words_nr",
- "desc": " 联想字/词个数。find函数执行成功后会更新。\n\n",
+ "desc": " 联想字/词个数。find函数执行成功后会更新。\r\n",
"type": "uint32_t",
"annotation": {
"private": true
@@ -7068,7 +7096,7 @@
}
],
"header": "base/suggest_words.h",
- "desc": " 输入法联想字词。\n\n",
+ "desc": " 输入法联想字词。\r\n",
"name": "suggest_words_t",
"level": 1
},
@@ -7078,7 +7106,7 @@
"events": [],
"properties": [],
"header": "base/text_edit.h",
- "desc": "\n",
+ "desc": "",
"name": "text_edit_state_t",
"level": 1
},
@@ -7099,7 +7127,7 @@
}
],
"annotation": {},
- "desc": " 创建text_edit对象\n\n\n",
+ "desc": " 创建text_edit对象\r\n\r\n",
"name": "text_edit_create",
"return": {
"type": "widget_t*",
@@ -7120,7 +7148,7 @@
}
],
"annotation": {},
- "desc": " 设置canvas对象。\n\n\n",
+ "desc": " 设置canvas对象。\r\n\r\n",
"name": "text_edit_set_canvas",
"return": {
"type": "ret_t",
@@ -7146,7 +7174,7 @@
}
],
"annotation": {},
- "desc": " 处理点击事件。\n\n\n",
+ "desc": " 处理点击事件。\r\n\r\n",
"name": "text_edit_click",
"return": {
"type": "ret_t",
@@ -7172,7 +7200,7 @@
}
],
"annotation": {},
- "desc": " 处理拖动事件。\n\n\n",
+ "desc": " 处理拖动事件。\r\n\r\n",
"name": "text_edit_drag",
"return": {
"type": "ret_t",
@@ -7198,7 +7226,7 @@
}
],
"annotation": {},
- "desc": " 粘贴文本。\n\n\n",
+ "desc": " 粘贴文本。\r\n\r\n",
"name": "text_edit_paste",
"return": {
"type": "ret_t",
@@ -7214,7 +7242,7 @@
}
],
"annotation": {},
- "desc": " 剪切文本。\n\n\n",
+ "desc": " 剪切文本。\r\n\r\n",
"name": "text_edit_cut",
"return": {
"type": "ret_t",
@@ -7230,7 +7258,7 @@
}
],
"annotation": {},
- "desc": " 拷贝文本。\n\n\n",
+ "desc": " 拷贝文本。\r\n\r\n",
"name": "text_edit_copy",
"return": {
"type": "ret_t",
@@ -7251,7 +7279,7 @@
}
],
"annotation": {},
- "desc": " 处理按键事件。\n\n\n",
+ "desc": " 处理按键事件。\r\n\r\n",
"name": "text_edit_key_down",
"return": {
"type": "ret_t",
@@ -7277,7 +7305,7 @@
}
],
"annotation": {},
- "desc": " 选择指定范围的文本。\n\n\n",
+ "desc": " 选择指定范围的文本。\r\n\r\n",
"name": "text_edit_set_select",
"return": {
"type": "ret_t",
@@ -7293,7 +7321,7 @@
}
],
"annotation": {},
- "desc": " 全选。\n\n\n",
+ "desc": " 全选。\r\n\r\n",
"name": "text_edit_select_all",
"return": {
"type": "ret_t",
@@ -7309,7 +7337,7 @@
}
],
"annotation": {},
- "desc": " 取消选择。\n\n\n",
+ "desc": " 取消选择。\r\n\r\n",
"name": "text_edit_unselect",
"return": {
"type": "ret_t",
@@ -7330,7 +7358,7 @@
}
],
"annotation": {},
- "desc": " 设置光标位置。\n\n\n",
+ "desc": " 设置光标位置。\r\n\r\n",
"name": "text_edit_set_cursor",
"return": {
"type": "ret_t",
@@ -7346,7 +7374,7 @@
}
],
"annotation": {},
- "desc": " 获取光标位置。\n\n\n",
+ "desc": " 获取光标位置。\r\n\r\n",
"name": "text_edit_get_cursor",
"return": {
"type": "uin32_t",
@@ -7367,7 +7395,7 @@
}
],
"annotation": {},
- "desc": " 获取编辑器的状态。\n\n\n",
+ "desc": " 获取编辑器的状态。\r\n\r\n",
"name": "text_edit_get_state",
"return": {
"type": "ret_t",
@@ -7388,7 +7416,7 @@
}
],
"annotation": {},
- "desc": " 设置是否自动折行。\n\n\n",
+ "desc": " 设置是否自动折行。\r\n\r\n",
"name": "text_edit_set_wrap_word",
"return": {
"type": "ret_t",
@@ -7404,7 +7432,7 @@
}
],
"annotation": {},
- "desc": " 如果caret可见,将其设置为不可见。 如果caret不可见,将其设置为可见。\n\n\n",
+ "desc": " 如果caret可见,将其设置为不可见。 如果caret不可见,将其设置为可见。\r\n\r\n",
"name": "text_edit_invert_caret_visible",
"return": {
"type": "ret_t",
@@ -7425,7 +7453,7 @@
}
],
"annotation": {},
- "desc": " 设置光标的看见性。\n\n\n",
+ "desc": " 设置光标的看见性。\r\n\r\n",
"name": "text_edit_set_caret_visible",
"return": {
"type": "ret_t",
@@ -7446,7 +7474,7 @@
}
],
"annotation": {},
- "desc": " 设置最大行数。\n\n\n",
+ "desc": " 设置最大行数。\r\n\r\n",
"name": "text_edit_set_max_rows",
"return": {
"type": "ret_t",
@@ -7467,7 +7495,7 @@
}
],
"annotation": {},
- "desc": " 设置是否马赛克字符(用于密码)。\n\n\n",
+ "desc": " 设置是否马赛克字符(用于密码)。\r\n\r\n",
"name": "text_edit_set_mask",
"return": {
"type": "ret_t",
@@ -7488,7 +7516,7 @@
}
],
"annotation": {},
- "desc": " 设置提示信息。\n\n\n",
+ "desc": " 设置提示信息。\r\n\r\n",
"name": "text_edit_set_tips",
"return": {
"type": "ret_t",
@@ -7509,7 +7537,7 @@
}
],
"annotation": {},
- "desc": " 设置马赛克字符。\n\n\n",
+ "desc": " 设置马赛克字符。\r\n\r\n",
"name": "text_edit_set_mask_char",
"return": {
"type": "ret_t",
@@ -7530,7 +7558,7 @@
}
],
"annotation": {},
- "desc": " 绘制文本。\n\n\n",
+ "desc": " 绘制文本。\r\n\r\n",
"name": "text_edit_paint",
"return": {
"type": "ret_t",
@@ -7546,7 +7574,7 @@
}
],
"annotation": {},
- "desc": " 重新排版。\n\n\n",
+ "desc": " 重新排版。\r\n\r\n",
"name": "text_edit_layout",
"return": {
"type": "ret_t",
@@ -7572,7 +7600,7 @@
}
],
"annotation": {},
- "desc": " 设置滚动偏移。\n\n\n",
+ "desc": " 设置滚动偏移。\r\n\r\n",
"name": "text_edit_set_offset",
"return": {
"type": "ret_t",
@@ -7598,7 +7626,7 @@
}
],
"annotation": {},
- "desc": " 设置状态改变回调函数。\n\n\n",
+ "desc": " 设置状态改变回调函数。\r\n\r\n",
"name": "text_edit_set_on_state_changed",
"return": {
"type": "ret_t",
@@ -7614,7 +7642,7 @@
}
],
"annotation": {},
- "desc": " 销毁text_edit对象。\n\n\n",
+ "desc": " 销毁text_edit对象。\r\n\r\n",
"name": "text_edit_destroy",
"return": {
"type": "ret_t",
@@ -7625,7 +7653,7 @@
"events": [],
"properties": [],
"header": "base/text_edit.h",
- "desc": "\n",
+ "desc": "",
"name": "text_edit_t",
"level": 1
},
@@ -7638,7 +7666,7 @@
"constructor": true,
"scriptable": true
},
- "desc": " 获取缺省的主题对象。\n\n",
+ "desc": " 获取缺省的主题对象。\r\n",
"name": "theme",
"alias": "theme_instance",
"return": {
@@ -7655,7 +7683,7 @@
}
],
"annotation": {},
- "desc": " 设置缺省的主题对象。\n\n\n",
+ "desc": " 设置缺省的主题对象。\r\n\r\n",
"name": "theme_set",
"return": {
"type": "ret_t",
@@ -7673,7 +7701,7 @@
"annotation": {
"constructor": true
},
- "desc": " 创建主题对象。\n\n\n",
+ "desc": " 创建主题对象。\r\n\r\n",
"name": "theme_create",
"return": {
"type": "theme_t*",
@@ -7696,7 +7724,7 @@
"annotation": {
"constructor": true
},
- "desc": " 初始化主题对象。\n\n\n",
+ "desc": " 初始化主题对象。\r\n\r\n",
"name": "theme_init",
"return": {
"type": "theme_t*",
@@ -7727,7 +7755,7 @@
}
],
"annotation": {},
- "desc": " 查找满足条件的style。\n\n\n",
+ "desc": " 查找满足条件的style。\r\n\r\n",
"name": "theme_find_style",
"return": {
"type": "theme_t*",
@@ -7743,7 +7771,7 @@
}
],
"annotation": {},
- "desc": " 析构主题对象。\n\n\n",
+ "desc": " 析构主题对象。\r\n\r\n",
"name": "theme_deinit",
"return": {
"type": "ret_t",
@@ -7759,7 +7787,7 @@
}
],
"annotation": {},
- "desc": " 析构并释放主题对象。\n\n\n",
+ "desc": " 析构并释放主题对象。\r\n\r\n",
"name": "theme_destroy",
"return": {
"type": "ret_t",
@@ -7770,7 +7798,7 @@
"events": [],
"properties": [],
"header": "base/theme.h",
- "desc": " 主题。\n\n 负责管理缺省的主题数据,方便实现style\\_const。\n\n\n",
+ "desc": " 主题。\r\n\r\n 负责管理缺省的主题数据,方便实现style\\_const。\r\n\r\n",
"name": "theme_t",
"annotation": {
"scriptable": true
@@ -7792,8 +7820,8 @@
"private": true,
"static": true
},
- "desc": " 初始化定时器系统。\n\n\n",
- "name": "timer_init",
+ "desc": " 初始化定时器系统。\r\n\r\n",
+ "name": "timer_prepare",
"return": {
"type": "ret_t",
"desc": "返回RET_OK表示成功,否则表示失败。"
@@ -7821,7 +7849,7 @@
"scriptable": "custom",
"static": true
},
- "desc": " 增加一个timer。\n\n\n",
+ "desc": " 增加一个timer。\r\n\r\n",
"name": "timer_add",
"return": {
"type": "uint32_t",
@@ -7849,7 +7877,7 @@
"annotation": {
"static": true
},
- "desc": " 用于非GUI线程增加一个timer,本函数向主循环的事件队列中发送一个增加timer的请求。\n timer回调函数,回调函数返回RET_REPEAT,则下次继续执行,否则自动移出。\n\n\n",
+ "desc": " 用于非GUI线程增加一个timer,本函数向主循环的事件队列中发送一个增加timer的请求。\r\n timer回调函数,回调函数返回RET_REPEAT,则下次继续执行,否则自动移出。\r\n\r\n",
"name": "timer_queue",
"return": {
"type": "ret_t",
@@ -7868,7 +7896,7 @@
"scriptable": true,
"static": true
},
- "desc": " 删除指定的timer。\n\n\n",
+ "desc": " 删除指定的timer。\r\n\r\n",
"name": "timer_remove",
"return": {
"type": "ret_t",
@@ -7887,7 +7915,7 @@
"scriptable": true,
"static": true
},
- "desc": " 重置指定的timer,重置之后定时器重新开始计时。\n\n\n",
+ "desc": " 重置指定的timer,重置之后定时器重新开始计时。\r\n\r\n",
"name": "timer_reset",
"return": {
"type": "ret_t",
@@ -7911,7 +7939,7 @@
"scriptable": true,
"static": true
},
- "desc": " 修改指定的timer的duration,修改之后定时器重新开始计时。\n\n\n",
+ "desc": " 修改指定的timer的duration,修改之后定时器重新开始计时。\r\n\r\n",
"name": "timer_modify",
"return": {
"type": "ret_t",
@@ -7937,7 +7965,7 @@
}
],
"annotation": {},
- "desc": " 设置一个回调函数,在timer被销毁时调用(方便脚本语言去释放回调函数)。\n\n\n",
+ "desc": " 设置一个回调函数,在timer被销毁时调用(方便脚本语言去释放回调函数)。\r\n\r\n",
"name": "timer_set_on_destroy",
"return": {
"type": "ret_t",
@@ -7949,7 +7977,7 @@
"annotation": {
"private": true
},
- "desc": " 查找指定ID的timer。\n\n\n",
+ "desc": " 查找指定ID的timer。\r\n\r\n",
"name": "timer_find",
"return": {
"type": "timer_info_t*",
@@ -7961,7 +7989,7 @@
"annotation": {
"private": true
},
- "desc": " 检查全部timer的函数,如果时间到期,调用相应的timer函数。\n\n\n",
+ "desc": " 检查全部timer的函数,如果时间到期,调用相应的timer函数。\r\n\r\n",
"name": "timer_dispatch",
"return": {
"type": "ret_t",
@@ -7973,7 +8001,7 @@
"annotation": {
"static": true
},
- "desc": " 返回timer的个数。\n\n\n",
+ "desc": " 返回timer的个数。\r\n\r\n",
"name": "timer_count",
"return": {
"type": "uint32_t",
@@ -7985,7 +8013,7 @@
"annotation": {
"static": true
},
- "desc": " 返回最近的timer到期时间。\n\n\n",
+ "desc": " 返回最近的timer到期时间。\r\n\r\n",
"name": "timer_next_time",
"return": {
"type": "uint32_t",
@@ -7996,7 +8024,7 @@
"events": [],
"properties": [],
"header": "base/timer.h",
- "desc": " 定时器系统。\n\n > 本定时器精度较低,最高精度为1000/FPS,如果需要高精度的定时器,请用OS提供的定时器。\n\n 示例:\n\n ```c\n static ret_t my_on_timer(const timer_info_t* info) {\n widget_t* widget = WIDGET(info->ctx);\n ...\n return RET_REPEAT;\n }\n\n ...\n\n timer_add(my_on_timer, widget, 1000);\n ```\n > 在非GUI线程请用timer\\_queue。\n\n\n",
+ "desc": " 定时器系统。\r\n\r\n > 本定时器精度较低,最高精度为1000/FPS,如果需要高精度的定时器,请用OS提供的定时器。\r\n\r\n 示例:\r\n\r\n ```c\r\n static ret_t my_on_timer(const timer_info_t* info) {\r\n widget_t* widget = WIDGET(info->ctx);\r\n ...\r\n return RET_REPEAT;\r\n }\r\n\r\n ...\r\n\r\n timer_add(my_on_timer, widget, 1000);\r\n ```\r\n > 在非GUI线程请用timer\\_queue。\r\n\r\n",
"name": "timer_t",
"annotation": {
"scriptable": true,
@@ -8191,7 +8219,7 @@
}
],
"annotation": {},
- "desc": " ui\\_loader在解析到widget时,调用本函数进一步处理。\n\n\n\n\n",
+ "desc": " ui\\_loader在解析到widget时,调用本函数进一步处理。\r\n\r\n\r\n\r\n",
"name": "ui_builder_on_widget_start",
"return": {
"type": "ret_t",
@@ -8217,7 +8245,7 @@
}
],
"annotation": {},
- "desc": " ui\\_loader在解析到widget的属性时,调用本函数进一步处理。\n\n\n\n\n",
+ "desc": " ui\\_loader在解析到widget的属性时,调用本函数进一步处理。\r\n\r\n\r\n\r\n",
"name": "ui_builder_on_widget_prop",
"return": {
"type": "ret_t",
@@ -8233,7 +8261,7 @@
}
],
"annotation": {},
- "desc": " ui\\_loader在解析到widget全部属性结束时,调用本函数进一步处理。\n\n\n\n\n",
+ "desc": " ui\\_loader在解析到widget全部属性结束时,调用本函数进一步处理。\r\n\r\n\r\n\r\n",
"name": "ui_builder_on_widget_prop",
"return": {
"type": "ret_t",
@@ -8249,7 +8277,7 @@
}
],
"annotation": {},
- "desc": " ui\\_loader在解析到widget结束时,调用本函数进一步处理。\n\n\n\n\n",
+ "desc": " ui\\_loader在解析到widget结束时,调用本函数进一步处理。\r\n\r\n\r\n\r\n",
"name": "ui_builder_on_widget_end",
"return": {
"type": "ret_t",
@@ -8265,7 +8293,7 @@
}
],
"annotation": {},
- "desc": " ui\\_loader在解析开始时,调用本函数做些准备工作。\n\n\n\n\n",
+ "desc": " ui\\_loader在解析开始时,调用本函数做些准备工作。\r\n\r\n\r\n\r\n",
"name": "ui_builder_on_start",
"return": {
"type": "ret_t",
@@ -8281,7 +8309,7 @@
}
],
"annotation": {},
- "desc": " ui\\_loader在解析结束时,调用本函数做些收尾工作。\n\n\n\n\n",
+ "desc": " ui\\_loader在解析结束时,调用本函数做些收尾工作。\r\n\r\n\r\n\r\n",
"name": "ui_builder_on_end",
"return": {
"type": "ret_t",
@@ -8292,7 +8320,7 @@
"events": [],
"properties": [],
"header": "base/ui_builder.h",
- "desc": "\n 界面构造器接口。\n\n 负责把ui\\_loader解析的数据进一步处理,至于具体做什么,由具体实现决定。常见的实现有:\n\n * 构建widget对象树。\n\n * 生成二进制的UI描述数据。\n\n * 生成XML格式的UI描述数据。\n\n ```graphviz\n [default_style]\n\n ui_builder_defualt_t -> ui_builder_t[arrowhead = \"empty\"]\n ui_xml_writer_t -> ui_builder_t[arrowhead = \"empty\"]\n ui_binary_writer_t -> ui_builder_t[arrowhead = \"empty\"]\n ```\n\n",
+ "desc": "\r\n 界面构造器接口。\r\n\r\n 负责把ui\\_loader解析的数据进一步处理,至于具体做什么,由具体实现决定。常见的实现有:\r\n\r\n * 构建widget对象树。\r\n\r\n * 生成二进制的UI描述数据。\r\n\r\n * 生成XML格式的UI描述数据。\r\n\r\n ```graphviz\r\n [default_style]\r\n\r\n ui_builder_defualt_t -> ui_builder_t[arrowhead = \"empty\"]\r\n ui_xml_writer_t -> ui_builder_t[arrowhead = \"empty\"]\r\n ui_binary_writer_t -> ui_builder_t[arrowhead = \"empty\"]\r\n ```\r\n",
"name": "ui_builder_t",
"level": 1
},
@@ -8315,7 +8343,7 @@
"annotation": {
"static": true
},
- "desc": " 请求反馈。\n\n\n\n",
+ "desc": " 请求反馈。\r\n\r\n\r\n",
"name": "ui_feedback_request",
"return": {
"type": "ret_t",
@@ -8338,7 +8366,7 @@
"annotation": {
"static": true
},
- "desc": " 初始化。\n 设置实际的处理函数。\n\n\n\n",
+ "desc": " 初始化。\r\n 设置实际的处理函数。\r\n\r\n\r\n",
"name": "ui_feedback_init",
"return": {
"type": "ret_t",
@@ -8349,7 +8377,7 @@
"events": [],
"properties": [],
"header": "base/ui_feedback.h",
- "desc": "\n 提供按键音、触屏音和震动等反馈。\n\n",
+ "desc": "\r\n 提供按键音、触屏音和震动等反馈。\r\n",
"name": "ui_feedback_t",
"annotation": {
"fake": true
@@ -8383,7 +8411,7 @@
}
],
"annotation": {},
- "desc": " 加载界面描述数据,然后分发给ui\\_builder,由ui\\_builder进一步处理。\n\n\n\n\n",
+ "desc": " 加载界面描述数据,然后分发给ui\\_builder,由ui\\_builder进一步处理。\r\n\r\n\r\n\r\n",
"name": "ui_loader_load",
"return": {
"type": "ret_t",
@@ -8399,7 +8427,7 @@
}
],
"annotation": {},
- "desc": "\n 从指定的资源加载widget对象,通常用于加载非窗口的widget。\n\n>需要自己将widget加入窗口后,再调用widget\\_layout。\n\n\n\n\n",
+ "desc": "\r\n 从指定的资源加载widget对象,通常用于加载非窗口的widget。\r\n\r\n>需要自己将widget加入窗口后,再调用widget\\_layout。\r\n\r\n\r\n\r\n",
"name": "ui_loader_load_widget",
"return": {
"type": "widget_t*",
@@ -8410,7 +8438,7 @@
"events": [],
"properties": [],
"header": "base/ui_loader.h",
- "desc": "\n UI加载器。\n\n 负责从资源加载界面描述数据,然后分发给ui\\_builder,由ui\\_builder进一步处理。\n\n 常见的实现有两种:\n\n * XML格式的加载器。\n\n * 二进制格式的加载器。\n\n ```graphviz\n [default_style]\n\n ui_loader_defualt_t -> ui_loader_t[arrowhead = \"empty\"]\n ui_loader_xml_t -> ui_loader_t[arrowhead = \"empty\"]\n\n ```\n\n\n",
+ "desc": "\r\n UI加载器。\r\n\r\n 负责从资源加载界面描述数据,然后分发给ui\\_builder,由ui\\_builder进一步处理。\r\n\r\n 常见的实现有两种:\r\n\r\n * XML格式的加载器。\r\n\r\n * 二进制格式的加载器。\r\n\r\n ```graphviz\r\n [default_style]\r\n\r\n ui_loader_defualt_t -> ui_loader_t[arrowhead = \"empty\"]\r\n ui_loader_xml_t -> ui_loader_t[arrowhead = \"empty\"]\r\n\r\n ```\r\n\r\n",
"name": "ui_loader_t",
"level": 1
},
@@ -8458,7 +8486,7 @@
"annotation": {
"constructor": true
},
- "desc": " 创建vgcanvas。\n\n\n",
+ "desc": " 创建vgcanvas。\r\n\r\n",
"name": "vgcanvas_create",
"return": {
"type": "vgcanvas_t",
@@ -8477,7 +8505,7 @@
"cast": true,
"scriptable": true
},
- "desc": " 转换为vgcanvas对象(供脚本语言使用)。\n\n\n",
+ "desc": " 转换为vgcanvas对象(供脚本语言使用)。\r\n\r\n",
"name": "vgcanvas_cast",
"return": {
"type": "vgcanvas_t*",
@@ -8518,7 +8546,7 @@
}
],
"annotation": {},
- "desc": " 重新初始化,系统内部调用。\n\n\n\n",
+ "desc": " 重新初始化,系统内部调用。\r\n\r\n\r\n",
"name": "vgcanvas_reinit",
"return": {
"type": "ret_t",
@@ -8534,7 +8562,7 @@
}
],
"annotation": {},
- "desc": " 重置状态。\n\n\n\n",
+ "desc": " 重置状态。\r\n\r\n\r\n",
"name": "vgcanvas_reset",
"return": {
"type": "ret_t",
@@ -8552,7 +8580,7 @@
"annotation": {
"scriptable": true
},
- "desc": " flush\n\n\n\n",
+ "desc": " flush\r\n\r\n\r\n",
"name": "vgcanvas_flush",
"return": {
"type": "ret_t",
@@ -8573,7 +8601,7 @@
}
],
"annotation": {},
- "desc": " 开始绘制,系统内部调用。\n\n\n\n",
+ "desc": " 开始绘制,系统内部调用。\r\n\r\n\r\n",
"name": "vgcanvas_begin_frame",
"return": {
"type": "ret_t",
@@ -8614,7 +8642,7 @@
}
],
"annotation": {},
- "desc": " 用颜色清除指定矩形区域。\n\n\n\n",
+ "desc": " 用颜色清除指定矩形区域。\r\n\r\n\r\n",
"name": "vgcanvas_clear_rect",
"return": {
"type": "ret_t",
@@ -8632,7 +8660,7 @@
"annotation": {
"scriptable": true
},
- "desc": " 清除之前的路径,并重新开始一条路径。\n\n\n\n",
+ "desc": " 清除之前的路径,并重新开始一条路径。\r\n\r\n\r\n",
"name": "vgcanvas_begin_path",
"return": {
"type": "ret_t",
@@ -8660,7 +8688,7 @@
"annotation": {
"scriptable": true
},
- "desc": " 移动当前点到指定点。\n\n\n\n",
+ "desc": " 移动当前点到指定点。\r\n\r\n\r\n",
"name": "vgcanvas_move_to",
"return": {
"type": "ret_t",
@@ -8688,7 +8716,7 @@
"annotation": {
"scriptable": true
},
- "desc": " 生成一条线段(从当前点到目标点)。\n\n\n\n",
+ "desc": " 生成一条线段(从当前点到目标点)。\r\n\r\n\r\n",
"name": "vgcanvas_line_to",
"return": {
"type": "ret_t",
@@ -8726,7 +8754,7 @@
"annotation": {
"scriptable": true
},
- "desc": " 生成一条二次贝塞尔曲线。\n\n\n\n",
+ "desc": " 生成一条二次贝塞尔曲线。\r\n\r\n\r\n",
"name": "vgcanvas_quad_to",
"return": {
"type": "ret_t",
@@ -8774,7 +8802,7 @@
"annotation": {
"scriptable": true
},
- "desc": " 生成一条三次贝塞尔曲线。\n\n\n\n",
+ "desc": " 生成一条三次贝塞尔曲线。\r\n\r\n\r\n",
"name": "vgcanvas_bezier_to",
"return": {
"type": "ret_t",
@@ -8817,7 +8845,7 @@
"annotation": {
"scriptable": true
},
- "desc": " 生成一条圆弧路径到指定点。\n\n\n\n",
+ "desc": " 生成一条圆弧路径到指定点。\r\n\r\n\r\n",
"name": "vgcanvas_arc_to",
"return": {
"type": "ret_t",
@@ -8865,7 +8893,7 @@
"annotation": {
"scriptable": true
},
- "desc": " 生成一条圆弧。\n\n\n\n",
+ "desc": " 生成一条圆弧。\r\n\r\n\r\n",
"name": "vgcanvas_arc",
"return": {
"type": "ret_t",
@@ -8893,7 +8921,7 @@
"annotation": {
"scriptable": true
},
- "desc": " 检查点是否在当前路径中。\n\n\n\n",
+ "desc": " 检查点是否在当前路径中。\r\n\r\n\r\n",
"name": "vgcanvas_is_point_in_path",
"return": {
"type": "bool_t",
@@ -8931,7 +8959,7 @@
"annotation": {
"scriptable": true
},
- "desc": " 生成一个矩形路径。\n\n\n\n",
+ "desc": " 生成一个矩形路径。\r\n\r\n\r\n",
"name": "vgcanvas_rect",
"return": {
"type": "ret_t",
@@ -8974,7 +9002,7 @@
"annotation": {
"scriptable": true
},
- "desc": " 生成一个圆角矩形路径。\n\n\n\n",
+ "desc": " 生成一个圆角矩形路径。\r\n\r\n\r\n",
"name": "vgcanvas_rounded_rect",
"return": {
"type": "ret_t",
@@ -9012,7 +9040,7 @@
"annotation": {
"scriptable": true
},
- "desc": " 生成一个椭圆路径。\n\n\n\n",
+ "desc": " 生成一个椭圆路径。\r\n\r\n\r\n",
"name": "vgcanvas_ellipse",
"return": {
"type": "ret_t",
@@ -9030,7 +9058,7 @@
"annotation": {
"scriptable": true
},
- "desc": " 闭合路径。\n\n >闭合路径是指把起点和终点连接起来,形成一个封闭的多边形。\n\n\n\n",
+ "desc": " 闭合路径。\r\n\r\n >闭合路径是指把起点和终点连接起来,形成一个封闭的多边形。\r\n\r\n\r\n",
"name": "vgcanvas_close_path",
"return": {
"type": "ret_t",
@@ -9053,7 +9081,7 @@
"annotation": {
"scriptable": true
},
- "desc": " 旋转。\n\n\n\n",
+ "desc": " 旋转。\r\n\r\n\r\n",
"name": "vgcanvas_rotate",
"return": {
"type": "ret_t",
@@ -9081,7 +9109,7 @@
"annotation": {
"scriptable": true
},
- "desc": " 缩放。\n\n\n\n",
+ "desc": " 缩放。\r\n\r\n\r\n",
"name": "vgcanvas_scale",
"return": {
"type": "ret_t",
@@ -9109,7 +9137,7 @@
"annotation": {
"scriptable": true
},
- "desc": " 平移。\n\n\n\n",
+ "desc": " 平移。\r\n\r\n\r\n",
"name": "vgcanvas_translate",
"return": {
"type": "ret_t",
@@ -9157,7 +9185,7 @@
"annotation": {
"scriptable": true
},
- "desc": " 变换矩阵。\n\n\n\n",
+ "desc": " 变换矩阵。\r\n\r\n\r\n",
"name": "vgcanvas_transform",
"return": {
"type": "ret_t",
@@ -9205,7 +9233,7 @@
"annotation": {
"scriptable": true
},
- "desc": " 设置变换矩阵。\n\n\n\n",
+ "desc": " 设置变换矩阵。\r\n\r\n\r\n",
"name": "vgcanvas_set_transform",
"return": {
"type": "ret_t",
@@ -9243,7 +9271,7 @@
"annotation": {
"scriptable": true
},
- "desc": " 矩形裁剪。\n\n\n\n",
+ "desc": " 矩形裁剪。\r\n\r\n\r\n",
"name": "vgcanvas_clip_rect",
"return": {
"type": "ret_t",
@@ -9261,7 +9289,7 @@
"annotation": {
"scriptable": true
},
- "desc": " 填充多边形。\n\n\n\n",
+ "desc": " 填充多边形。\r\n\r\n\r\n",
"name": "vgcanvas_fill",
"return": {
"type": "ret_t",
@@ -9279,7 +9307,7 @@
"annotation": {
"scriptable": true
},
- "desc": " 画线。\n\n\n\n",
+ "desc": " 画线。\r\n\r\n\r\n",
"name": "vgcanvas_stroke",
"return": {
"type": "ret_t",
@@ -9307,7 +9335,7 @@
"annotation": {
"scriptable": true
},
- "desc": " 用图片填充/画多边形(可能存在可移植性问题,除非必要请勿使用)。\n 多边形的顶点必须在图片范围内,可以通过矩阵变化画到不同的位置。\n\n\n\n",
+ "desc": " 用图片填充/画多边形(可能存在可移植性问题,除非必要请勿使用)。\r\n 多边形的顶点必须在图片范围内,可以通过矩阵变化画到不同的位置。\r\n\r\n\r\n",
"name": "vgcanvas_paint",
"return": {
"type": "ret_t",
@@ -9330,7 +9358,7 @@
"annotation": {
"scriptable": true
},
- "desc": " 设置字体的名称。\n\n\n\n",
+ "desc": " 设置字体的名称。\r\n\r\n\r\n",
"name": "vgcanvas_set_font",
"return": {
"type": "ret_t",
@@ -9353,7 +9381,7 @@
"annotation": {
"scriptable": true
},
- "desc": " 设置字体的大小。\n\n\n\n",
+ "desc": " 设置字体的大小。\r\n\r\n\r\n",
"name": "vgcanvas_set_font_size",
"return": {
"type": "ret_t",
@@ -9376,7 +9404,7 @@
"annotation": {
"scriptable": true
},
- "desc": " 设置文本水平对齐的方式。\n\n\n\n",
+ "desc": " 设置文本水平对齐的方式。\r\n\r\n\r\n",
"name": "vgcanvas_set_text_align",
"return": {
"type": "ret_t",
@@ -9399,7 +9427,7 @@
"annotation": {
"scriptable": true
},
- "desc": " 设置文本垂直对齐的方式。\n\n\n\n",
+ "desc": " 设置文本垂直对齐的方式。\r\n\r\n\r\n",
"name": "vgcanvas_set_text_baseline",
"return": {
"type": "ret_t",
@@ -9437,7 +9465,7 @@
"annotation": {
"scriptable": true
},
- "desc": " 绘制文本。\n\n\n\n",
+ "desc": " 绘制文本。\r\n\r\n\r\n",
"name": "vgcanvas_fill_text",
"return": {
"type": "ret_t",
@@ -9460,7 +9488,7 @@
"annotation": {
"scriptable": true
},
- "desc": " 测量文本的宽度。\n\n\n\n",
+ "desc": " 测量文本的宽度。\r\n\r\n\r\n",
"name": "vgcanvas_measure_text",
"return": {
"type": "float_t",
@@ -9523,7 +9551,7 @@
"annotation": {
"scriptable": true
},
- "desc": " 绘制图片。\n\n\n\n",
+ "desc": " 绘制图片。\r\n\r\n\r\n",
"name": "vgcanvas_draw_image",
"return": {
"type": "ret_t",
@@ -9586,7 +9614,7 @@
"annotation": {
"scriptable": true
},
- "desc": " 绘制图标。\n\n 绘制图标时会根据屏幕密度进行自动缩放,而绘制普通图片时不会。\n\n\n\n",
+ "desc": " 绘制图标。\r\n\r\n 绘制图标时会根据屏幕密度进行自动缩放,而绘制普通图片时不会。\r\n\r\n\r\n",
"name": "vgcanvas_draw_icon",
"return": {
"type": "ret_t",
@@ -9609,7 +9637,7 @@
"annotation": {
"scriptable": true
},
- "desc": " 设置是否启用反走样。\n\n\n\n",
+ "desc": " 设置是否启用反走样。\r\n\r\n\r\n",
"name": "vgcanvas_set_antialias",
"return": {
"type": "ret_t",
@@ -9632,7 +9660,7 @@
"annotation": {
"scriptable": true
},
- "desc": " 设置全局透明度。\n\n\n\n",
+ "desc": " 设置全局透明度。\r\n\r\n\r\n",
"name": "vgcanvas_set_global_alpha",
"return": {
"type": "ret_t",
@@ -9655,7 +9683,7 @@
"annotation": {
"scriptable": true
},
- "desc": " 设置线条的宽度。\n\n\n\n",
+ "desc": " 设置线条的宽度。\r\n\r\n\r\n",
"name": "vgcanvas_set_line_width",
"return": {
"type": "ret_t",
@@ -9676,7 +9704,7 @@
}
],
"annotation": {},
- "desc": " 设置填充颜色。\n\n\n\n",
+ "desc": " 设置填充颜色。\r\n\r\n\r\n",
"name": "vgcanvas_set_fill_color",
"return": {
"type": "ret_t",
@@ -9699,7 +9727,7 @@
"annotation": {
"scriptable": true
},
- "desc": " 设置填充颜色。\n\n\n\n",
+ "desc": " 设置填充颜色。\r\n\r\n\r\n",
"name": "vgcanvas_set_fill_color_str",
"alias": "vgcanvas_set_fill_color",
"return": {
@@ -9746,7 +9774,7 @@
}
],
"annotation": {},
- "desc": " 设置填充颜色为线性渐变色。\n\n\n\n",
+ "desc": " 设置填充颜色为线性渐变色。\r\n\r\n\r\n",
"name": "vgcanvas_set_fill_linear_gradient",
"return": {
"type": "ret_t",
@@ -9792,7 +9820,7 @@
}
],
"annotation": {},
- "desc": " 设置填充颜色为径向渐变色。\n\n\n\n",
+ "desc": " 设置填充颜色为径向渐变色。\r\n\r\n\r\n",
"name": "vgcanvas_set_fill_radial_gradient",
"return": {
"type": "ret_t",
@@ -9813,7 +9841,7 @@
}
],
"annotation": {},
- "desc": " 设置线条颜色。\n\n\n\n",
+ "desc": " 设置线条颜色。\r\n\r\n\r\n",
"name": "vgcanvas_set_stroke_color",
"return": {
"type": "ret_t",
@@ -9836,7 +9864,7 @@
"annotation": {
"scriptable": true
},
- "desc": " 设置线条颜色。\n\n\n\n",
+ "desc": " 设置线条颜色。\r\n\r\n\r\n",
"name": "vgcanvas_set_stroke_color_str",
"alias": "vgcanvas_set_stroke_color",
"return": {
@@ -9883,7 +9911,7 @@
}
],
"annotation": {},
- "desc": " 设置线条颜色为线性渐变色。\n\n\n\n",
+ "desc": " 设置线条颜色为线性渐变色。\r\n\r\n\r\n",
"name": "vgcanvas_set_stroke_linear_gradient",
"return": {
"type": "ret_t",
@@ -9929,7 +9957,7 @@
}
],
"annotation": {},
- "desc": " 设置线条颜色为径向渐变色。\n\n\n\n",
+ "desc": " 设置线条颜色为径向渐变色。\r\n\r\n\r\n",
"name": "vgcanvas_set_stroke_radial_gradient",
"return": {
"type": "ret_t",
@@ -9952,7 +9980,7 @@
"annotation": {
"scriptable": true
},
- "desc": " 设置line cap。\n\n\n\n",
+ "desc": " 设置line cap。\r\n\r\n\r\n",
"name": "vgcanvas_set_line_cap",
"return": {
"type": "ret_t",
@@ -9975,7 +10003,7 @@
"annotation": {
"scriptable": true
},
- "desc": " 设置line join。\n\n\n\n",
+ "desc": " 设置line join。\r\n\r\n\r\n",
"name": "vgcanvas_set_line_join",
"return": {
"type": "ret_t",
@@ -9998,7 +10026,7 @@
"annotation": {
"scriptable": true
},
- "desc": " 设置miter limit。\n\n\n\n",
+ "desc": " 设置miter limit。\r\n\r\n\r\n",
"name": "vgcanvas_set_miter_limit",
"return": {
"type": "ret_t",
@@ -10016,7 +10044,7 @@
"annotation": {
"scriptable": true
},
- "desc": " 保存当前的状态。如颜色和矩阵等信息。\n\n > save/restore必须配套使用,否则可能导致状态混乱。\n\n\n\n",
+ "desc": " 保存当前的状态。如颜色和矩阵等信息。\r\n\r\n > save/restore必须配套使用,否则可能导致状态混乱。\r\n\r\n\r\n",
"name": "vgcanvas_save",
"return": {
"type": "ret_t",
@@ -10034,7 +10062,7 @@
"annotation": {
"scriptable": true
},
- "desc": " 恢复上次save的状态。\n\n> save/restore必须配套使用,否则可能导致状态混乱。\n\n\n\n",
+ "desc": " 恢复上次save的状态。\r\n\r\n> save/restore必须配套使用,否则可能导致状态混乱。\r\n\r\n\r\n",
"name": "vgcanvas_restore",
"return": {
"type": "ret_t",
@@ -10050,7 +10078,7 @@
}
],
"annotation": {},
- "desc": " 结束绘制。系统内部调用。\n\n\n",
+ "desc": " 结束绘制。系统内部调用。\r\n\r\n",
"name": "vgcanvas_end_frame",
"return": {
"type": "ret_t",
@@ -10066,7 +10094,7 @@
}
],
"annotation": {},
- "desc": " 获取宽度。\n\n\n",
+ "desc": " 获取宽度。\r\n\r\n",
"name": "vgcanvas_get_width",
"return": {
"type": "wh_t",
@@ -10082,7 +10110,7 @@
}
],
"annotation": {},
- "desc": " 获取高度。\n\n\n",
+ "desc": " 获取高度。\r\n\r\n",
"name": "vgcanvas_get_height",
"return": {
"type": "wh_t",
@@ -10098,7 +10126,7 @@
}
],
"annotation": {},
- "desc": " 销毁vgcanvas对象。\n\n\n",
+ "desc": " 销毁vgcanvas对象。\r\n\r\n",
"name": "vgcanvas_destroy",
"return": {
"type": "ret_t",
@@ -10110,7 +10138,7 @@
"properties": [
{
"name": "w",
- "desc": " canvas的宽度\n\n",
+ "desc": " canvas的宽度\r\n",
"type": "wh_t",
"annotation": {
"readable": true,
@@ -10119,7 +10147,7 @@
},
{
"name": "h",
- "desc": " canvas的高度\n\n",
+ "desc": " canvas的高度\r\n",
"type": "wh_t",
"annotation": {
"readable": true,
@@ -10128,7 +10156,7 @@
},
{
"name": "ratio",
- "desc": " 显示比例。\n\n",
+ "desc": " 显示比例。\r\n",
"type": "float_t",
"annotation": {
"readable": true,
@@ -10137,7 +10165,7 @@
},
{
"name": "anti_alias",
- "desc": " 是否启用反走样功能。\n\n",
+ "desc": " 是否启用反走样功能。\r\n",
"type": "bool_t",
"annotation": {
"readable": true,
@@ -10146,7 +10174,7 @@
},
{
"name": "line_width",
- "desc": " 线宽。\n\n",
+ "desc": " 线宽。\r\n",
"type": "float_t",
"annotation": {
"readable": true,
@@ -10155,7 +10183,7 @@
},
{
"name": "global_alpha",
- "desc": " 全局alpha。\n\n",
+ "desc": " 全局alpha。\r\n",
"type": "float_t",
"annotation": {
"readable": true,
@@ -10164,7 +10192,7 @@
},
{
"name": "miter_limit",
- "desc": " miter\\_limit。\n @see http://www.w3school.com.cn/tags/canvas_miterlimit.asp\n\n",
+ "desc": " miter\\_limit。\r\n @see http://www.w3school.com.cn/tags/canvas_miterlimit.asp\r\n",
"type": "float_t",
"annotation": {
"readable": true,
@@ -10173,7 +10201,7 @@
},
{
"name": "line_cap",
- "desc": " line\\_cap。\n @see http://www.w3school.com.cn/tags/canvas_linecap.asp\n\n",
+ "desc": " line\\_cap。\r\n @see http://www.w3school.com.cn/tags/canvas_linecap.asp\r\n",
"type": "const char*",
"annotation": {
"readable": true,
@@ -10182,7 +10210,7 @@
},
{
"name": "line_join",
- "desc": " line\\_join。\n @see http://www.w3school.com.cn/tags/canvas_linejoin.asp\n\n",
+ "desc": " line\\_join。\r\n @see http://www.w3school.com.cn/tags/canvas_linejoin.asp\r\n",
"type": "const char*",
"annotation": {
"readable": true,
@@ -10191,7 +10219,7 @@
},
{
"name": "font",
- "desc": " 字体。\n\n",
+ "desc": " 字体。\r\n",
"type": "char*",
"annotation": {
"readable": true,
@@ -10200,7 +10228,7 @@
},
{
"name": "font_size",
- "desc": " 字体大小。\n\n",
+ "desc": " 字体大小。\r\n",
"type": "float_t",
"annotation": {
"readable": true,
@@ -10209,7 +10237,7 @@
},
{
"name": "text_align",
- "desc": " 文本对齐方式。\n\n @see http://www.w3school.com.cn/tags/canvas_textalign.asp\n\n",
+ "desc": " 文本对齐方式。\r\n\r\n @see http://www.w3school.com.cn/tags/canvas_textalign.asp\r\n",
"type": "const char*",
"annotation": {
"readable": true,
@@ -10218,7 +10246,7 @@
},
{
"name": "text_baseline",
- "desc": " 文本基线。\n\n @see http://www.w3school.com.cn/tags/canvas_textbaseline.asp\n\n",
+ "desc": " 文本基线。\r\n\r\n @see http://www.w3school.com.cn/tags/canvas_textbaseline.asp\r\n",
"type": "const char*",
"annotation": {
"readable": true,
@@ -10227,7 +10255,7 @@
},
{
"name": "fill_color",
- "desc": " 填充颜色\n\n",
+ "desc": " 填充颜色\r\n",
"type": "color_t",
"annotation": {
"readable": true
@@ -10235,7 +10263,7 @@
},
{
"name": "stroke_color",
- "desc": " 线条颜色\n\n",
+ "desc": " 线条颜色\r\n",
"type": "color_t",
"annotation": {
"readable": true
@@ -10243,7 +10271,7 @@
},
{
"name": "buff;",
- "desc": " frame buffer\n\n",
+ "desc": " frame buffer\r\n",
"type": "uint32_t*",
"annotation": {
"private": true
@@ -10251,7 +10279,7 @@
},
{
"name": "format;",
- "desc": " frame buffer format\n\n",
+ "desc": " frame buffer format\r\n",
"type": "bitmap_format_t",
"annotation": {
"private": true
@@ -10259,7 +10287,7 @@
}
],
"header": "base/vgcanvas.h",
- "desc": " 矢量图画布抽象基类。\n\n 具体实现时可以使用agg,nanovg, cairo和skia等方式。\n\n cairo和skia体积太大,不适合嵌入式平台,但在PC平台也是一种选择。\n\n 目前我们只提供了基于nanovg的实现,支持软件渲染和硬件渲染。\n\n 我们对nanovg进行了一些改进:\n\n * 可以用agg/agge实现软件渲染(暂时不支持文本绘制)。\n\n * 可以用bgfx使用DirectX(Windows平台)和Metal(iOS)平台硬件加速。\n\n ```graphviz\n [default_style]\n\n vgcanvas_cairo_t -> vgcanvas_t[arrowhead = \"empty\"]\n vgcanvas_nanovg_t -> vgcanvas_t[arrowhead = \"empty\"]\n opengl -> vgcanvas_nanovg_t[arrowhead = \"none\"]\n bgfx -> vgcanvas_nanovg_t[arrowhead = \"none\"]\n agg -> vgcanvas_nanovg_t[arrowhead = \"none\"]\n agge -> vgcanvas_nanovg_t[arrowhead = \"none\"]\n vgcanvas_skia_t -> vgcanvas_t[arrowhead = \"empty\"]\n vgcanvas_agge_t -> vgcanvas_t[arrowhead = \"empty\"]\n ```\n\n 示例:\n\n ```c\n vgcanvas_t* vg = canvas_get_vgcanvas(c);\n vgcanvas_save(vg);\n vgcanvas_translate(vg, 0, 100);\n\n vgcanvas_set_line_width(vg, 1);\n vgcanvas_set_fill_color(vg, color_init(0xff, 0, 0, 0xff));\n vgcanvas_rect(vg, 5, 5, 100, 100);\n vgcanvas_fill(vg);\n vgcanvas_restore(vg);\n ```\n\n >请参考:https://www.w3schools.com/tags/ref_canvas.asp\n\n\n",
+ "desc": " 矢量图画布抽象基类。\r\n\r\n 具体实现时可以使用agg,nanovg, cairo和skia等方式。\r\n\r\n cairo和skia体积太大,不适合嵌入式平台,但在PC平台也是一种选择。\r\n\r\n 目前我们只提供了基于nanovg的实现,支持软件渲染和硬件渲染。\r\n\r\n 我们对nanovg进行了一些改进:\r\n\r\n * 可以用agg/agge实现软件渲染(暂时不支持文本绘制)。\r\n\r\n * 可以用bgfx使用DirectX(Windows平台)和Metal(iOS)平台硬件加速。\r\n\r\n ```graphviz\r\n [default_style]\r\n\r\n vgcanvas_cairo_t -> vgcanvas_t[arrowhead = \"empty\"]\r\n vgcanvas_nanovg_t -> vgcanvas_t[arrowhead = \"empty\"]\r\n opengl -> vgcanvas_nanovg_t[arrowhead = \"none\"]\r\n bgfx -> vgcanvas_nanovg_t[arrowhead = \"none\"]\r\n agg -> vgcanvas_nanovg_t[arrowhead = \"none\"]\r\n agge -> vgcanvas_nanovg_t[arrowhead = \"none\"]\r\n vgcanvas_skia_t -> vgcanvas_t[arrowhead = \"empty\"]\r\n vgcanvas_agge_t -> vgcanvas_t[arrowhead = \"empty\"]\r\n ```\r\n\r\n 示例:\r\n\r\n ```c\r\n vgcanvas_t* vg = canvas_get_vgcanvas(c);\r\n vgcanvas_save(vg);\r\n vgcanvas_translate(vg, 0, 100);\r\n\r\n vgcanvas_set_line_width(vg, 1);\r\n vgcanvas_set_fill_color(vg, color_init(0xff, 0, 0, 0xff));\r\n vgcanvas_rect(vg, 5, 5, 100, 100);\r\n vgcanvas_fill(vg);\r\n vgcanvas_restore(vg);\r\n ```\r\n\r\n >请参考:https://www.w3schools.com/tags/ref_canvas.asp\r\n\r\n",
"name": "vgcanvas_t",
"annotation": {
"scriptable": true
@@ -10282,7 +10310,7 @@
"annotation": {
"global": true
},
- "desc": " 创建animator对象。\n\n\n",
+ "desc": " 创建animator对象。\r\n\r\n",
"name": "widget_animator_create",
"return": {
"type": "widget_animator_t*",
@@ -10300,7 +10328,7 @@
"annotation": {
"constructor": true
},
- "desc": " 获取缺省的控件动画管理器。\n\n",
+ "desc": " 获取缺省的控件动画管理器。\r\n",
"name": "widget_animator_manager",
"alias": "widget_animator_manager_instance",
"return": {
@@ -10317,7 +10345,7 @@
}
],
"annotation": {},
- "desc": " 设置缺省的控件动画管理器。\n\n\n",
+ "desc": " 设置缺省的控件动画管理器。\r\n\r\n",
"name": "widget_animator_manager_set",
"return": {
"type": "ret_t",
@@ -10329,7 +10357,7 @@
"annotation": {
"constructor": true
},
- "desc": " 创建控件动画管理器。\n\n\n",
+ "desc": " 创建控件动画管理器。\r\n\r\n",
"name": "widget_animator_manager_create",
"return": {
"type": "widget_animator_manager_t*",
@@ -10347,7 +10375,7 @@
"annotation": {
"constructor": true
},
- "desc": " 初始化控件动画管理器。\n\n\n",
+ "desc": " 初始化控件动画管理器。\r\n\r\n",
"name": "widget_animator_manager_init",
"return": {
"type": "widget_animator_manager_t*",
@@ -10363,7 +10391,7 @@
}
],
"annotation": {},
- "desc": " 析构控件动画管理器。\n\n\n",
+ "desc": " 析构控件动画管理器。\r\n\r\n",
"name": "widget_animator_manager_deinit",
"return": {
"type": "ret_t",
@@ -10379,7 +10407,7 @@
}
],
"annotation": {},
- "desc": " 析构并释放控件动画管理器。\n\n\n",
+ "desc": " 析构并释放控件动画管理器。\r\n\r\n",
"name": "widget_animator_manager_destroy",
"return": {
"type": "ret_t",
@@ -10400,7 +10428,7 @@
}
],
"annotation": {},
- "desc": " 添加指定的动画,动画在创建时调用本函数。\n\n\n",
+ "desc": " 添加指定的动画,动画在创建时调用本函数。\r\n\r\n",
"name": "widget_animator_manager_add",
"return": {
"type": "ret_t",
@@ -10421,7 +10449,7 @@
}
],
"annotation": {},
- "desc": " 移出指定的动画,动画在销毁时调用本函数。。\n\n\n",
+ "desc": " 移出指定的动画,动画在销毁时调用本函数。。\r\n\r\n",
"name": "widget_animator_manager_remove",
"return": {
"type": "ret_t",
@@ -10437,7 +10465,7 @@
}
],
"annotation": {},
- "desc": " 获取动画个数。\n\n\n",
+ "desc": " 获取动画个数。\r\n\r\n",
"name": "widget_animator_manager_count",
"return": {
"type": "ret_t",
@@ -10463,7 +10491,7 @@
}
],
"annotation": {},
- "desc": " 播放满足条件的动画。\n 1.widget为NULL时,播放所有名称为name的动画。\n 2.name为NULL时,播放所有widget相关的动画。\n 3.widget和name均为NULL,播放所有动画。\n\n\n",
+ "desc": " 播放满足条件的动画。\r\n 1.widget为NULL时,播放所有名称为name的动画。\r\n 2.name为NULL时,播放所有widget相关的动画。\r\n 3.widget和name均为NULL,播放所有动画。\r\n\r\n",
"name": "widget_animator_manager_start",
"return": {
"type": "ret_t",
@@ -10489,7 +10517,7 @@
}
],
"annotation": {},
- "desc": " 停止满足条件的动画。\n 1.widget为NULL时,停止所有名称为name的动画。\n 2.name为NULL时,停止所有widget相关的动画。\n 3.widget和name均为NULL,停止所有动画。\n\n\n",
+ "desc": " 停止满足条件的动画。\r\n 1.widget为NULL时,停止所有名称为name的动画。\r\n 2.name为NULL时,停止所有widget相关的动画。\r\n 3.widget和name均为NULL,停止所有动画。\r\n\r\n",
"name": "widget_animator_manager_stop",
"return": {
"type": "ret_t",
@@ -10515,7 +10543,7 @@
}
],
"annotation": {},
- "desc": " 暂停满足条件的动画。\n 1.widget为NULL时,暂停所有名称为name的动画。\n 2.name为NULL时,暂停所有widget相关的动画。\n 3.widget和name均为NULL,暂停所有动画。\n\n\n",
+ "desc": " 暂停满足条件的动画。\r\n 1.widget为NULL时,暂停所有名称为name的动画。\r\n 2.name为NULL时,暂停所有widget相关的动画。\r\n 3.widget和name均为NULL,暂停所有动画。\r\n\r\n",
"name": "widget_animator_manager_pause",
"return": {
"type": "ret_t",
@@ -10541,7 +10569,7 @@
}
],
"annotation": {},
- "desc": " 查找满足条件的动画。\n\n\n",
+ "desc": " 查找满足条件的动画。\r\n\r\n",
"name": "widget_animator_manager_find",
"return": {
"type": "widget_animator_t*",
@@ -10567,7 +10595,7 @@
}
],
"annotation": {},
- "desc": " 销毁满足条件的动画。\n\n\n",
+ "desc": " 销毁满足条件的动画。\r\n\r\n",
"name": "widget_animator_manager_remove_all",
"return": {
"type": "ret_t",
@@ -10598,7 +10626,7 @@
}
],
"annotation": {},
- "desc": " 设置时间倍率。\n 设置动画的时间倍率,<0: 时间倒退,<1: 时间变慢,>1 时间变快。\n\n\n",
+ "desc": " 设置时间倍率。\r\n 设置动画的时间倍率,<0: 时间倒退,<1: 时间变慢,>1 时间变快。\r\n\r\n",
"name": "widget_animator_manager_set_time_scale",
"return": {
"type": "ret_t",
@@ -10619,7 +10647,7 @@
}
],
"annotation": {},
- "desc": " 时间流失,调用本函数更新动画(public for test)。\n\n\n\n",
+ "desc": " 时间流失,调用本函数更新动画(public for test)。\r\n\r\n\r\n",
"name": "widget_animator_manager_time_elapse",
"return": {
"type": "ret_t",
@@ -10631,12 +10659,12 @@
"properties": [
{
"name": "time_scale",
- "desc": " 时间倍率,可以让时间变快或变慢。\n\n",
+ "desc": " 时间倍率,可以让时间变快或变慢。\r\n",
"type": "float_t"
}
],
"header": "base/widget_animator_manager.h",
- "desc": " 控件动画管理器。\n\n",
+ "desc": " 控件动画管理器。\r\n",
"name": "widget_animator_t",
"level": 1
},
@@ -10672,7 +10700,7 @@
}
],
"annotation": {},
- "desc": " 初始化。仅供子类内部使用。\n\n\n",
+ "desc": " 初始化。仅供子类内部使用。\r\n\r\n",
"name": "widget_animator_init",
"return": {
"type": "ret_t",
@@ -10693,7 +10721,7 @@
}
],
"annotation": {},
- "desc": " 设置名称。\n\n\n",
+ "desc": " 设置名称。\r\n\r\n",
"name": "widget_animator_set_name",
"return": {
"type": "ret_t",
@@ -10714,7 +10742,7 @@
}
],
"annotation": {},
- "desc": " 设置为yoyo模式。\n\n\n",
+ "desc": " 设置为yoyo模式。\r\n\r\n",
"name": "widget_animator_set_yoyo",
"return": {
"type": "ret_t",
@@ -10735,7 +10763,7 @@
}
],
"annotation": {},
- "desc": " 设置为重复模式。\n\n\n",
+ "desc": " 设置为重复模式。\r\n\r\n",
"name": "widget_animator_set_repeat",
"return": {
"type": "ret_t",
@@ -10756,7 +10784,7 @@
}
],
"annotation": {},
- "desc": " 设置为逆向模式。\n\n\n",
+ "desc": " 设置为逆向模式。\r\n\r\n",
"name": "widget_animator_set_reversed",
"return": {
"type": "ret_t",
@@ -10777,7 +10805,7 @@
}
],
"annotation": {},
- "desc": " 设置时间倍率,用于实现时间加速减速和停滞的功能。\n\n\n",
+ "desc": " 设置时间倍率,用于实现时间加速减速和停滞的功能。\r\n\r\n",
"name": "widget_animator_set_time_scale",
"return": {
"type": "ret_t",
@@ -10810,7 +10838,7 @@
"annotation": {
"scriptable": "custom"
},
- "desc": " 注册指定事件的处理函数。\n 事件类型。目前支持:EVT_ANIM_START,EVT_ANIM_STOP,EVT_ANIM_PAUSE,EVT_ANIM_ONCE和EVT_ANIM_END。\n\n\n",
+ "desc": " 注册指定事件的处理函数。\r\n 事件类型。目前支持:EVT_ANIM_START,EVT_ANIM_STOP,EVT_ANIM_PAUSE,EVT_ANIM_ONCE和EVT_ANIM_END。\r\n\r\n",
"name": "widget_animator_on",
"return": {
"type": "uint32_t",
@@ -10833,7 +10861,7 @@
"annotation": {
"scriptable": "custom"
},
- "desc": " 注销指定事件的处理函数。\n\n\n",
+ "desc": " 注销指定事件的处理函数。\r\n\r\n",
"name": "widget_animator_off",
"return": {
"type": "ret_t",
@@ -10849,7 +10877,7 @@
}
],
"annotation": {},
- "desc": " 启动动画。\n\n\n",
+ "desc": " 启动动画。\r\n\r\n",
"name": "widget_animator_start",
"return": {
"type": "ret_t",
@@ -10865,7 +10893,7 @@
}
],
"annotation": {},
- "desc": " 停止动画。\n\n\n",
+ "desc": " 停止动画。\r\n\r\n",
"name": "widget_animator_stop",
"return": {
"type": "ret_t",
@@ -10881,7 +10909,7 @@
}
],
"annotation": {},
- "desc": " 暂停动画。\n\n\n",
+ "desc": " 暂停动画。\r\n\r\n",
"name": "widget_animator_pause",
"return": {
"type": "ret_t",
@@ -10902,7 +10930,7 @@
}
],
"annotation": {},
- "desc": " 设置完成时是否自动销毁动画对象(缺省销毁)。\n\n\n",
+ "desc": " 设置完成时是否自动销毁动画对象(缺省销毁)。\r\n\r\n",
"name": "widget_animator_set_destroy_when_done",
"return": {
"type": "ret_t",
@@ -10925,7 +10953,7 @@
"annotation": {
"private": true
},
- "desc": " 时间流失,更新动画(由动画管理器调用)。\n\n\n",
+ "desc": " 时间流失,更新动画(由动画管理器调用)。\r\n\r\n",
"name": "widget_animator_time_elapse",
"return": {
"type": "ret_t",
@@ -10941,7 +10969,7 @@
}
],
"annotation": {},
- "desc": " 销毁animator对象。\n\n\n",
+ "desc": " 销毁animator对象。\r\n\r\n",
"name": "widget_animator_destroy",
"return": {
"type": "ret_t",
@@ -10953,12 +10981,12 @@
"properties": [
{
"name": "name",
- "desc": " 名称。\n\n",
+ "desc": " 名称。\r\n",
"type": "char*"
},
{
"name": "widget",
- "desc": " 控件对象。\n\n",
+ "desc": " 控件对象。\r\n",
"type": "widget_t*",
"annotation": {
"private": true
@@ -10966,7 +10994,7 @@
},
{
"name": "reversed",
- "desc": " 逆向运行,在yoyo模式下自动设置。\n\n",
+ "desc": " 逆向运行,在yoyo模式下自动设置。\r\n",
"type": "bool_t",
"annotation": {
"private": true
@@ -10974,7 +11002,7 @@
},
{
"name": "yoyo_times",
- "desc": " yoyo剩余次数。\n\n",
+ "desc": " yoyo剩余次数。\r\n",
"type": "uint32_t",
"annotation": {
"private": true
@@ -10982,7 +11010,7 @@
},
{
"name": "repeat_times",
- "desc": " 重复剩余次数。\n\n",
+ "desc": " 重复剩余次数。\r\n",
"type": "uint32_t",
"annotation": {
"private": true
@@ -10990,7 +11018,7 @@
},
{
"name": "now",
- "desc": " 当前时间(毫秒)。\n\n",
+ "desc": " 当前时间(毫秒)。\r\n",
"type": "uint32_t",
"annotation": {
"private": true
@@ -10998,7 +11026,7 @@
},
{
"name": "time_scale",
- "desc": " 时间倍率。\n\n",
+ "desc": " 时间倍率。\r\n",
"type": "float_t",
"annotation": {
"private": true
@@ -11006,7 +11034,7 @@
},
{
"name": "start_time",
- "desc": " 起始时间(毫秒)。\n\n",
+ "desc": " 起始时间(毫秒)。\r\n",
"type": "uint32_t",
"annotation": {
"private": true
@@ -11014,7 +11042,7 @@
},
{
"name": "delay",
- "desc": " 延迟执行时间(毫秒)。\n\n",
+ "desc": " 延迟执行时间(毫秒)。\r\n",
"type": "uint32_t",
"annotation": {
"private": true
@@ -11022,7 +11050,7 @@
},
{
"name": "duration",
- "desc": " 单次动画执行时间(毫秒)。\n\n",
+ "desc": " 单次动画执行时间(毫秒)。\r\n",
"type": "uint32_t",
"annotation": {
"private": true
@@ -11030,7 +11058,7 @@
},
{
"name": "state",
- "desc": " 动画的状态。\n\n",
+ "desc": " 动画的状态。\r\n",
"type": "animator_state_t",
"annotation": {
"private": true
@@ -11038,7 +11066,7 @@
},
{
"name": "emitter",
- "desc": " emitter\n\n",
+ "desc": " emitter\r\n",
"type": "uint32_t",
"annotation": {
"private": true
@@ -11046,7 +11074,7 @@
},
{
"name": "destroy_when_done;",
- "desc": " 播放完成时是否自动销毁(缺省销毁)。\n\n",
+ "desc": " 播放完成时是否自动销毁(缺省销毁)。\r\n",
"type": "bool_t",
"annotation": {
"private": true
@@ -11054,7 +11082,7 @@
},
{
"name": "forever",
- "desc": " 是否永远播放(yoyo_times/repeat_times为0时,自动设置此标志)。\n\n",
+ "desc": " 是否永远播放(yoyo_times/repeat_times为0时,自动设置此标志)。\r\n",
"type": "bool_t",
"annotation": {
"private": true
@@ -11062,7 +11090,7 @@
},
{
"name": "widget_destroy_id",
- "desc": " widget_destroy_id。\n\n",
+ "desc": " widget_destroy_id。\r\n",
"type": "uint32_t",
"annotation": {
"private": true
@@ -11070,7 +11098,7 @@
},
{
"name": "easing",
- "desc": " 插值函数。\n\n",
+ "desc": " 插值函数。\r\n",
"type": "easing_func_t",
"annotation": {
"private": true
@@ -11078,7 +11106,7 @@
},
{
"name": "update",
- "desc": " update函数,子类需要实现。\n\n",
+ "desc": " update函数,子类需要实现。\r\n",
"type": "widget_animator_update_t",
"annotation": {
"private": true
@@ -11086,7 +11114,7 @@
},
{
"name": "destroy",
- "desc": " destroy函数,子类需要实现。\n\n",
+ "desc": " destroy函数,子类需要实现。\r\n",
"type": "widget_animator_destroy_t",
"annotation": {
"private": true
@@ -11094,476 +11122,476 @@
}
],
"header": "base/widget_animator.h",
- "desc": " 控件动画接口。\n\n",
+ "desc": " 控件动画接口。\r\n",
"name": "widget_animator_t",
"level": 1
},
{
"type": "enum",
- "desc": " 控件的属性。\n\n",
+ "desc": " 控件的属性。\r\n",
"consts": [
{
- "desc": " X坐标。\n\n",
+ "desc": " X坐标。\r\n",
"name": "WIDGET_PROP_X"
},
{
- "desc": " Y坐标。\n\n",
+ "desc": " Y坐标。\r\n",
"name": "WIDGET_PROP_Y"
},
{
- "desc": " 宽度。\n\n",
+ "desc": " 宽度。\r\n",
"name": "WIDGET_PROP_W"
},
{
- "desc": " 高度。\n\n",
+ "desc": " 高度。\r\n",
"name": "WIDGET_PROP_H"
},
{
- "desc": " Canvas。\n\n",
+ "desc": " Canvas。\r\n",
"name": "WIDGET_PROP_CANVAS"
},
{
- "desc": " Canvas。\n\n",
+ "desc": " Canvas。\r\n",
"name": "WIDGET_PROP_LOCALIZE_OPTIONS"
},
{
- "desc": " Native Window。\n\n",
+ "desc": " Native Window。\r\n",
"name": "WIDGET_PROP_NATIVE_WINDOW"
},
{
- "desc": " dialog highlight。\n\n",
+ "desc": " dialog highlight。\r\n",
"name": "WIDGET_PROP_HIGHLIGHT"
},
{
- "desc": " slider中的bar的的宽度或高度。\n\n",
+ "desc": " slider中的bar的的宽度或高度。\r\n",
"name": "WIDGET_PROP_BAR_SIZE"
},
{
- "desc": " 不透明度。\n\n",
+ "desc": " 不透明度。\r\n",
"name": "WIDGET_PROP_OPACITY"
},
{
- "desc": " 最小宽度。\n\n",
+ "desc": " 最小宽度。\r\n",
"name": "WIDGET_PROP_MIN_W"
},
{
- "desc": " 最大宽度。\n\n",
+ "desc": " 最大宽度。\r\n",
"name": "WIDGET_PROP_MAX_W"
},
{
- "desc": " 子控件布局参数。\n\n",
+ "desc": " 子控件布局参数。\r\n",
"name": "WIDGET_PROP_CHILDREN_LAYOUT"
},
{
- "desc": " 子控件布局参数(过时)。\n\n",
+ "desc": " 子控件布局参数(过时)。\r\n",
"name": "WIDGET_PROP_LAYOUT"
},
{
- "desc": " 控件布局参数。\n\n",
+ "desc": " 控件布局参数。\r\n",
"name": "WIDGET_PROP_SELF_LAYOUT"
},
{
- "desc": " layout宽度。\n\n",
+ "desc": " layout宽度。\r\n",
"name": "WIDGET_PROP_LAYOUT_W"
},
{
- "desc": " layout高度。\n\n",
+ "desc": " layout高度。\r\n",
"name": "WIDGET_PROP_LAYOUT_H"
},
{
- "desc": " 虚拟宽度。\n\n",
+ "desc": " 虚拟宽度。\r\n",
"name": "WIDGET_PROP_VIRTUAL_W"
},
{
- "desc": " 虚拟高度。\n\n",
+ "desc": " 虚拟高度。\r\n",
"name": "WIDGET_PROP_VIRTUAL_H"
},
{
- "desc": " 名称。\n\n",
+ "desc": " 名称。\r\n",
"name": "WIDGET_PROP_NAME"
},
{
- "desc": " 类型。\n\n",
+ "desc": " 类型。\r\n",
"name": "WIDGET_PROP_TYPE"
},
{
- "desc": " 是否可以关闭。\n\n",
+ "desc": " 是否可以关闭。\r\n",
"name": "WIDGET_PROP_CLOSABLE"
},
{
- "desc": " 鼠标指针。\n\n",
+ "desc": " 鼠标指针。\r\n",
"name": "WIDGET_PROP_CURSOR"
},
{
- "desc": " 值。\n\n",
+ "desc": " 值。\r\n",
"name": "WIDGET_PROP_VALUE"
},
{
- "desc": " 长度。\n\n",
+ "desc": " 长度。\r\n",
"name": "WIDGET_PROP_LENGTH"
},
{
- "desc": " 文本。\n\n",
+ "desc": " 文本。\r\n",
"name": "WIDGET_PROP_TEXT"
},
{
- "desc": " 待翻译文本。\n\n",
+ "desc": " 待翻译文本。\r\n",
"name": "WIDGET_PROP_TR_TEXT"
},
{
- "desc": " style。\n\n",
+ "desc": " style。\r\n",
"name": "WIDGET_PROP_STYLE"
},
{
- "desc": " 是否启用。\n\n",
+ "desc": " 是否启用。\r\n",
"name": "WIDGET_PROP_ENABLE"
},
{
- "desc": " 是否启用按键音等反馈。\n\n",
+ "desc": " 是否启用按键音等反馈。\r\n",
"name": "WIDGET_PROP_FEEDBACK"
},
{
- "desc": " 是否启用floating布局。\n\n",
+ "desc": " 是否启用floating布局。\r\n",
"name": "WIDGET_PROP_FLOATING"
},
{
- "desc": " 边距。\n\n",
+ "desc": " 边距。\r\n",
"name": "WIDGET_PROP_MARGIN"
},
{
- "desc": " 间距。\n\n",
+ "desc": " 间距。\r\n",
"name": "WIDGET_PROP_SPACING"
},
{
- "desc": " 左边距。\n\n",
+ "desc": " 左边距。\r\n",
"name": "WIDGET_PROP_LEFT_MARGIN"
},
{
- "desc": " 右边距。\n\n",
+ "desc": " 右边距。\r\n",
"name": "WIDGET_PROP_RIGHT_MARGIN"
},
{
- "desc": " 顶边距。\n\n",
+ "desc": " 顶边距。\r\n",
"name": "WIDGET_PROP_TOP_MARGIN"
},
{
- "desc": " 底边距。\n\n",
+ "desc": " 底边距。\r\n",
"name": "WIDGET_PROP_BOTTOM_MARGIN"
},
{
- "desc": " 步长。\n\n",
+ "desc": " 步长。\r\n",
"name": "WIDGET_PROP_STEP"
},
{
- "desc": " 是否可见。\n\n",
+ "desc": " 是否可见。\r\n",
"name": "WIDGET_PROP_VISIBLE"
},
{
- "desc": " 是否接受用户事件。\n\n",
+ "desc": " 是否接受用户事件。\r\n",
"name": "WIDGET_PROP_SENSITIVE"
},
{
- "desc": " 控件动画。\n\n",
+ "desc": " 控件动画。\r\n",
"name": "WIDGET_PROP_ANIMATION"
},
{
- "desc": " 窗口动画。\n\n",
+ "desc": " 窗口动画。\r\n",
"name": "WIDGET_PROP_ANIM_HINT"
},
{
- "desc": " 窗口设置为全部大小。\n\n",
+ "desc": " 窗口设置为全部大小。\r\n",
"name": "WIDGET_PROP_FULLSCREEN"
},
{
- "desc": " 打开窗口动画。\n\n",
+ "desc": " 打开窗口动画。\r\n",
"name": "WIDGET_PROP_OPEN_ANIM_HINT"
},
{
- "desc": " 关闭窗口动画。\n\n",
+ "desc": " 关闭窗口动画。\r\n",
"name": "WIDGET_PROP_CLOSE_ANIM_HINT"
},
{
- "desc": " 最小值。\n\n",
+ "desc": " 最小值。\r\n",
"name": "WIDGET_PROP_MIN"
},
{
- "desc": " 提示信息。\n\n",
+ "desc": " 提示信息。\r\n",
"name": "WIDGET_PROP_TIPS"
},
{
- "desc": " 输入类型。\n\n",
+ "desc": " 输入类型。\r\n",
"name": "WIDGET_PROP_INPUT_TYPE"
},
{
- "desc": " 只读模式。\n\n",
+ "desc": " 只读模式。\r\n",
"name": "WIDGET_PROP_READONLY"
},
{
- "desc": " 密码是否可见。\n\n",
+ "desc": " 密码是否可见。\r\n",
"name": "WIDGET_PROP_PASSWORD_VISIBLE"
},
{
- "desc": " 是否处于active状态。\n\n",
+ "desc": " 是否处于active状态。\r\n",
"name": "WIDGET_PROP_ACTIVE"
},
{
- "desc": " 是否为垂直模式。\n\n",
+ "desc": " 是否为垂直模式。\r\n",
"name": "WIDGET_PROP_VERTICAL"
},
{
- "desc": " 是否显示文本。\n\n",
+ "desc": " 是否显示文本。\r\n",
"name": "WIDGET_PROP_SHOW_TEXT"
},
{
- "desc": " X方向的偏移。\n\n",
+ "desc": " X方向的偏移。\r\n",
"name": "WIDGET_PROP_XOFFSET"
},
{
- "desc": " Y方向的偏移。\n\n",
+ "desc": " Y方向的偏移。\r\n",
"name": "WIDGET_PROP_YOFFSET"
},
{
- "desc": " 垂直对齐模式。\n\n",
+ "desc": " 垂直对齐模式。\r\n",
"name": "WIDGET_PROP_ALIGN_V"
},
{
- "desc": " 水平对齐模式。\n\n",
+ "desc": " 水平对齐模式。\r\n",
"name": "WIDGET_PROP_ALIGN_H"
},
{
- "desc": " 是否自动播放或指定播放的时间。\n\n",
+ "desc": " 是否自动播放或指定播放的时间。\r\n",
"name": "WIDGET_PROP_AUTO_PLAY"
},
{
- "desc": " 是否循环播放或循环播放的次数。\n\n",
+ "desc": " 是否循环播放或循环播放的次数。\r\n",
"name": "WIDGET_PROP_LOOP"
},
{
- "desc": " 是否启用自动更正功能。\n\n",
+ "desc": " 是否启用自动更正功能。\r\n",
"name": "WIDGET_PROP_AUTO_FIX"
},
{
- "desc": " X最小值。\n\n",
+ "desc": " X最小值。\r\n",
"name": "WIDGET_PROP_X_MIN"
},
{
- "desc": " X最大值。\n\n",
+ "desc": " X最大值。\r\n",
"name": "WIDGET_PROP_X_MAX"
},
{
- "desc": " Y最小值。\n\n",
+ "desc": " Y最小值。\r\n",
"name": "WIDGET_PROP_Y_MIN"
},
{
- "desc": " Y最大值。\n\n",
+ "desc": " Y最大值。\r\n",
"name": "WIDGET_PROP_Y_MAX"
},
{
- "desc": " 最大值。\n\n",
+ "desc": " 最大值。\r\n",
"name": "WIDGET_PROP_MAX"
},
{
- "desc": " 行数或每行的高度。\n\n",
+ "desc": " 行数或每行的高度。\r\n",
"name": "WIDGET_PROP_ROW"
},
{
- "desc": " 控件状态。\n\n",
+ "desc": " 控件状态。\r\n",
"name": "WIDGET_PROP_STATE_FOR_STYLE"
},
{
- "desc": " 窗口主题名称。\n\n",
+ "desc": " 窗口主题名称。\r\n",
"name": "WIDGET_PROP_THEME"
},
{
- "desc": " window stage\n\n",
+ "desc": " window stage\r\n",
"name": "WIDGET_PROP_STAGE"
},
{
- "desc": " 图片管理器。\n\n",
+ "desc": " 图片管理器。\r\n",
"name": "WIDGET_PROP_IMAGE_MANAGER"
},
{
- "desc": " 资源管理器。\n\n",
+ "desc": " 资源管理器。\r\n",
"name": "WIDGET_PROP_ASSETS_MANAGER"
},
{
- "desc": " locale_info。\n\n",
+ "desc": " locale_info。\r\n",
"name": "WIDGET_PROP_LOCALE_INFO"
},
{
- "desc": " 字体管理器。\n\n",
+ "desc": " 字体管理器。\r\n",
"name": "WIDGET_PROP_FONT_MANAGER"
},
{
- "desc": " 窗口的主题对象。\n\n",
+ "desc": " 窗口的主题对象。\r\n",
"name": "WIDGET_PROP_THEME_OBJ"
},
{
- "desc": " 缺省的主题对象。\n\n",
+ "desc": " 缺省的主题对象。\r\n",
"name": "WIDGET_PROP_DEFAULT_THEME_OBJ"
},
{
- "desc": " 项的宽度。\n\n",
+ "desc": " 项的宽度。\r\n",
"name": "WIDGET_PROP_ITEM_WIDTH"
},
{
- "desc": " 项的高度。\n\n",
+ "desc": " 项的高度。\r\n",
"name": "WIDGET_PROP_ITEM_HEIGHT"
},
{
- "desc": " 项的缺省高度。\n\n",
+ "desc": " 项的缺省高度。\r\n",
"name": "WIDGET_PROP_DEFAULT_ITEM_HEIGHT"
},
{
- "desc": " X方向是否可拖动。\n\n",
+ "desc": " X方向是否可拖动。\r\n",
"name": "WIDGET_PROP_XSLIDABLE"
},
{
- "desc": " Y方向是否可拖动。\n\n",
+ "desc": " Y方向是否可拖动。\r\n",
"name": "WIDGET_PROP_YSLIDABLE"
},
{
- "desc": " 重复次数。\n\n",
+ "desc": " 重复次数。\r\n",
"name": "WIDGET_PROP_REPEAT"
},
{
- "desc": " 是否启用长按。\n\n",
+ "desc": " 是否启用长按。\r\n",
"name": "WIDGET_PROP_ENABLE_LONG_PRESS"
},
{
- "desc": " 是否启用动画。\n\n",
+ "desc": " 是否启用动画。\r\n",
"name": "WIDGET_PROP_ANIMATABLE"
},
{
- "desc": " 是否自动隐藏滚动条。\n\n",
+ "desc": " 是否自动隐藏滚动条。\r\n",
"name": "WIDGET_PROP_AUTO_HIDE_SCROLL_BAR"
},
{
- "desc": " 图片名称。\n\n",
+ "desc": " 图片名称。\r\n",
"name": "WIDGET_PROP_IMAGE"
},
{
- "desc": " 显示格式。\n\n",
+ "desc": " 显示格式。\r\n",
"name": "WIDGET_PROP_FORMAT"
},
{
- "desc": " 图片绘制类型。\n\n",
+ "desc": " 图片绘制类型。\r\n",
"name": "WIDGET_PROP_DRAW_TYPE"
},
{
- "desc": " 是否可选择。\n\n",
+ "desc": " 是否可选择。\r\n",
"name": "WIDGET_PROP_SELECTABLE"
},
{
- "desc": " 是否可点击。\n\n",
+ "desc": " 是否可点击。\r\n",
"name": "WIDGET_PROP_CLICKABLE"
},
{
- "desc": " X方向缩放比例。\n\n",
+ "desc": " X方向缩放比例。\r\n",
"name": "WIDGET_PROP_SCALE_X"
},
{
- "desc": " Y方向缩放比例。\n\n",
+ "desc": " Y方向缩放比例。\r\n",
"name": "WIDGET_PROP_SCALE_Y"
},
{
- "desc": " x锚点。\n\n",
+ "desc": " x锚点。\r\n",
"name": "WIDGET_PROP_ANCHOR_X"
},
{
- "desc": " y锚点。\n\n",
+ "desc": " y锚点。\r\n",
"name": "WIDGET_PROP_ANCHOR_Y"
},
{
- "desc": " 选中角度(幅度)\n\n",
+ "desc": " 选中角度(幅度)\r\n",
"name": "WIDGET_PROP_ROTATION"
},
{
- "desc": " 紧凑模式。\n\n",
+ "desc": " 紧凑模式。\r\n",
"name": "WIDGET_PROP_COMPACT"
},
{
- "desc": " 是否支持滚动。\n\n",
+ "desc": " 是否支持滚动。\r\n",
"name": "WIDGET_PROP_SCROLLABLE"
},
{
- "desc": " 图标名称。\n\n",
+ "desc": " 图标名称。\r\n",
"name": "WIDGET_PROP_ICON"
},
{
- "desc": " 选项集合。\n\n",
+ "desc": " 选项集合。\r\n",
"name": "WIDGET_PROP_OPTIONS"
},
{
- "desc": " 是否被选中。\n\n",
+ "desc": " 是否被选中。\r\n",
"name": "WIDGET_PROP_SELECTED"
},
{
- "desc": " 是否被勾选。\n\n",
+ "desc": " 是否被勾选。\r\n",
"name": "WIDGET_PROP_CHECKED"
},
{
- "desc": " active状态下的图标。\n\n",
+ "desc": " active状态下的图标。\r\n",
"name": "WIDGET_PROP_ACTIVE_ICON"
},
{
- "desc": " 要打开窗口的名称。\n\n",
+ "desc": " 要打开窗口的名称。\r\n",
"name": "WIDGET_PROP_OPEN_WINDOW"
},
{
- "desc": " 被选中项的索引。\n\n",
+ "desc": " 被选中项的索引。\r\n",
"name": "WIDGET_PROP_SELECTED_INDEX"
},
{
- "desc": " 点击窗口时关闭窗口。\n\n",
+ "desc": " 点击窗口时关闭窗口。\r\n",
"name": "WIDGET_PROP_CLOSE_WHEN_CLICK"
},
{
- "desc": " 点击窗口外部时关闭窗口。\n\n",
+ "desc": " 点击窗口外部时关闭窗口。\r\n",
"name": "WIDGET_PROP_CLOSE_WHEN_CLICK_OUTSIDE"
},
{
- "desc": " 行间距。\n\n",
+ "desc": " 行间距。\r\n",
"name": "WIDGET_PROP_LINE_GAP"
},
{
- "desc": " 背景颜色(仅仅使用于color tile)。\n\n",
+ "desc": " 背景颜色(仅仅使用于color tile)。\r\n",
"name": "WIDGET_PROP_BG_COLOR"
},
{
- "desc": " 边框颜色(仅仅使用于color tile)。\n\n",
+ "desc": " 边框颜色(仅仅使用于color tile)。\r\n",
"name": "WIDGET_PROP_BORDER_COLOR"
},
{
- "desc": " 延迟时间(毫秒)\n\n",
+ "desc": " 延迟时间(毫秒)\r\n",
"name": "WIDGET_PROP_DELAY"
},
{
- "desc": " 是否为键盘。\n\n",
+ "desc": " 是否为键盘。\r\n",
"name": "WIDGET_PROP_IS_KEYBOARD"
},
{
- "desc": " 是否为焦点控件。\n\n",
+ "desc": " 是否为焦点控件。\r\n",
"name": "WIDGET_PROP_FOCUSED"
},
{
- "desc": " (过时请用focused)。\n\n",
+ "desc": " (过时请用focused)。\r\n",
"name": "WIDGET_PROP_FOCUS"
},
{
- "desc": " 是否支持焦点停留。\n\n",
+ "desc": " 是否支持焦点停留。\r\n",
"name": "WIDGET_PROP_FOCUSABLE"
},
{
- "desc": " 是否支持焦点状态(如果希望style支持焦点状态,但有不希望焦点停留,可用本属性)。\n\n",
+ "desc": " 是否支持焦点状态(如果希望style支持焦点状态,但有不希望焦点停留,可用本属性)。\r\n",
"name": "WIDGET_PROP_WITH_FOCUS_STATE"
},
{
- "desc": " 将焦点移到下一个的键值。\n\n",
+ "desc": " 将焦点移到下一个的键值。\r\n",
"name": "WIDGET_PROP_MOVE_FOCUS_NEXT_KEY"
},
{
- "desc": " 将焦点移到下一个的键值。\n\n",
+ "desc": " 将焦点移到下一个的键值。\r\n",
"name": "WIDGET_PROP_MOVE_FOCUS_PREV_KEY"
}
],
@@ -11578,218 +11606,218 @@
},
{
"type": "enum",
- "desc": " 控件的类型。\n\n",
+ "desc": " 控件的类型。\r\n",
"consts": [
{
- "desc": " 无特殊类型。\n\n",
+ "desc": " 无特殊类型。\r\n",
"name": "WIDGET_TYPE_NONE"
},
{
- "desc": " 窗口管理器。\n\n",
+ "desc": " 窗口管理器。\r\n",
"name": "WIDGET_TYPE_WINDOW_MANAGER"
},
{
- "desc": " 普通窗口。\n\n",
+ "desc": " 普通窗口。\r\n",
"name": "WIDGET_TYPE_NORMAL_WINDOW"
},
{
- "desc": " overlay窗口。\n\n",
+ "desc": " overlay窗口。\r\n",
"name": "WIDGET_TYPE_OVERLAY"
},
{
- "desc": " 工具条。\n\n",
+ "desc": " 工具条。\r\n",
"name": "WIDGET_TYPE_TOOL_BAR"
},
{
- "desc": " 对话框。\n\n",
+ "desc": " 对话框。\r\n",
"name": "WIDGET_TYPE_DIALOG"
},
{
- "desc": " 弹出窗口。\n\n",
+ "desc": " 弹出窗口。\r\n",
"name": "WIDGET_TYPE_POPUP"
},
{
- "desc": " system bar window\n\n",
+ "desc": " system bar window\r\n",
"name": "WIDGET_TYPE_SYSTEM_BAR"
},
{
- "desc": " 精灵窗口。\n\n",
+ "desc": " 精灵窗口。\r\n",
"name": "WIDGET_TYPE_SPRITE"
},
{
- "desc": " 键盘窗口。\n\n",
+ "desc": " 键盘窗口。\r\n",
"name": "WIDGET_TYPE_KEYBOARD"
},
{
- "desc": " 拖放状态窗口。\n\n",
+ "desc": " 拖放状态窗口。\r\n",
"name": "WIDGET_TYPE_DND"
},
{
- "desc": " 文本控件。\n\n",
+ "desc": " 文本控件。\r\n",
"name": "WIDGET_TYPE_LABEL"
},
{
- "desc": " 按钮控件。\n\n",
+ "desc": " 按钮控件。\r\n",
"name": "WIDGET_TYPE_BUTTON"
},
{
- "desc": " 图片控件。\n\n",
+ "desc": " 图片控件。\r\n",
"name": "WIDGET_TYPE_IMAGE"
},
{
- "desc": " 文本编辑控件。\n\n",
+ "desc": " 文本编辑控件。\r\n",
"name": "WIDGET_TYPE_EDIT"
},
{
- "desc": " 进度条控件。\n\n",
+ "desc": " 进度条控件。\r\n",
"name": "WIDGET_TYPE_PROGRESS_BAR"
},
{
- "desc": " 分组控件。\n\n",
+ "desc": " 分组控件。\r\n",
"name": "WIDGET_TYPE_GROUP_BOX"
},
{
- "desc": " 多选按钮控件。\n\n",
+ "desc": " 多选按钮控件。\r\n",
"name": "WIDGET_TYPE_CHECK_BUTTON"
},
{
- "desc": " 单选按钮控件。\n\n",
+ "desc": " 单选按钮控件。\r\n",
"name": "WIDGET_TYPE_RADIO_BUTTON"
},
{
- "desc": " 对话框标题。\n\n",
+ "desc": " 对话框标题。\r\n",
"name": "WIDGET_TYPE_DIALOG_TITLE"
},
{
- "desc": " 对话框客户区域。\n\n",
+ "desc": " 对话框客户区域。\r\n",
"name": "WIDGET_TYPE_DIALOG_CLIENT"
},
{
- "desc": " 滑块控件。\n\n",
+ "desc": " 滑块控件。\r\n",
"name": "WIDGET_TYPE_SLIDER"
},
{
- "desc": " 视图控件。\n\n",
+ "desc": " 视图控件。\r\n",
"name": "WIDGET_TYPE_VIEW"
},
{
- "desc": " 下拉选择框控件。\n\n",
+ "desc": " 下拉选择框控件。\r\n",
"name": "WIDGET_TYPE_COMBO_BOX"
},
{
- "desc": " 下拉选择框的列表项控件。\n\n",
+ "desc": " 下拉选择框的列表项控件。\r\n",
"name": "WIDGET_TYPE_COMBO_BOX_ITEM"
},
{
- "desc": " 滑动视图控件。\n\n",
+ "desc": " 滑动视图控件。\r\n",
"name": "WIDGET_TYPE_SLIDE_VIEW"
},
{
- "desc": " 滑动视图的指示器控件。\n\n",
+ "desc": " 滑动视图的指示器控件。\r\n",
"name": "WIDGET_TYPE_SLIDE_INDICATOR"
},
{
- "desc": " 滑动视图的指示器控件(圆弧显示)。\n\n",
+ "desc": " 滑动视图的指示器控件(圆弧显示)。\r\n",
"name": "WIDGET_TYPE_SLIDE_INDICATOR_ARC"
},
{
- "desc": " 多页控件。\n\n",
+ "desc": " 多页控件。\r\n",
"name": "WIDGET_TYPE_PAGES"
},
{
- "desc": " 标签按钮控件。\n\n",
+ "desc": " 标签按钮控件。\r\n",
"name": "WIDGET_TYPE_TAB_BUTTON"
},
{
- "desc": " 标签控件。\n\n",
+ "desc": " 标签控件。\r\n",
"name": "WIDGET_TYPE_TAB_CONTROL"
},
{
- "desc": " 标签按钮分组控件。\n\n",
+ "desc": " 标签按钮分组控件。\r\n",
"name": "WIDGET_TYPE_TAB_BUTTON_GROUP"
},
{
- "desc": " 按钮分组控件。\n\n",
+ "desc": " 按钮分组控件。\r\n",
"name": "WIDGET_TYPE_BUTTON_GROUP"
},
{
- "desc": " 候选字控件。\n\n",
+ "desc": " 候选字控件。\r\n",
"name": "WIDGET_TYPE_CANDIDATES"
},
{
- "desc": " 数值编辑控件。\n\n",
+ "desc": " 数值编辑控件。\r\n",
"name": "WIDGET_TYPE_SPIN_BOX"
},
{
- "desc": " 拖动块控件。\n\n",
+ "desc": " 拖动块控件。\r\n",
"name": "WIDGET_TYPE_DRAGGER"
},
{
- "desc": " 滚动条控件。\n\n",
+ "desc": " 滚动条控件。\r\n",
"name": "WIDGET_TYPE_SCROLL_BAR"
},
{
- "desc": " 桌面版滚动条控件。\n\n",
+ "desc": " 桌面版滚动条控件。\r\n",
"name": "WIDGET_TYPE_SCROLL_BAR_DESKTOP"
},
{
- "desc": " 移动版滚动条控件。\n\n",
+ "desc": " 移动版滚动条控件。\r\n",
"name": "WIDGET_TYPE_SCROLL_BAR_MOBILE"
},
{
- "desc": " 滚动视图控件。\n\n",
+ "desc": " 滚动视图控件。\r\n",
"name": "WIDGET_TYPE_SCROLL_VIEW"
},
{
- "desc": " 列表视图控件。\n\n",
+ "desc": " 列表视图控件。\r\n",
"name": "WIDGET_TYPE_LIST_VIEW"
},
{
- "desc": " 水平列表视图控件。\n\n",
+ "desc": " 水平列表视图控件。\r\n",
"name": "WIDGET_TYPE_LIST_VIEW_H"
},
{
- "desc": " 列表项控件。\n\n",
+ "desc": " 列表项控件。\r\n",
"name": "WIDGET_TYPE_LIST_ITEM"
},
{
- "desc": " 颜色选择器控件。\n\n",
+ "desc": " 颜色选择器控件。\r\n",
"name": "WIDGET_TYPE_COLOR_PICKER"
},
{
- "desc": " 颜色选择器组件控件。\n\n",
+ "desc": " 颜色选择器组件控件。\r\n",
"name": "WIDGET_TYPE_COLOR_COMPONENT"
},
{
- "desc": " 颜色块控件。\n\n",
+ "desc": " 颜色块控件。\r\n",
"name": "WIDGET_TYPE_COLOR_TILE"
},
{
- "desc": " 富文本控件。\n\n",
+ "desc": " 富文本控件。\r\n",
"name": "WIDGET_TYPE_RICH_TEXT"
},
{
- "desc": " AppBar控件。\n\n",
+ "desc": " AppBar控件。\r\n",
"name": "WIDGET_TYPE_APP_BAR"
},
{
- "desc": " 网格控件。\n\n",
+ "desc": " 网格控件。\r\n",
"name": "WIDGET_TYPE_GRID"
},
{
- "desc": " 网格项目控件。\n\n",
+ "desc": " 网格项目控件。\r\n",
"name": "WIDGET_TYPE_GRID_ITEM"
},
{
- "desc": " 行控件。\n\n",
+ "desc": " 行控件。\r\n",
"name": "WIDGET_TYPE_ROW"
},
{
- "desc": " 列控件。\n\n",
+ "desc": " 列控件。\r\n",
"name": "WIDGET_TYPE_COLUMN"
},
{
- "desc": " 电阻屏校准窗口。\n\n",
+ "desc": " 电阻屏校准窗口。\r\n",
"name": "WIDGET_TYPE_CALIBRATION_WIN"
}
],
@@ -11804,22 +11832,22 @@
},
{
"type": "enum",
- "desc": " 窗口的生命周期常量定义。\n\n",
+ "desc": " 窗口的生命周期常量定义。\r\n",
"consts": [
{
- "desc": " 初始状态。\n\n",
+ "desc": " 初始状态。\r\n",
"name": "WINDOW_STAGE_NONE"
},
{
- "desc": " 创建完成。\n\n",
+ "desc": " 创建完成。\r\n",
"name": "WINDOW_STAGE_CREATED"
},
{
- "desc": " 窗口已经打开(窗口打开动画完成后,处于该状态,直到窗口被关闭)\n\n",
+ "desc": " 窗口已经打开(窗口打开动画完成后,处于该状态,直到窗口被关闭)\r\n",
"name": "WINDOW_STAGE_OPENED"
},
{
- "desc": " 窗口已关闭。\n\n",
+ "desc": " 窗口已关闭。\r\n",
"name": "WINDOW_STAGE_CLOSED"
}
],
@@ -11833,18 +11861,18 @@
},
{
"type": "enum",
- "desc": " 窗口的closable常量定义。\n\n",
+ "desc": " 窗口的closable常量定义。\r\n",
"consts": [
{
- "desc": " 窗口可关闭。\n\n",
+ "desc": " 窗口可关闭。\r\n",
"name": "WINDOW_CLOSABLE_YES"
},
{
- "desc": " 窗口不可关闭。\n\n",
+ "desc": " 窗口不可关闭。\r\n",
"name": "WINDOW_CLOSABLE_NO"
},
{
- "desc": " 窗口需要确认后才能关闭。\n\n",
+ "desc": " 窗口需要确认后才能关闭。\r\n",
"name": "WINDOW_CLOSABLE_CONFIRM"
}
],
@@ -11858,30 +11886,30 @@
},
{
"type": "enum",
- "desc": " 位图标志常量定义。\n\n",
+ "desc": " 位图标志常量定义。\r\n",
"consts": [
{
- "desc": " 无特殊标志。\n\n",
+ "desc": " 无特殊标志。\r\n",
"name": "BITMAP_FLAG_NONE"
},
{
- "desc": " 不透明图片。\n\n",
+ "desc": " 不透明图片。\r\n",
"name": "BITMAP_FLAG_OPAQUE"
},
{
- "desc": " 图片内容不会变化。\n\n",
+ "desc": " 图片内容不会变化。\r\n",
"name": "BITMAP_FLAG_IMMUTABLE"
},
{
- "desc": " OpenGL Texture, bitmap的id是有效的texture id。\n\n",
+ "desc": " OpenGL Texture, bitmap的id是有效的texture id。\r\n",
"name": "BITMAP_FLAG_TEXTURE"
},
{
- "desc": " 如果是MUTABLE的图片,更新时需要设置此标志,底层可能会做特殊处理,比如更新图片到GPU。\n\n",
+ "desc": " 如果是MUTABLE的图片,更新时需要设置此标志,底层可能会做特殊处理,比如更新图片到GPU。\r\n",
"name": "BITMAP_FLAG_CHANGED"
},
{
- "desc": " 预乘alpha。\n\n",
+ "desc": " 预乘alpha。\r\n",
"name": "BITMAP_FLAG_PREMULTI_ALPHA"
}
],
@@ -11907,7 +11935,7 @@
"annotation": {
"scriptable": true
},
- "desc": " 获取子控件的个数。\n\n\n",
+ "desc": " 获取子控件的个数。\r\n\r\n",
"name": "widget_count_children",
"return": {
"type": "int32_t",
@@ -11930,7 +11958,7 @@
"annotation": {
"scriptable": true
},
- "desc": " 获取指定索引的子控件。\n\n\n",
+ "desc": " 获取指定索引的子控件。\r\n\r\n",
"name": "widget_get_child",
"return": {
"type": "widget_t*",
@@ -11948,7 +11976,7 @@
"annotation": {
"scriptable": true
},
- "desc": " 获取控件在父控件中的索引编号。\n\n\n",
+ "desc": " 获取控件在父控件中的索引编号。\r\n\r\n",
"name": "widget_index_of",
"return": {
"type": "int32_t",
@@ -11976,7 +12004,7 @@
"annotation": {
"scriptable": true
},
- "desc": " 移动控件。\n\n\n",
+ "desc": " 移动控件。\r\n\r\n",
"name": "widget_move",
"return": {
"type": "ret_t",
@@ -12004,7 +12032,7 @@
"annotation": {
"scriptable": true
},
- "desc": " 调整控件的大小。\n\n\n",
+ "desc": " 调整控件的大小。\r\n\r\n",
"name": "widget_resize",
"return": {
"type": "ret_t",
@@ -12042,7 +12070,7 @@
"annotation": {
"scriptable": true
},
- "desc": " 移动控件并调整控件的大小。\n\n\n",
+ "desc": " 移动控件并调整控件的大小。\r\n\r\n",
"name": "widget_move_resize",
"return": {
"type": "ret_t",
@@ -12065,7 +12093,7 @@
"annotation": {
"scriptable": true
},
- "desc": " 设置控件的值。\n 只是对widget\\_set\\_prop的包装,值的意义由子类控件决定。\n\n\n",
+ "desc": " 设置控件的值。\r\n 只是对widget\\_set\\_prop的包装,值的意义由子类控件决定。\r\n\r\n",
"name": "widget_set_value",
"return": {
"type": "ret_t",
@@ -12093,7 +12121,7 @@
"annotation": {
"scriptable": true
},
- "desc": " 设置控件的值(以动画形式变化到指定的值)。\n 只是对widget\\_set\\_prop的包装,值的意义由子类控件决定。\n\n\n",
+ "desc": " 设置控件的值(以动画形式变化到指定的值)。\r\n 只是对widget\\_set\\_prop的包装,值的意义由子类控件决定。\r\n\r\n",
"name": "widget_animate_value_to",
"return": {
"type": "ret_t",
@@ -12116,7 +12144,7 @@
"annotation": {
"scriptable": true
},
- "desc": " 增加控件的值。\n 只是对widget\\_set\\_prop的包装,值的意义由子类控件决定。\n\n\n",
+ "desc": " 增加控件的值。\r\n 只是对widget\\_set\\_prop的包装,值的意义由子类控件决定。\r\n\r\n",
"name": "widget_add_value",
"return": {
"type": "ret_t",
@@ -12137,7 +12165,7 @@
}
],
"annotation": {},
- "desc": " 设置控件的文本。\n 只是对widget\\_set\\_prop的包装,文本的意义由子类控件决定。\n\n\n",
+ "desc": " 设置控件的文本。\r\n 只是对widget\\_set\\_prop的包装,文本的意义由子类控件决定。\r\n\r\n",
"name": "widget_set_text",
"return": {
"type": "ret_t",
@@ -12160,7 +12188,7 @@
"annotation": {
"scriptable": true
},
- "desc": " 启用指定的主题。\n\n\n",
+ "desc": " 启用指定的主题。\r\n\r\n",
"name": "widget_use_style",
"return": {
"type": "ret_t",
@@ -12183,7 +12211,7 @@
"annotation": {
"scriptable": true
},
- "desc": " 设置控件的文本。\n 只是对widget\\_set\\_prop的包装,文本的意义由子类控件决定。\n\n\n",
+ "desc": " 设置控件的文本。\r\n 只是对widget\\_set\\_prop的包装,文本的意义由子类控件决定。\r\n\r\n",
"name": "widget_set_text_utf8",
"alias": "set_text",
"return": {
@@ -12207,7 +12235,7 @@
"annotation": {
"scriptable": true
},
- "desc": " 获取翻译之后的文本,然后调用widget_set_text。\n\n\n",
+ "desc": " 获取翻译之后的文本,然后调用widget_set_text。\r\n\r\n",
"name": "widget_set_tr_text",
"return": {
"type": "ret_t",
@@ -12225,7 +12253,7 @@
"annotation": {
"scriptable": true
},
- "desc": " 获取控件的值。只是对widget\\_get\\_prop的包装,值的意义由子类控件决定。\n\n\n",
+ "desc": " 获取控件的值。只是对widget\\_get\\_prop的包装,值的意义由子类控件决定。\r\n\r\n",
"name": "widget_get_value",
"return": {
"type": "int32_t",
@@ -12243,7 +12271,7 @@
"annotation": {
"scriptable": true
},
- "desc": " 获取控件的文本。\n 只是对widget\\_get\\_prop的包装,文本的意义由子类控件决定。\n\n\n",
+ "desc": " 获取控件的文本。\r\n 只是对widget\\_get\\_prop的包装,文本的意义由子类控件决定。\r\n\r\n",
"name": "widget_get_text",
"return": {
"type": "wchar_t*",
@@ -12264,7 +12292,7 @@
}
],
"annotation": {},
- "desc": " 将屏幕坐标转换成控件内的本地坐标,即相对于控件左上角的坐标。\n\n\n",
+ "desc": " 将屏幕坐标转换成控件内的本地坐标,即相对于控件左上角的坐标。\r\n\r\n",
"name": "widget_to_local",
"return": {
"type": "ret_t",
@@ -12285,7 +12313,7 @@
}
],
"annotation": {},
- "desc": " 将控件内的本地坐标转换成全局坐标。\n\n\n",
+ "desc": " 将控件内的本地坐标转换成全局坐标。\r\n\r\n",
"name": "widget_to_global",
"return": {
"type": "ret_t",
@@ -12306,7 +12334,7 @@
}
],
"annotation": {},
- "desc": " 将控件内的本地坐标转换成屏幕上的坐标。\n\n\n",
+ "desc": " 将控件内的本地坐标转换成屏幕上的坐标。\r\n\r\n",
"name": "widget_to_screen",
"return": {
"type": "ret_t",
@@ -12329,7 +12357,7 @@
"annotation": {
"scriptable": true
},
- "desc": " 设置控件的名称。\n\n\n",
+ "desc": " 设置控件的名称。\r\n\r\n",
"name": "widget_set_name",
"return": {
"type": "ret_t",
@@ -12352,7 +12380,7 @@
"annotation": {
"scriptable": true
},
- "desc": " 设置theme的名称,用于动态切换主题。名称与当前主题名称相同,则重新加载全部资源。\n\n > 目前只支持带有文件系统的平台。\n\n\n\n",
+ "desc": " 设置theme的名称,用于动态切换主题。名称与当前主题名称相同,则重新加载全部资源。\r\n\r\n > 目前只支持带有文件系统的平台。\r\n\r\n\r\n",
"name": "widget_set_theme",
"return": {
"type": "ret_t",
@@ -12375,7 +12403,7 @@
"annotation": {
"scriptable": true
},
- "desc": " 设置鼠标指针的图片名。\n\n\n",
+ "desc": " 设置鼠标指针的图片名。\r\n\r\n",
"name": "widget_set_cursor",
"return": {
"type": "ret_t",
@@ -12398,7 +12426,7 @@
"annotation": {
"scriptable": true
},
- "desc": " 设置控件的动画参数(仅用于在UI文件使用)。\n 请参考[控件动画](https://github.com/zlgopen/awtk/blob/master/docs/widget_animator.md)\n\n\n\n",
+ "desc": " 设置控件的动画参数(仅用于在UI文件使用)。\r\n 请参考[控件动画](https://github.com/zlgopen/awtk/blob/master/docs/widget_animator.md)\r\n\r\n\r\n",
"name": "widget_set_animation",
"return": {
"type": "ret_t",
@@ -12421,7 +12449,7 @@
"annotation": {
"scriptable": true
},
- "desc": " 创建动画。\n 请参考[控件动画](https://github.com/zlgopen/awtk/blob/master/docs/widget_animator.md)\n\n * 除非指定auto_start=false,动画创建后自动启动。\n * 除非指定auto_destroy=false,动画播放完成后自动销毁。\n\n\n\n",
+ "desc": " 创建动画。\r\n 请参考[控件动画](https://github.com/zlgopen/awtk/blob/master/docs/widget_animator.md)\r\n\r\n * 除非指定auto_start=false,动画创建后自动启动。\r\n * 除非指定auto_destroy=false,动画播放完成后自动销毁。\r\n\r\n\r\n",
"name": "widget_create_animator",
"return": {
"type": "ret_t",
@@ -12444,7 +12472,7 @@
"annotation": {
"scriptable": true
},
- "desc": " 播放动画。\n 请参考[控件动画](https://github.com/zlgopen/awtk/blob/master/docs/widget_animator.md)\n\n * 1.widget为NULL时,播放所有名称为name的动画。\n * 2.name为NULL时,播放所有widget相关的动画。\n * 3.widget和name均为NULL,播放所有动画。\n\n\n\n",
+ "desc": " 播放动画。\r\n 请参考[控件动画](https://github.com/zlgopen/awtk/blob/master/docs/widget_animator.md)\r\n\r\n * 1.widget为NULL时,播放所有名称为name的动画。\r\n * 2.name为NULL时,播放所有widget相关的动画。\r\n * 3.widget和name均为NULL,播放所有动画。\r\n\r\n\r\n",
"name": "widget_start_animator",
"return": {
"type": "ret_t",
@@ -12472,7 +12500,7 @@
"annotation": {
"scriptable": true
},
- "desc": " 设置动画的时间倍率,<0: 时间倒退,<1: 时间变慢,>1 时间变快。\n 请参考[控件动画](https://github.com/zlgopen/awtk/blob/master/docs/widget_animator.md)\n\n * 1.widget为NULL时,设置所有名称为name的动画的时间倍率。\n * 2.name为NULL时,设置所有widget相关的动画的时间倍率。\n * 3.widget和name均为NULL,设置所有动画的时间倍率。\n\n\n\n",
+ "desc": " 设置动画的时间倍率,<0: 时间倒退,<1: 时间变慢,>1 时间变快。\r\n 请参考[控件动画](https://github.com/zlgopen/awtk/blob/master/docs/widget_animator.md)\r\n\r\n * 1.widget为NULL时,设置所有名称为name的动画的时间倍率。\r\n * 2.name为NULL时,设置所有widget相关的动画的时间倍率。\r\n * 3.widget和name均为NULL,设置所有动画的时间倍率。\r\n\r\n\r\n",
"name": "widget_set_animator_time_scale",
"return": {
"type": "ret_t",
@@ -12495,7 +12523,7 @@
"annotation": {
"scriptable": true
},
- "desc": " 暂停动画。\n 请参考[控件动画](https://github.com/zlgopen/awtk/blob/master/docs/widget_animator.md)\n\n * 1.widget为NULL时,暂停所有名称为name的动画。\n * 2.name为NULL时,暂停所有widget相关的动画。\n * 3.widget和name均为NULL,暂停所有动画。\n\n\n\n",
+ "desc": " 暂停动画。\r\n 请参考[控件动画](https://github.com/zlgopen/awtk/blob/master/docs/widget_animator.md)\r\n\r\n * 1.widget为NULL时,暂停所有名称为name的动画。\r\n * 2.name为NULL时,暂停所有widget相关的动画。\r\n * 3.widget和name均为NULL,暂停所有动画。\r\n\r\n\r\n",
"name": "widget_pause_animator",
"return": {
"type": "ret_t",
@@ -12518,7 +12546,7 @@
"annotation": {
"scriptable": true
},
- "desc": " 查找指定名称的动画。\n\n\n\n",
+ "desc": " 查找指定名称的动画。\r\n\r\n\r\n",
"name": "widget_find_animator",
"return": {
"type": "widget_animator_t*",
@@ -12541,7 +12569,7 @@
"annotation": {
"scriptable": true
},
- "desc": " 停止动画(控件的相应属性回归原位)。\n 请参考[控件动画](https://github.com/zlgopen/awtk/blob/master/docs/widget_animator.md)\n\n * 1.widget为NULL时,停止所有名称为name的动画。\n * 2.name为NULL时,停止所有widget相关的动画。\n * 3.widget和name均为NULL,停止所有动画。\n\n\n\n",
+ "desc": " 停止动画(控件的相应属性回归原位)。\r\n 请参考[控件动画](https://github.com/zlgopen/awtk/blob/master/docs/widget_animator.md)\r\n\r\n * 1.widget为NULL时,停止所有名称为name的动画。\r\n * 2.name为NULL时,停止所有widget相关的动画。\r\n * 3.widget和name均为NULL,停止所有动画。\r\n\r\n\r\n",
"name": "widget_stop_animator",
"return": {
"type": "ret_t",
@@ -12564,7 +12592,7 @@
"annotation": {
"scriptable": true
},
- "desc": " 销毁动画。\n 请参考[控件动画](https://github.com/zlgopen/awtk/blob/master/docs/widget_animator.md)\n\n * 1.widget为NULL时,销毁所有名称为name的动画。\n * 2.name为NULL时,销毁所有widget相关的动画。\n * 3.widget和name均为NULL,销毁所有动画。\n\n\n\n",
+ "desc": " 销毁动画。\r\n 请参考[控件动画](https://github.com/zlgopen/awtk/blob/master/docs/widget_animator.md)\r\n\r\n * 1.widget为NULL时,销毁所有名称为name的动画。\r\n * 2.name为NULL时,销毁所有widget相关的动画。\r\n * 3.widget和name均为NULL,销毁所有动画。\r\n\r\n\r\n",
"name": "widget_destroy_animator",
"return": {
"type": "ret_t",
@@ -12587,7 +12615,7 @@
"annotation": {
"scriptable": true
},
- "desc": " 设置控件的可用性。\n\n\n",
+ "desc": " 设置控件的可用性。\r\n\r\n",
"name": "widget_set_enable",
"return": {
"type": "ret_t",
@@ -12610,7 +12638,7 @@
"annotation": {
"scriptable": true
},
- "desc": " 设置控件是否启用反馈。\n\n\n",
+ "desc": " 设置控件是否启用反馈。\r\n\r\n",
"name": "widget_set_feedback",
"return": {
"type": "ret_t",
@@ -12633,7 +12661,7 @@
"annotation": {
"scriptable": true
},
- "desc": " 设置控件的floating标志。\n\n\n",
+ "desc": " 设置控件的floating标志。\r\n\r\n",
"name": "widget_set_floating",
"return": {
"type": "ret_t",
@@ -12656,7 +12684,7 @@
"annotation": {
"scriptable": true
},
- "desc": " 设置控件的是否聚焦。\n\n\n",
+ "desc": " 设置控件的是否聚焦。\r\n\r\n",
"name": "widget_set_focused",
"return": {
"type": "ret_t",
@@ -12677,7 +12705,7 @@
}
],
"annotation": {},
- "desc": " 设置控件的状态。\n\n\n",
+ "desc": " 设置控件的状态。\r\n\r\n",
"name": "widget_set_state",
"return": {
"type": "ret_t",
@@ -12698,7 +12726,7 @@
}
],
"annotation": {},
- "desc": " 设置控件的不透明度。\n\n>在嵌入式平台,半透明效果会使性能大幅下降,请谨慎使用。\n\n\n\n",
+ "desc": " 设置控件的不透明度。\r\n\r\n>在嵌入式平台,半透明效果会使性能大幅下降,请谨慎使用。\r\n\r\n\r\n",
"name": "widget_set_opacity",
"return": {
"type": "ret_t",
@@ -12714,7 +12742,7 @@
}
],
"annotation": {},
- "desc": " 销毁全部子控件。\n\n\n",
+ "desc": " 销毁全部子控件。\r\n\r\n",
"name": "widget_destroy_children",
"return": {
"type": "ret_t",
@@ -12735,7 +12763,7 @@
}
],
"annotation": {},
- "desc": " 加入一个子控件。\n\n\n",
+ "desc": " 加入一个子控件。\r\n\r\n",
"name": "widget_add_child",
"return": {
"type": "ret_t",
@@ -12756,7 +12784,7 @@
}
],
"annotation": {},
- "desc": " 移出指定的子控件(并不销毁)。\n\n\n",
+ "desc": " 移出指定的子控件(并不销毁)。\r\n\r\n",
"name": "widget_remove_child",
"return": {
"type": "ret_t",
@@ -12782,7 +12810,7 @@
}
],
"annotation": {},
- "desc": " 插入子控件到指定的位置。\n\n\n",
+ "desc": " 插入子控件到指定的位置。\r\n\r\n",
"name": "widget_insert_child",
"return": {
"type": "ret_t",
@@ -12803,7 +12831,7 @@
}
],
"annotation": {},
- "desc": " 调整控件在父控件中的位置序数。\n\n\n",
+ "desc": " 调整控件在父控件中的位置序数。\r\n\r\n",
"name": "widget_restack",
"return": {
"type": "ret_t",
@@ -12826,7 +12854,7 @@
"annotation": {
"scriptable": true
},
- "desc": " 查找指定名称的子控件(同widget_lookup(widget, name, FALSE))。\n\n\n",
+ "desc": " 查找指定名称的子控件(同widget_lookup(widget, name, FALSE))。\r\n\r\n",
"name": "widget_child",
"return": {
"type": "widget_t*",
@@ -12854,7 +12882,7 @@
"annotation": {
"scriptable": true
},
- "desc": " 查找指定名称的子控件(返回第一个)。\n\n\n",
+ "desc": " 查找指定名称的子控件(返回第一个)。\r\n\r\n",
"name": "widget_lookup",
"return": {
"type": "widget_t*",
@@ -12882,7 +12910,7 @@
"annotation": {
"scriptable": true
},
- "desc": " 查找指定类型的子控件(返回第一个)。\n\n\n",
+ "desc": " 查找指定类型的子控件(返回第一个)。\r\n\r\n",
"name": "widget_lookup_by_type",
"return": {
"type": "widget_t*",
@@ -12910,7 +12938,7 @@
"annotation": {
"scriptable": true
},
- "desc": " 设置控件的可见性。\n\n\n",
+ "desc": " 设置控件的可见性。\r\n\r\n",
"name": "widget_set_visible",
"return": {
"type": "ret_t",
@@ -12933,7 +12961,7 @@
"annotation": {
"scriptable": true
},
- "desc": " 设置控件的可见性(不触发repaint和relayout)。\n\n\n",
+ "desc": " 设置控件的可见性(不触发repaint和relayout)。\r\n\r\n",
"name": "widget_set_visible_only",
"return": {
"type": "ret_t",
@@ -12956,7 +12984,7 @@
"annotation": {
"scriptable": true
},
- "desc": " 设置控件是否接受用户事件。\n\n\n",
+ "desc": " 设置控件是否接受用户事件。\r\n\r\n",
"name": "widget_set_sensitive",
"return": {
"type": "ret_t",
@@ -12989,13 +13017,51 @@
"annotation": {
"scriptable": "custom"
},
- "desc": " 注册指定事件的处理函数。\n 使用示例:\n\n ```c\n widget_t* ok = button_create(win, 10, 10, 80, 30);\n widget_on(ok, EVT_CLICK, on_click, NULL);\n\n ```\n\n\n",
+ "desc": " 注册指定事件的处理函数。\r\n 使用示例:\r\n\r\n ```c\r\n widget_t* ok = button_create(win, 10, 10, 80, 30);\r\n widget_on(ok, EVT_CLICK, on_click, NULL);\r\n\r\n ```\r\n\r\n",
"name": "widget_on",
"return": {
"type": "int32_t",
"desc": "返回id,用于widget_off。"
}
},
+ {
+ "params": [
+ {
+ "type": "widget_t*",
+ "name": "widget",
+ "desc": "控件对象。"
+ },
+ {
+ "type": "uint32_t",
+ "name": "type",
+ "desc": "事件类型。"
+ },
+ {
+ "type": "event_func_t",
+ "name": "on_event",
+ "desc": "事件处理函数。"
+ },
+ {
+ "type": "void*",
+ "name": "ctx",
+ "desc": "事件处理函数上下文。"
+ },
+ {
+ "type": "uint32_t",
+ "name": "tag",
+ "desc": "tag。"
+ }
+ ],
+ "annotation": {
+ "scriptable": "custom"
+ },
+ "desc": " 注册指定tag的事件处理函数。\r\n\r\n > 注册时指定一个tag,可用widget\\_off\\_by\\_tag注销相同tag的事件处理函数。\r\n\r\n\r\n",
+ "name": "widget_on_with_tag",
+ "return": {
+ "type": "int32_t",
+ "desc": "返回id,用于widget_off。"
+ }
+ },
{
"params": [
{
@@ -13012,7 +13078,7 @@
"annotation": {
"scriptable": true
},
- "desc": " 注销指定事件的处理函数。\n\n\n",
+ "desc": " 注销指定事件的处理函数。\r\n\r\n",
"name": "widget_off",
"return": {
"type": "ret_t",
@@ -13048,7 +13114,7 @@
}
],
"annotation": {},
- "desc": " 为指定名称的子控件注册指定事件的处理函数。\n 递归查找指定名称的子控件,然后为其注册指定事件的处理函数。\n\n\n",
+ "desc": " 为指定名称的子控件注册指定事件的处理函数。\r\n 递归查找指定名称的子控件,然后为其注册指定事件的处理函数。\r\n\r\n",
"name": "widget_child_on",
"return": {
"type": "int32_t",
@@ -13079,13 +13145,55 @@
}
],
"annotation": {},
- "desc": " 注销指定事件的处理函数。\n 仅用于辅助实现脚本绑定。\n\n\n",
+ "desc": " 注销指定函数的事件处理函数。\r\n\r\n",
"name": "widget_off_by_func",
"return": {
"type": "ret_t",
"desc": "返回RET_OK表示成功,否则表示失败。"
}
},
+ {
+ "params": [
+ {
+ "type": "widget_t*",
+ "name": "widget",
+ "desc": "控件对象。"
+ },
+ {
+ "type": "void*",
+ "name": "ctx",
+ "desc": "事件处理函数上下文。"
+ }
+ ],
+ "annotation": {},
+ "desc": " 注销指定ctx的事件处理函数。\r\n\r\n",
+ "name": "widget_off_by_ctx",
+ "return": {
+ "type": "ret_t",
+ "desc": "返回RET_OK表示成功,否则表示失败。"
+ }
+ },
+ {
+ "params": [
+ {
+ "type": "widget_t*",
+ "name": "widget",
+ "desc": "控件对象。"
+ },
+ {
+ "type": "uint32_t",
+ "name": "tag",
+ "desc": "tag。"
+ }
+ ],
+ "annotation": {},
+ "desc": " 注销指定tag的事件处理函数。\r\n\r\n",
+ "name": "widget_off_by_tag",
+ "return": {
+ "type": "ret_t",
+ "desc": "返回RET_OK表示成功,否则表示失败。"
+ }
+ },
{
"params": [
{
@@ -13100,7 +13208,7 @@
}
],
"annotation": {},
- "desc": " 请求重绘指定的区域,如果widget->dirty已经为TRUE,直接返回。\n\n\n",
+ "desc": " 请求重绘指定的区域,如果widget->dirty已经为TRUE,直接返回。\r\n\r\n",
"name": "widget_invalidate",
"return": {
"type": "ret_t",
@@ -13123,7 +13231,7 @@
"annotation": {
"scriptable": true
},
- "desc": " 请求强制重绘控件。\n\n\n",
+ "desc": " 请求强制重绘控件。\r\n\r\n",
"name": "widget_invalidate_force",
"return": {
"type": "ret_t",
@@ -13146,7 +13254,7 @@
"annotation": {
"private": true
},
- "desc": " 绘制控件到一个canvas上。\n\n\n",
+ "desc": " 绘制控件到一个canvas上。\r\n\r\n",
"name": "widget_paint",
"return": {
"type": "ret_t",
@@ -13167,7 +13275,7 @@
}
],
"annotation": {},
- "desc": " 分发一个事件。\n\n\n",
+ "desc": " 分发一个事件。\r\n\r\n",
"name": "widget_dispatch",
"return": {
"type": "ret_t",
@@ -13193,7 +13301,7 @@
}
],
"annotation": {},
- "desc": " 获取控件指定属性的值。\n\n\n",
+ "desc": " 获取控件指定属性的值。\r\n\r\n",
"name": "widget_get_prop",
"return": {
"type": "ret_t",
@@ -13219,7 +13327,7 @@
}
],
"annotation": {},
- "desc": " 获取控件指定属性的缺省值(在持久化控件时,无需保存缺省值)。\n\n\n",
+ "desc": " 获取控件指定属性的缺省值(在持久化控件时,无需保存缺省值)。\r\n\r\n",
"name": "widget_get_prop_default_value",
"return": {
"type": "ret_t",
@@ -13245,7 +13353,7 @@
}
],
"annotation": {},
- "desc": " 设置控件指定属性的值。\n\n\n",
+ "desc": " 设置控件指定属性的值。\r\n\r\n",
"name": "widget_set_prop",
"return": {
"type": "ret_t",
@@ -13273,7 +13381,7 @@
"annotation": {
"scriptable": true
},
- "desc": " 设置字符串格式的属性。\n\n\n",
+ "desc": " 设置字符串格式的属性。\r\n\r\n",
"name": "widget_set_prop_str",
"return": {
"type": "ret_t",
@@ -13301,7 +13409,7 @@
"annotation": {
"scriptable": true
},
- "desc": " 获取字符串格式的属性。\n\n\n",
+ "desc": " 获取字符串格式的属性。\r\n\r\n",
"name": "widget_get_prop_str",
"return": {
"type": "const char*",
@@ -13327,7 +13435,7 @@
}
],
"annotation": {},
- "desc": " 设置指针格式的属性。\n\n\n",
+ "desc": " 设置指针格式的属性。\r\n\r\n",
"name": "widget_set_prop_pointer",
"return": {
"type": "ret_t",
@@ -13348,7 +13456,7 @@
}
],
"annotation": {},
- "desc": " 获取指针格式的属性。\n\n\n",
+ "desc": " 获取指针格式的属性。\r\n\r\n",
"name": "widget_get_prop_pointer",
"return": {
"type": "void*",
@@ -13376,7 +13484,7 @@
"annotation": {
"scriptable": true
},
- "desc": " 设置整数格式的属性。\n\n\n",
+ "desc": " 设置整数格式的属性。\r\n\r\n",
"name": "widget_set_prop_int",
"return": {
"type": "ret_t",
@@ -13404,7 +13512,7 @@
"annotation": {
"scriptable": true
},
- "desc": " 获取整数格式的属性。\n\n\n",
+ "desc": " 获取整数格式的属性。\r\n\r\n",
"name": "widget_get_prop_int",
"return": {
"type": "int32_t",
@@ -13432,7 +13540,7 @@
"annotation": {
"scriptable": true
},
- "desc": " 设置布尔格式的属性。\n\n\n",
+ "desc": " 设置布尔格式的属性。\r\n\r\n",
"name": "widget_set_prop_bool",
"return": {
"type": "ret_t",
@@ -13460,7 +13568,7 @@
"annotation": {
"scriptable": true
},
- "desc": " 获取布尔格式的属性。\n\n\n",
+ "desc": " 获取布尔格式的属性。\r\n\r\n",
"name": "widget_get_prop_bool",
"return": {
"type": "bool_t",
@@ -13478,7 +13586,7 @@
"annotation": {
"scriptable": true
},
- "desc": " 判断当前控件所在的窗口是否已经打开。\n\n\n",
+ "desc": " 判断当前控件所在的窗口是否已经打开。\r\n\r\n",
"name": "widget_is_window_opened",
"return": {
"type": "bool_t",
@@ -13496,7 +13604,7 @@
"annotation": {
"scriptable": true
},
- "desc": " 判断当前控件是否是窗口。\n\n\n",
+ "desc": " 判断当前控件是否是窗口。\r\n\r\n",
"name": "widget_is_window",
"return": {
"type": "bool_t",
@@ -13514,7 +13622,7 @@
"annotation": {
"scriptable": true
},
- "desc": " 判断当前控件是否是设计窗口。\n\n\n",
+ "desc": " 判断当前控件是否是设计窗口。\r\n\r\n",
"name": "widget_is_designing_window",
"return": {
"type": "bool_t",
@@ -13532,7 +13640,7 @@
"annotation": {
"scriptable": true
},
- "desc": " 判断当前控件是否是窗口管理器。\n\n\n",
+ "desc": " 判断当前控件是否是窗口管理器。\r\n\r\n",
"name": "widget_is_window_manager",
"return": {
"type": "bool_t",
@@ -13553,7 +13661,7 @@
}
],
"annotation": {},
- "desc": " 让指定子控件抓住事件。\n 控件抓住之后,事件直接分发给该控件。\n\n\n",
+ "desc": " 让指定子控件抓住事件。\r\n 控件抓住之后,事件直接分发给该控件。\r\n\r\n",
"name": "widget_grab",
"return": {
"type": "ret_t",
@@ -13574,7 +13682,7 @@
}
],
"annotation": {},
- "desc": " 让指定子控件放弃抓住事件。\n\n\n",
+ "desc": " 让指定子控件放弃抓住事件。\r\n\r\n",
"name": "widget_ungrab",
"return": {
"type": "ret_t",
@@ -13602,7 +13710,7 @@
"annotation": {
"scriptable": "custom"
},
- "desc": " 遍历当前控件及子控件。\n\n\n",
+ "desc": " 遍历当前控件及子控件。\r\n\r\n",
"name": "widget_foreach",
"return": {
"type": "ret_t",
@@ -13620,7 +13728,7 @@
"annotation": {
"scriptable": true
},
- "desc": " 获取当前控件所在的窗口。\n\n\n",
+ "desc": " 获取当前控件所在的窗口。\r\n\r\n",
"name": "widget_get_window",
"return": {
"type": "widget_t*",
@@ -13638,7 +13746,7 @@
"annotation": {
"scriptable": true
},
- "desc": " 获取当前的窗口管理器。\n\n\n",
+ "desc": " 获取当前的窗口管理器。\r\n\r\n",
"name": "widget_get_window_manager",
"return": {
"type": "widget_t*",
@@ -13656,7 +13764,7 @@
"annotation": {
"scriptable": true
},
- "desc": " 获取当前控件的类型名称。\n\n\n",
+ "desc": " 获取当前控件的类型名称。\r\n\r\n",
"name": "widget_get_type",
"return": {
"type": "char*",
@@ -13679,7 +13787,7 @@
"annotation": {
"scriptable": true
},
- "desc": " clone。\n\n\n",
+ "desc": " clone。\r\n\r\n",
"name": "widget_clone",
"return": {
"type": "widget_t*",
@@ -13702,7 +13810,7 @@
"annotation": {
"scriptable": true
},
- "desc": " 判断两个widget是否相同。\n\n\n",
+ "desc": " 判断两个widget是否相同。\r\n\r\n",
"name": "widget_equal",
"return": {
"type": "bool_t",
@@ -13728,7 +13836,7 @@
}
],
"annotation": {},
- "desc": " 创建定时器。\n 该定时器在控件销毁时自动销毁,**timer\\_info\\_t**的ctx为widget。\n 如果定时器的生命周期与控件无关,请直接调用**timer_add**,以避免不必要的内存开销。\n\n 使用示例:\n\n ```c\n static ret_t digit_clock_on_timer(const timer_info_t* info) {\n widget_t* widget = WIDGET(info->ctx);\n\n return RET_REPEAT;\n }\n ...\n widget_add_timer(widget, digit_clock_on_timer, 1000);\n\n ```\n\n\n",
+ "desc": " 创建定时器。\r\n 该定时器在控件销毁时自动销毁,**timer\\_info\\_t**的ctx为widget。\r\n 如果定时器的生命周期与控件无关,请直接调用**timer_add**,以避免不必要的内存开销。\r\n\r\n 使用示例:\r\n\r\n ```c\r\n static ret_t digit_clock_on_timer(const timer_info_t* info) {\r\n widget_t* widget = WIDGET(info->ctx);\r\n\r\n return RET_REPEAT;\r\n }\r\n ...\r\n widget_add_timer(widget, digit_clock_on_timer, 1000);\r\n\r\n ```\r\n\r\n",
"name": "widget_add_timer",
"return": {
"type": "uint32_t",
@@ -13749,7 +13857,7 @@
}
],
"annotation": {},
- "desc": " 创建idle。\n 该idle在控件销毁时自动销毁,**idle\\_info\\_t**的ctx为widget。\n 如果idle的生命周期与控件无关,请直接调用**idle_add**,以避免不必要的内存开销。\n\n\n",
+ "desc": " 创建idle。\r\n 该idle在控件销毁时自动销毁,**idle\\_info\\_t**的ctx为widget。\r\n 如果idle的生命周期与控件无关,请直接调用**idle_add**,以避免不必要的内存开销。\r\n\r\n",
"name": "widget_add_idle",
"return": {
"type": "uint32_t",
@@ -13775,7 +13883,7 @@
}
],
"annotation": {},
- "desc": " 加载图片。\n 返回的bitmap对象只在当前调用有效,请不保存对bitmap对象的引用。\n\n\n 使用示例:\n\n ```c\n bitmap_t bitmap;\n widget_load_image(widget, \"myimage\", &bitmap);\n\n ```\n\n\n",
+ "desc": " 加载图片。\r\n 返回的bitmap对象只在当前调用有效,请不保存对bitmap对象的引用。\r\n\r\n\r\n 使用示例:\r\n\r\n ```c\r\n bitmap_t bitmap;\r\n widget_load_image(widget, \"myimage\", &bitmap);\r\n\r\n ```\r\n\r\n",
"name": "widget_load_image",
"return": {
"type": "ret_t",
@@ -13796,7 +13904,7 @@
}
],
"annotation": {},
- "desc": " 卸载图片。\n\n> 一般不需要调用,只有确认在图片不再需要时才调用本函数卸载。\n\n\n\n",
+ "desc": " 卸载图片。\r\n\r\n> 一般不需要调用,只有确认在图片不再需要时才调用本函数卸载。\r\n\r\n\r\n",
"name": "widget_unload_image",
"return": {
"type": "ret_t",
@@ -13822,7 +13930,7 @@
}
],
"annotation": {},
- "desc": " 加载资源。\n\n 使用示例:\n\n ```c\n const asset_info_t* asset = widget_load_asset(widget, ASSET_TYPE_IMAGE, \"mysvg\");\n ...\n widget_unload_asset(widget, asset);\n ```\n\n\n",
+ "desc": " 加载资源。\r\n\r\n 使用示例:\r\n\r\n ```c\r\n const asset_info_t* asset = widget_load_asset(widget, ASSET_TYPE_IMAGE, \"mysvg\");\r\n ...\r\n widget_unload_asset(widget, asset);\r\n ```\r\n\r\n",
"name": "widget_load_asset",
"return": {
"type": "const asset_info_t*",
@@ -13843,7 +13951,7 @@
}
],
"annotation": {},
- "desc": " 卸载资源。\n\n 使用示例:\n\n ```c\n const asset_info_t* asset = widget_load_asset(widget, ASSET_TYPE_IMAGE, \"mysvg\");\n ...\n widget_unload_asset(widget, asset);\n ```\n\n\n",
+ "desc": " 卸载资源。\r\n\r\n 使用示例:\r\n\r\n ```c\r\n const asset_info_t* asset = widget_load_asset(widget, ASSET_TYPE_IMAGE, \"mysvg\");\r\n ...\r\n widget_unload_asset(widget, asset);\r\n ```\r\n\r\n",
"name": "widget_unload_asset",
"return": {
"type": "ret_t",
@@ -13862,7 +13970,7 @@
"cast": true,
"scriptable": true
},
- "desc": " 转换为widget对象(供脚本语言使用)。\n\n\n",
+ "desc": " 转换为widget对象(供脚本语言使用)。\r\n\r\n",
"name": "widget_cast",
"return": {
"type": "widget_t*",
@@ -13880,7 +13988,7 @@
"annotation": {
"scriptable": true
},
- "desc": " 销毁控件。\n 一般无需直接调用,关闭窗口时,自动销毁相关控件。\n\n\n",
+ "desc": " 销毁控件。\r\n 一般无需直接调用,关闭窗口时,自动销毁相关控件。\r\n\r\n",
"name": "widget_destroy",
"return": {
"type": "ret_t",
@@ -13898,7 +14006,7 @@
"annotation": {
"private": true
},
- "desc": " 判断当前控件是否是keyboard。\n\n> keyboard收到pointer事件时,不会让当前控件失去焦点。\n\n 在自定义软键盘时,将所有按钮放到一个容器当中,并设置为is_keyboard。\n\n ```c\n widget_set_prop_bool(group, WIDGET_PROP_IS_KEYBOARD, TRUE);\n ```\n\n\n\n",
+ "desc": " 判断当前控件是否是keyboard。\r\n\r\n> keyboard收到pointer事件时,不会让当前控件失去焦点。\r\n\r\n 在自定义软键盘时,将所有按钮放到一个容器当中,并设置为is_keyboard。\r\n\r\n ```c\r\n widget_set_prop_bool(group, WIDGET_PROP_IS_KEYBOARD, TRUE);\r\n ```\r\n\r\n\r\n",
"name": "widget_is_keyboard",
"return": {
"type": "ret_t",
@@ -13931,7 +14039,7 @@
"annotation": {
"private": true
},
- "desc": " 帮助子控件实现自己的绘制函数。\n\n\n",
+ "desc": " 帮助子控件实现自己的绘制函数。\r\n\r\n",
"name": "widget_paint_helper",
"return": {
"type": "ret_t",
@@ -13959,7 +14067,7 @@
"annotation": {
"private": true
},
- "desc": " 根据控件的style绘制边框矩形。\n\n\n",
+ "desc": " 根据控件的style绘制边框矩形。\r\n\r\n",
"name": "widget_stroke_border_rect",
"return": {
"type": "ret_t",
@@ -13992,7 +14100,7 @@
"annotation": {
"private": true
},
- "desc": " 根据控件的style绘制背景矩形。\n\n\n",
+ "desc": " 根据控件的style绘制背景矩形。\r\n\r\n",
"name": "widget_fill_bg_rect",
"return": {
"type": "ret_t",
@@ -14025,7 +14133,7 @@
"annotation": {
"private": true
},
- "desc": " 根据控件的style绘制前景矩形。\n\n\n",
+ "desc": " 根据控件的style绘制前景矩形。\r\n\r\n",
"name": "widget_fill_fg_rect",
"return": {
"type": "ret_t",
@@ -14048,7 +14156,7 @@
"annotation": {
"private": true
},
- "desc": " 从widget的style中取出字体名称、大小和颜色数据,设置到canvas中。\n\n\n\n",
+ "desc": " 从widget的style中取出字体名称、大小和颜色数据,设置到canvas中。\r\n\r\n\r\n",
"name": "widget_prepare_text_style",
"return": {
"type": "ret_t",
@@ -14071,7 +14179,7 @@
"annotation": {
"private": true
},
- "desc": " 计算文本的宽度。\n 字体由控件当前的状态和style决定。\n\n\n",
+ "desc": " 计算文本的宽度。\r\n 字体由控件当前的状态和style决定。\r\n\r\n",
"name": "widget_measure_text",
"return": {
"type": "float_t",
@@ -14094,7 +14202,7 @@
"annotation": {
"private": true
},
- "desc": " 递归分发事件到targe控件。\n\n\n",
+ "desc": " 递归分发事件到targe控件。\r\n\r\n",
"name": "widget_dispatch_event_to_target_recursive",
"return": {
"type": "ret_t",
@@ -14127,7 +14235,7 @@
"annotation": {
"private": true
},
- "desc": " 判断一个点是否在控件内。\n\n\n",
+ "desc": " 判断一个点是否在控件内。\r\n\r\n",
"name": "widget_is_point_in",
"return": {
"type": "bool_t",
@@ -14150,7 +14258,7 @@
"annotation": {
"private": true
},
- "desc": " 递归的分发一个事件到所有target子控件。\n\n\n",
+ "desc": " 递归的分发一个事件到所有target子控件。\r\n\r\n",
"name": "widget_dispatch_to_target",
"return": {
"type": "ret_t",
@@ -14173,7 +14281,7 @@
"annotation": {
"private": true
},
- "desc": " 递归的分发一个事件到所有key_target子控件。\n\n\n",
+ "desc": " 递归的分发一个事件到所有key_target子控件。\r\n\r\n",
"name": "widget_dispatch_to_key_target",
"return": {
"type": "ret_t",
@@ -14201,7 +14309,7 @@
"annotation": {
"private": true
},
- "desc": " 查找x/y坐标对应的子控件。\n\n\n",
+ "desc": " 查找x/y坐标对应的子控件。\r\n\r\n",
"name": "widget_find_target",
"return": {
"type": "widget*",
@@ -14219,7 +14327,7 @@
"annotation": {
"private": true
},
- "desc": " 语言改变后,重新翻译控件上的文本(包括子控件)。\n\n\n",
+ "desc": " 语言改变后,重新翻译控件上的文本(包括子控件)。\r\n\r\n",
"name": "widget_re_translate_text",
"return": {
"type": "ret_t",
@@ -14267,7 +14375,7 @@
"annotation": {
"private": true
},
- "desc": " 初始化控件。仅在子类控件构造函数中使用。\n\n > 请用widget\\_create代替本函数。\n\n @depreated\n\n\n",
+ "desc": " 初始化控件。仅在子类控件构造函数中使用。\r\n\r\n > 请用widget\\_create代替本函数。\r\n\r\n @depreated\r\n\r\n",
"name": "widget_init",
"return": {
"type": "widget_t*",
@@ -14310,7 +14418,7 @@
"annotation": {
"private": true
},
- "desc": " 创建控件。仅在子类控件构造函数中使用。\n\n\n",
+ "desc": " 创建控件。仅在子类控件构造函数中使用。\r\n\r\n",
"name": "widget_create",
"return": {
"type": "widget_t*",
@@ -14328,7 +14436,7 @@
"annotation": {
"private": true
},
- "desc": " 让控件根据自己当前状态更新style。\n\n\n",
+ "desc": " 让控件根据自己当前状态更新style。\r\n\r\n",
"name": "widget_update_style",
"return": {
"type": "ret_t",
@@ -14346,7 +14454,7 @@
"annotation": {
"private": true
},
- "desc": " 递归的把父控件的key_target设置为自己。\n\n\n\n",
+ "desc": " 递归的把父控件的key_target设置为自己。\r\n\r\n\r\n",
"name": "widget_set_as_key_target",
"return": {
"type": "ret_t",
@@ -14364,7 +14472,7 @@
"annotation": {
"private": true
},
- "desc": " 把焦点移动下一个控件。\n\n>widget必须是当前焦点控件。\n\n\n",
+ "desc": " 把焦点移动下一个控件。\r\n\r\n>widget必须是当前焦点控件。\r\n\r\n",
"name": "widget_focus_next",
"return": {
"type": "ret_t",
@@ -14382,7 +14490,7 @@
"annotation": {
"private": true
},
- "desc": " 把焦点移动前一个控件。\n\n>widget必须是当前焦点控件。\n\n\n",
+ "desc": " 把焦点移动前一个控件。\r\n\r\n>widget必须是当前焦点控件。\r\n\r\n",
"name": "widget_focus_prev",
"return": {
"type": "ret_t",
@@ -14410,7 +14518,7 @@
"annotation": {
"private": true
},
- "desc": " 把控件的状态转成获取style选要的状态,一般只在子类中使用。\n\n\n",
+ "desc": " 把控件的状态转成获取style选要的状态,一般只在子类中使用。\r\n\r\n",
"name": "widget_get_state_for_style",
"return": {
"type": "const char*",
@@ -14428,7 +14536,7 @@
"annotation": {
"scriptable": true
},
- "desc": " 布局当前控件及子控件。\n\n\n",
+ "desc": " 布局当前控件及子控件。\r\n\r\n",
"name": "widget_layout",
"return": {
"type": "ret_t",
@@ -14444,7 +14552,7 @@
}
],
"annotation": {},
- "desc": " layout子控件。\n\n\n",
+ "desc": " layout子控件。\r\n\r\n",
"name": "widget_layout_children",
"return": {
"type": "ret_t",
@@ -14467,7 +14575,7 @@
"annotation": {
"scriptable": true
},
- "desc": " 设置控件自己的布局参数。\n\n\n",
+ "desc": " 设置控件自己的布局参数。\r\n\r\n",
"name": "widget_set_self_layout",
"return": {
"type": "ret_t",
@@ -14490,7 +14598,7 @@
"annotation": {
"scriptable": true
},
- "desc": " 设置子控件的布局参数。\n\n\n",
+ "desc": " 设置子控件的布局参数。\r\n\r\n",
"name": "widget_set_children_layout",
"return": {
"type": "ret_t",
@@ -14528,7 +14636,7 @@
"annotation": {
"scriptable": true
},
- "desc": " 设置控件自己的布局(缺省布局器)参数(过时,请用widget\\_set\\_self\\_layout)。\n\n\n",
+ "desc": " 设置控件自己的布局(缺省布局器)参数(过时,请用widget\\_set\\_self\\_layout)。\r\n\r\n",
"name": "widget_set_self_layout_params",
"return": {
"type": "ret_t",
@@ -14556,7 +14664,7 @@
"annotation": {
"scriptable": true
},
- "desc": " 设置整数类型的style。\n\n\n",
+ "desc": " 设置整数类型的style。\r\n\r\n",
"name": "widget_set_style_int",
"return": {
"type": "ret_t",
@@ -14584,7 +14692,7 @@
"annotation": {
"scriptable": true
},
- "desc": " 设置字符串类型的style。\n\n\n",
+ "desc": " 设置字符串类型的style。\r\n\r\n",
"name": "widget_set_style_str",
"return": {
"type": "ret_t",
@@ -14612,7 +14720,7 @@
"annotation": {
"scriptable": true
},
- "desc": " 设置颜色类型的style。\n\n\n",
+ "desc": " 设置颜色类型的style。\r\n\r\n",
"name": "widget_set_style_color",
"return": {
"type": "ret_t",
@@ -14622,7 +14730,7 @@
{
"params": [],
"annotation": {},
- "desc": " 获取canvas对象。\n\n\n",
+ "desc": " 获取canvas对象。\r\n\r\n",
"name": "widget_get_canvas",
"return": {
"type": "canvas_t*",
@@ -14633,119 +14741,119 @@
"events": [
{
"name": "EVT_WILL_MOVE",
- "desc": " 控件移动前触发。\n\n",
+ "desc": " 控件移动前触发。\r\n",
"type": "event_t"
},
{
"name": "EVT_MOVE",
- "desc": " 控件移动后触发。\n\n",
+ "desc": " 控件移动后触发。\r\n",
"type": "event_t"
},
{
"name": "EVT_WILL_RESIZE",
- "desc": " 控件调整大小前触发。\n\n",
+ "desc": " 控件调整大小前触发。\r\n",
"type": "event_t"
},
{
"name": "EVT_RESIZE",
- "desc": " 控件调整大小后触发。\n\n",
+ "desc": " 控件调整大小后触发。\r\n",
"type": "event_t"
},
{
"name": "EVT_WILL_MOVE_RESIZE",
- "desc": " 控件移动并调整大小前触发。\n\n",
+ "desc": " 控件移动并调整大小前触发。\r\n",
"type": "event_t"
},
{
"name": "EVT_MOVE_RESIZE",
- "desc": " 控件移动并调整大小后触发。\n\n",
+ "desc": " 控件移动并调整大小后触发。\r\n",
"type": "event_t"
},
{
"name": "EVT_PROP_WILL_CHANGE",
- "desc": " 控件属性改变前触发(通过set_prop设置属性,才会触发)。\n\n",
+ "desc": " 控件属性改变前触发(通过set_prop设置属性,才会触发)。\r\n",
"type": "prop_change_event_t"
},
{
"name": "EVT_PROP_CHANGED",
- "desc": " 控件属性改变后触发(通过set_prop设置属性,才会触发)。\n\n",
+ "desc": " 控件属性改变后触发(通过set_prop设置属性,才会触发)。\r\n",
"type": "prop_change_event_t"
},
{
"name": "EVT_BEFORE_PAINT",
- "desc": " 控件绘制前触发。\n\n",
+ "desc": " 控件绘制前触发。\r\n",
"type": "paint_event_t"
},
{
"name": "EVT_AFTER_PAINT",
- "desc": " 控件绘制完成时触发。\n\n",
+ "desc": " 控件绘制完成时触发。\r\n",
"type": "paint_event_t"
},
{
"name": "EVT_FOCUS",
- "desc": " 控件得到焦点时触发。\n\n",
+ "desc": " 控件得到焦点时触发。\r\n",
"type": "event_t"
},
{
"name": "EVT_BLUR",
- "desc": " 控件失去焦点时触发。\n\n",
+ "desc": " 控件失去焦点时触发。\r\n",
"type": "event_t"
},
{
"name": "EVT_WHEEL",
- "desc": " 鼠标滚轮事件。\n\n",
+ "desc": " 鼠标滚轮事件。\r\n",
"type": "wheel_event_t"
},
{
"name": "EVT_POINTER_LEAVE",
- "desc": " 鼠标指针离开控件时触发。\n\n",
+ "desc": " 鼠标指针离开控件时触发。\r\n",
"type": "pointer_event_t"
},
{
"name": "EVT_POINTER_ENTER",
- "desc": " 鼠标指针进入控件时触发。\n\n",
+ "desc": " 鼠标指针进入控件时触发。\r\n",
"type": "pointer_event_t"
},
{
"name": "EVT_KEY_DOWN",
- "desc": " 键按下事件。\n\n",
+ "desc": " 键按下事件。\r\n",
"type": "pointer_event_t"
},
{
"name": "EVT_KEY_UP",
- "desc": " 键释放事件。\n\n",
+ "desc": " 键释放事件。\r\n",
"type": "pointer_event_t"
},
{
"name": "EVT_POINTER_DOWN",
- "desc": " 指针设备按下事件。\n\n",
+ "desc": " 指针设备按下事件。\r\n",
"type": "pointer_event_t"
},
{
"name": "EVT_POINTER_DOWN_ABORT",
- "desc": " 取消指针设备按下事件。\n\n",
+ "desc": " 取消指针设备按下事件。\r\n",
"type": "pointer_event_t"
},
{
"name": "EVT_POINTER_MOVE",
- "desc": " 指针设备移动事件。\n\n",
+ "desc": " 指针设备移动事件。\r\n",
"type": "pointer_event_t"
},
{
"name": "EVT_POINTER_UP",
- "desc": " 指针设备释放事件。\n\n",
+ "desc": " 指针设备释放事件。\r\n",
"type": "pointer_event_t"
},
{
"name": "EVT_DESTROY",
- "desc": " 控件销毁时触发。\n\n",
+ "desc": " 控件销毁时触发。\r\n",
"type": "event_t"
}
],
"properties": [
{
"name": "x",
- "desc": " x坐标(相对于父控件的x坐标)。\n\n",
+ "desc": " x坐标(相对于父控件的x坐标)。\r\n",
"type": "xy_t",
"annotation": {
"set_prop": true,
@@ -14758,7 +14866,7 @@
},
{
"name": "y",
- "desc": " y坐标(相对于父控件的y坐标)。\n\n",
+ "desc": " y坐标(相对于父控件的y坐标)。\r\n",
"type": "xy_t",
"annotation": {
"set_prop": true,
@@ -14771,7 +14879,7 @@
},
{
"name": "w",
- "desc": " 宽度。\n\n",
+ "desc": " 宽度。\r\n",
"type": "wh_t",
"annotation": {
"set_prop": true,
@@ -14784,7 +14892,7 @@
},
{
"name": "h",
- "desc": " 高度。\n\n",
+ "desc": " 高度。\r\n",
"type": "wh_t",
"annotation": {
"set_prop": true,
@@ -14797,7 +14905,7 @@
},
{
"name": "name",
- "desc": " 控件名字。\n\n",
+ "desc": " 控件名字。\r\n",
"type": "char*",
"annotation": {
"set_prop": true,
@@ -14810,7 +14918,7 @@
},
{
"name": "tr_text",
- "desc": " 保存用于翻译的字符串。\n\n",
+ "desc": " 保存用于翻译的字符串。\r\n",
"type": "char*",
"annotation": {
"set_prop": true,
@@ -14823,7 +14931,7 @@
},
{
"name": "style",
- "desc": " style的名称。\n\n",
+ "desc": " style的名称。\r\n",
"type": "char*",
"annotation": {
"set_prop": true,
@@ -14836,7 +14944,7 @@
},
{
"name": "animation",
- "desc": " 动画参数。请参考[控件动画](https://github.com/zlgopen/awtk/blob/master/docs/widget_animator.md)\n\n",
+ "desc": " 动画参数。请参考[控件动画](https://github.com/zlgopen/awtk/blob/master/docs/widget_animator.md)\r\n",
"type": "char*",
"annotation": {
"set_prop": true,
@@ -14849,7 +14957,7 @@
},
{
"name": "enable",
- "desc": " 启用/禁用状态。\n\n",
+ "desc": " 启用/禁用状态。\r\n",
"type": "bool_t",
"annotation": {
"set_prop": true,
@@ -14862,7 +14970,7 @@
},
{
"name": "feedback",
- "desc": " 是否启用按键音、触屏音和震动等反馈。\n\n",
+ "desc": " 是否启用按键音、触屏音和震动等反馈。\r\n",
"type": "bool_t",
"annotation": {
"set_prop": true,
@@ -14875,7 +14983,7 @@
},
{
"name": "visible",
- "desc": " 是否可见。\n\n",
+ "desc": " 是否可见。\r\n",
"type": "bool_t",
"annotation": {
"set_prop": true,
@@ -14889,7 +14997,7 @@
},
{
"name": "sensitive",
- "desc": " 是否接受用户事件。\n\n",
+ "desc": " 是否接受用户事件。\r\n",
"type": "bool_t",
"annotation": {
"set_prop": true,
@@ -14903,7 +15011,7 @@
},
{
"name": "focusable",
- "desc": " 是否支持焦点停留。\n\n",
+ "desc": " 是否支持焦点停留。\r\n",
"type": "bool_t",
"annotation": {
"set_prop": true,
@@ -14917,7 +15025,7 @@
},
{
"name": "with_focus_state",
- "desc": " 是否支持焦点状态。\n > 如果希望style支持焦点状态,但有不希望焦点停留,可用本属性。\n\n",
+ "desc": " 是否支持焦点状态。\r\n > 如果希望style支持焦点状态,但有不希望焦点停留,可用本属性。\r\n",
"type": "bool_t",
"annotation": {
"set_prop": true,
@@ -14931,7 +15039,7 @@
},
{
"name": "focused",
- "desc": " 是否得到焦点。\n\n",
+ "desc": " 是否得到焦点。\r\n",
"type": "bool_t",
"annotation": {
"readable": true
@@ -14939,7 +15047,7 @@
},
{
"name": "auto_created",
- "desc": " 是否由父控件自动创建。\n\n",
+ "desc": " 是否由父控件自动创建。\r\n",
"type": "bool_t",
"annotation": {
"readable": true
@@ -14947,7 +15055,7 @@
},
{
"name": "dirty",
- "desc": " 标识控件是否需要重绘。\n\n",
+ "desc": " 标识控件是否需要重绘。\r\n",
"type": "bool_t",
"annotation": {
"readable": true
@@ -14955,7 +15063,7 @@
},
{
"name": "floating",
- "desc": " 标识控件是否启用浮动布局,不受父控件的children_layout的控制。\n\n",
+ "desc": " 标识控件是否启用浮动布局,不受父控件的children_layout的控制。\r\n",
"type": "bool_t",
"annotation": {
"set_prop": true,
@@ -14968,7 +15076,7 @@
},
{
"name": "need_relayout_children",
- "desc": " 标识控件是否需要重新layout子控件。\n\n",
+ "desc": " 标识控件是否需要重新layout子控件。\r\n",
"type": "bool_t",
"annotation": {
"readable": true
@@ -14976,7 +15084,7 @@
},
{
"name": "need_update_style",
- "desc": " 标识控件是否需要update style。\n\n",
+ "desc": " 标识控件是否需要update style。\r\n",
"type": "bool_t",
"annotation": {
"readable": true
@@ -14984,7 +15092,7 @@
},
{
"name": "can_not_destroy",
- "desc": " 标识控件目前不能被销毁(比如正在分发事件),如果此时调用widget\\_destroy,自动异步处理。\n\n",
+ "desc": " 标识控件目前不能被销毁(比如正在分发事件),如果此时调用widget\\_destroy,自动异步处理。\r\n",
"type": "uint16_t",
"annotation": {
"readable": true
@@ -14992,7 +15100,7 @@
},
{
"name": "initializing",
- "desc": " 标识控件正在初始化。\n\n",
+ "desc": " 标识控件正在初始化。\r\n",
"type": "bool_t",
"annotation": {
"readable": true
@@ -15000,7 +15108,7 @@
},
{
"name": "destroying",
- "desc": " 标识控件正在被销毁。\n\n",
+ "desc": " 标识控件正在被销毁。\r\n",
"type": "bool_t",
"annotation": {
"readable": true
@@ -15008,7 +15116,7 @@
},
{
"name": "state",
- "desc": " 控件的状态(取值参考widget_state_t)。\n\n",
+ "desc": " 控件的状态(取值参考widget_state_t)。\r\n",
"type": "uint8_t",
"annotation": {
"readable": true
@@ -15016,7 +15124,7 @@
},
{
"name": "opacity",
- "desc": " 不透明度(0-255),0完全透明,255完全不透明。\n\n",
+ "desc": " 不透明度(0-255),0完全透明,255完全不透明。\r\n",
"type": "uint8_t",
"annotation": {
"readable": true
@@ -15024,7 +15132,7 @@
},
{
"name": "text",
- "desc": " 文本。用途视具体情况而定。\n\n",
+ "desc": " 文本。用途视具体情况而定。\r\n",
"type": "wstr_t",
"annotation": {
"readable": true
@@ -15032,7 +15140,7 @@
},
{
"name": "parent",
- "desc": " 父控件\n\n",
+ "desc": " 父控件\r\n",
"type": "widget_t*",
"annotation": {
"readable": true
@@ -15040,7 +15148,7 @@
},
{
"name": "target",
- "desc": " 接收事件的子控件。\n\n",
+ "desc": " 接收事件的子控件。\r\n",
"type": "widget_t*",
"annotation": {
"private": true
@@ -15048,7 +15156,7 @@
},
{
"name": "grab_widget",
- "desc": " grab事件的子控件。\n\n",
+ "desc": " grab事件的子控件。\r\n",
"type": "widget_t*",
"annotation": {
"private": true
@@ -15056,7 +15164,7 @@
},
{
"name": "grab_widget_count",
- "desc": " 有时子控件和控件自己都会grab widget,所需要grab的计数。\n\n",
+ "desc": " 有时子控件和控件自己都会grab widget,所需要grab的计数。\r\n",
"type": "int32_t",
"annotation": {
"private": true
@@ -15064,7 +15172,7 @@
},
{
"name": "key_target",
- "desc": " 接收按键事件的子控件。\n\n",
+ "desc": " 接收按键事件的子控件。\r\n",
"type": "widget_t*",
"annotation": {
"private": true
@@ -15072,7 +15180,7 @@
},
{
"name": "children",
- "desc": " 全部子控件。\n\n",
+ "desc": " 全部子控件。\r\n",
"type": "darray_t*",
"annotation": {
"readable": true
@@ -15080,7 +15188,7 @@
},
{
"name": "emitter",
- "desc": " 事件发射器。\n\n",
+ "desc": " 事件发射器。\r\n",
"type": "emitter_t*",
"annotation": {
"readable": true
@@ -15088,7 +15196,7 @@
},
{
"name": "astyle",
- "desc": " Style对象。\n\n",
+ "desc": " Style对象。\r\n",
"type": "style_t*",
"annotation": {
"readable": true
@@ -15096,7 +15204,7 @@
},
{
"name": "children_layout",
- "desc": " 子控件布局器。请参考[控件布局参数](https://github.com/zlgopen/awtk/blob/master/docs/layout.md)\n\n",
+ "desc": " 子控件布局器。请参考[控件布局参数](https://github.com/zlgopen/awtk/blob/master/docs/layout.md)\r\n",
"type": "children_layouter_t*",
"annotation": {
"readable": true,
@@ -15106,7 +15214,7 @@
},
{
"name": "self_layout",
- "desc": " 控件布局器。请参考[控件布局参数](https://github.com/zlgopen/awtk/blob/master/docs/layout.md)\n\n",
+ "desc": " 控件布局器。请参考[控件布局参数](https://github.com/zlgopen/awtk/blob/master/docs/layout.md)\r\n",
"type": "self_layouter_t*",
"annotation": {
"readable": true,
@@ -15116,7 +15224,7 @@
},
{
"name": "custom_props",
- "desc": " 自定义属性。\n\n",
+ "desc": " 自定义属性。\r\n",
"type": "object_t*",
"annotation": {
"readable": true
@@ -15124,7 +15232,7 @@
},
{
"name": "vt",
- "desc": " 虚函数表。\n\n",
+ "desc": " 虚函数表。\r\n",
"type": "widget_vtable_t",
"annotation": {
"readable": true
@@ -15132,7 +15240,7 @@
}
],
"header": "base/widget.h",
- "desc": " **widget_t** 是所有控件、窗口和窗口管理器的基类。\n **widget_t**也是一个容器,可放其它**widget_t**到它的内部,形成一个树形结构。\n\n ```graphviz\n [default_style]\n\n widget_t -> widget_t[arrowhead = \"diamond\"]\n window_t -> widget_t[arrowhead = \"empty\"]\n window_manager_t -> widget_t[arrowhead = \"empty\"]\n button_t -> widget_t[arrowhead = \"empty\"]\n label_t -> widget_t[arrowhead = \"empty\"]\n xxx_widget_t -> widget_t[arrowhead = \"empty\"]\n ```\n\n 通常**widget_t**通过一个矩形区域向用户呈现一些信息,接受用户的输入,并据此做出适当的反应。\n 它负责控件的生命周期、通用状态、事件分发和Style的管理。\n 本类提供的接口(函数和属性)除非特别说明,一般都适用于子类控件。\n\n 为了便于解释,这里特别说明一下几个术语:\n\n * **父控件与子控件**:父控件与子控件指的两个控件的组合关系(这是在运行时决定的)。\n 比如:在窗口中放一个按钮,此时,我们称按钮是窗口的子控件,窗口是按钮的父控件。\n\n ```graphviz\n [default_style]\n\n 子控件 -> 父控件[arrowhead = \"ediamond\"]\n ```\n\n * **子类控件与父类控件**:子类控件与父类控件指的两类控件的继承关系(这是在设计时决定的)。\n 比如:我们称**button_t**是**widget_t**的子类控件,**widget_t**是**button_t**的父类控件。\n\n ```graphviz\n [default_style]\n\n 子类控件 -> 父类控件[arrowhead = \"empty\"]\n\n ```\n\n widget相关的函数都只能在GUI线程中执行,如果需在非GUI线程中想调用widget相关函数,\n 请用idle\\_queue或timer\\_queue进行串行化。\n 请参考[demo thread](https://github.com/zlgopen/awtk/blob/master/demos/demo_thread_app.c)\n\n **widget\\_t**是抽象类,不要直接创建**widget\\_t**的实例。控件支持两种创建方式:\n\n * 通过XML创建。如:\n\n ```xml\n