diff --git a/docs/app_helper_usage.md b/docs/app_helper_usage.md index baf24fcc0..efb512452 100644 --- a/docs/app_helper_usage.md +++ b/docs/app_helper_usage.md @@ -11,7 +11,7 @@ import scripts.app_helper as app helper = app.Helper(ARGUMENTS); helper.add_libs(['sqlite3']).add_cpppath([os.path.join(helper.APP_ROOT, '3rd')]).call(DefaultEnvironment) -SConscript(['src/SConscript', '3rd/sqlite3/SConscript']) +helper.SConscript(['src/SConscript', '3rd/sqlite3/SConscript']) ``` ## 二、helper API 介绍 @@ -77,6 +77,8 @@ helper.add_platform_libs('Windows', ['ws2_32']) * add\_platform\_linkflags 增加特定平台的需要的链接参数。 +> 所有路径均为列表(数组)格式。 + ## 三、注意事项 * 平台相关的函数,plat 的取值: diff --git a/docs/assets_manager.md b/docs/assets_manager.md index 8be61e3d2..de328821d 100644 --- a/docs/assets_manager.md +++ b/docs/assets_manager.md @@ -1,16 +1,16 @@ -#AWTK中的资源管理 +#AWTK 中的资源管理 ## 基本架构 -这里的资源管理器并非Windows下的文件浏览器,而是负责对各种资源,比如字体、窗体样式、图片、界面数据、字符串和其它数据的进行集中管理的组件。引入资源管理器的目的有以下几个: +这里的资源管理器并非 Windows 下的文件浏览器,而是负责对各种资源,比如字体、窗体样式、图片、界面数据、字符串和其它数据的进行集中管理的组件。引入资源管理器的目的有以下几个: -* 让上层不需要了解存储的方式。在没有文件系统时或者内存紧缺时,把资源转成常量数组直接编译到代码中。在有文件系统而且内存充足时,资源放在文件系统中。在有网络时,资源也可以存放在服务器上(暂未实现)。资源管理器为上层提供统一的接口,让上层而不用关心底层的存储方式。 +* 让上层不需要了解存储的方式。在没有文件系统时或者内存紧缺时,把资源转成常量数组直接编译到代码中。在有文件系统而且内存充足时,资源放在文件系统中。在有网络时,资源也可以存放在服务器上(暂未实现)。资源管理器为上层提供统一的接口,让上层而不用关心底层的存储方式。 -* 让上层不需要了解资源的具体格式。比如一个名为earth的图片,没有文件系统或内存紧缺,图片直接用位图数据格式存在ROM中,而有文件系统时,则用PNG格式存放在文件系统中。资源管理器让上层不需要关心图片的格式,访问时指定图片的名称即可(不用指定扩展名)。 +* 让上层不需要了解资源的具体格式。比如一个名为 earth 的图片,没有文件系统或内存紧缺,图片直接用位图数据格式存在 ROM 中,而有文件系统时,则用 PNG 格式存放在文件系统中。资源管理器让上层不需要关心图片的格式,访问时指定图片的名称即可(不用指定扩展名)。 -* 让上层不需要了解屏幕的密度。不同的屏幕密度下需要加载不同的图片,比如MacPro的Retina屏就需要用双倍解析度的图片,否则就出现界面模糊。AWTK以后会支持PC软件和手机软件的开发,所以资源管理器需要为此提供支持,让上层不需关心屏幕的密度。 +* 让上层不需要了解屏幕的密度。不同的屏幕密度下需要加载不同的图片,比如 MacPro 的 Retina 屏就需要用双倍解析度的图片,否则就出现界面模糊。资源管理器需要为此提供支持,让上层不需关心屏幕的密度。 -* 对资源进行内存缓存。不同类型的资源使用方式是不一样的,比如字体和窗体样式加载之后会一直使用,UI文件在生成界面之后就暂时不需要了,PNG文件解码之后就只需要保留解码的位图数据即可。资源管理器配合图片管理器等其它组件实现资源的自动缓存。 +* 对资源进行内存缓存。不同类型的资源使用方式是不一样的,比如字体和窗体样式加载之后会一直使用,UI 文件在生成界面之后就暂时不需要了,PNG 文件解码之后就只需要保留解码的位图数据即可。资源管理器配合图片管理器等其它组件实现资源的自动缓存。 负责资源管理器和资源管理相关的组件如下图所示: @@ -20,28 +20,28 @@ ## 资源的生成 -AWTK中的资源需要进行格式转换才能使用: +AWTK 中的资源需要进行格式转换才能使用: * 在没有文件系统时或者内存紧缺时,需要把资源转成常量数组直接编译到代码中。 -* XML格式的UI文件需要转换成二进制的格式。 -* XML格式的窗体样式文件需要转换成二进制的格式。 -* TTF可以根据需要转换成位图字体。 -* PNG可以根据需要转换成位图图片。 +* XML 格式的 UI 文件需要转换成二进制的格式。 +* XML 格式的窗体样式文件需要转换成二进制的格式。 +* TTF 可以根据需要转换成位图字体。 +* PNG 可以根据需要转换成位图图片。 相关工具: * bin/fontgen 位图字体生成工具 * bin/imagegen 位图图片生成工具 * bin/resgen 二进制文件生成资源常量数组 -* bin/themegen XML窗体样式转换成二进制的窗体样式 -* bin/xml\_to\_ui XML的界面描述格式转换二进制的界面描述格式 +* bin/themegen XML 窗体样式转换成二进制的窗体样式 +* bin/xml\_to\_ui XML 的界面描述格式转换二进制的界面描述格式 * ./scripts/update\_res.py 批量转换整个项目的资源 ## 一、初始化 将资源生成常量数组直接编译到代码中时,其初始化过程为: -* 1.包含相应的数据文件。 +* 1. 包含相应的数据文件。 ``` #include "assets/inc/fonts/ap.data" @@ -52,7 +52,7 @@ AWTK中的资源需要进行格式转换才能使用: ... ``` -* 2.将资源增加到资源管理器中。 +* 2. 将资源增加到资源管理器中。 ``` assets_manager_add(rm, font_ap); @@ -63,7 +63,7 @@ AWTK中的资源需要进行格式转换才能使用: ... ``` -将资源放在文件系统中时,一般不需要特殊处理,不过可以用assets\_manager\_load预加载资源。如: +将资源放在文件系统中时,一般不需要特殊处理,不过可以用 assets\_manager\_load 预加载资源。如: ``` assets_manager_load(rm, ASSET_TYPE_THEME, "default"); @@ -76,24 +76,23 @@ AWTK中的资源需要进行格式转换才能使用: * 加载图片图片 -使用image\_manager\_load,指定图片的名称即可。 +使用 image\_manager\_load,指定图片的名称即可。 ``` bitmap_t img; image_manager_load(image_manager(), "earth", &img); ``` -> 不过通过更上层widget的函数去加载图片: +> 不过通过更上层 widget 的函数去加载图片: ``` bitmap_t bitmap; widget_load_image(widget, "myimage", &bitmap); ``` +* 使用 UI 数据 -* 使用UI数据 - -使用window\_open,指定资源的名称即可。如: +使用 window\_open,指定资源的名称即可。如: ``` widget_t* win = window_open(name); @@ -105,29 +104,28 @@ widget_t* win = window_open(name); * 使用窗体样式 -一般在界面描述文件中指定style即可。 - +一般在界面描述文件中指定 style 即可。 ## 三、资源的名称 -资源名称一般就是资源的文件名,不带文件扩展名。比如图片名为test.png,那资源名称就是test,如果因为某种原因,把test.png换成了test.jpg,对代码并无影响。 +资源名称一般就是资源的文件名,不带文件扩展名。比如图片名为 test.png,那资源名称就是 test,如果因为某种原因,把 test.png 换成了 test.jpg,对代码并无影响。 -> 对于DATA类型的资源,由于其扩展名不固定,所以需要带扩展名才能访问。 +> 对于 DATA 类型的资源,由于其扩展名不固定,所以需要带扩展名才能访问。 > > 比如资源文件名为"app.json",不能用"app"访问,而是用"app.json"才能访问。 -对于图片和UI资源名称,AWTK还支持一种高级用法。想想下面几种情况: +对于图片和 UI 资源名称,AWTK 还支持一种高级用法。想想下面几种情况: * 需要支持不同的分辨率。而在不同分辨率里,要使用不同的背景图片。 -* 需要支持竖屏和横屏。而有的界面自动排版不能满足需求,需要为竖屏和横屏个写一个XML文件。 +* 需要支持竖屏和横屏。而有的界面自动排版不能满足需求,需要为竖屏和横屏个写一个 XML 文件。 * 需要支持不同的语言。而在不同的语言里,有的图片是语言相关的。 -为了应对这些情况,AWTK提供了名称表达式: +为了应对这些情况,AWTK 提供了名称表达式: -* 名称中可以带变量和表达式。变量用${xxx}表示,xxx将被替换成实际的值。 +* 名称中可以带变量和表达式。变量用${xxx}表示,xxx 将被替换成实际的值。 * 可以指定多个名称,依次匹配,直到找到的为止。多个名称之间用逗号分隔。 -示例1: +示例 1: ``` ``` -示例2: +示例 2: ``` ``` -在locale为zh\_CN时,相当于: +在 locale 为 zh\_CN 时,相当于: ``` ``` -依次查找flag\_CN和flag\_none两个图片。 +依次查找 flag\_CN 和 flag\_none 两个图片。 -在locale为en\_US时,相当于: +在 locale 为 en\_US 时,相当于: ``` ``` -依次查找flag\_US和flag\_none两个图片。 +依次查找 flag\_US 和 flag\_none 两个图片。 -> 变量名可以使用[system\_info中的成员变量](https://github.com/zlgopen/awtk/blob/master/docs/manual/system_info_t.md) +> 变量名可以使用 [system\_info 中的成员变量](https://github.com/zlgopen/awtk/blob/master/docs/manual/system_info_t.md) ## 四、扩展用法