awtk/docs/manual/assets_manager_t.md
2018-12-29 17:50:22 +08:00

10 KiB
Raw Blame History

assets_manager_t

概述

资源管理器。 这里的资源管理器并非Windows下的文件浏览器而是负责对各种资源比如字体、主题、图片、界面数据、字符串和其它数据的进行集中管理的组件。引入资源管理器的目的有以下几个

  • 让上层不需要了解存储的方式。在没有文件系统时或者内存紧缺时,把资源转成常量数组直接编译到代码中。在有文件系统而且内存充足时,资源放在文件系统中。在有网络时,资源也可以存放在服务器上(暂未实现)。资源管理器为上层提供统一的接口,让上层而不用关心底层的存储方式。

  • 让上层不需要了解资源的具体格式。比如一个名为earth的图片没有文件系统或内存紧缺图片直接用位图数据格式存在ROM中而有文件系统时则用PNG格式存放在文件系统中。资源管理器让上层不需要关心图片的格式访问时指定图片的名称即可(不用指定扩展名)。

  • 让上层不需要了解屏幕的密度。不同的屏幕密度下需要加载不同的图片比如MacPro的Retina屏就需要用双倍解析度的图片否则就出现界面模糊。AWTK以后会支持PC软件和手机软件的开发所以资源管理器需要为此提供支持让上层不需关心屏幕的密度。

  • 对资源进行内存缓存。不同类型的资源使用方式是不一样的比如字体和主题加载之后会一直使用UI文件在生成界面之后就暂时不需要了PNG文件解码之后就只需要保留解码的位图数据即可。资源管理器配合图片管理器等其它组件实现资源的自动缓存。

当从文件系统加载资源时,目录结构要求如下:

assets/raw/
 fonts   字体
 images  图片
   x1   普通密度屏幕的图片。
   x2   2倍密度屏幕的图片。
   x3   3倍密度屏幕的图片。
 strings 需要翻译的字符串。 
 styles  主题数据。
 ui      UI描述数据。

函数

函数名称 说明
assets_manager 获取缺省资源管理器。
assets_manager_add 向资源管理器中增加一个资源。
assets_manager_clear_cache 清除指定类型的缓存。
assets_manager_create 创建资源管理器。
assets_manager_deinit 释放全部资源。
assets_manager_destroy 释放全部资源并销毁asset manager对象。
assets_manager_find_in_cache 在资源管理器的缓存中查找指定的资源(不引用)。
assets_manager_init 初始化资源管理器。
assets_manager_load 从文件系统中加载指定的资源并缓存到内存中。在定义了宏WITH_FS_RES时才生效。
assets_manager_ref 在资源管理器的缓存中查找指定的资源并引用它,如果缓存中不存在,尝试加载该资源。
assets_manager_set 设置缺省资源管理器。
assets_manager_set_res_root 设置资源所在的目录(其下目录结构请参考demos)。
assets_manager_unref 释放指定的资源。

assets_manager 函数


  • 函数功能:

获取缺省资源管理器。

  • 函数原型:
assets_manager_t* assets_manager ();
  • 参数说明:
参数 类型 说明
返回值 assets_manager_t* 返回asset manager对象。

assets_manager_add 函数


  • 函数功能:

向资源管理器中增加一个资源。

  • 函数原型:
ret_t assets_manager_add (assets_manager_t* rm, asset_info_t info);
  • 参数说明:
参数 类型 说明
返回值 ret_t 返回RET_OK表示成功否则表示失败。
rm assets_manager_t* asset manager对象。
info asset_info_t 待增加的资源。

assets_manager_clear_cache 函数


  • 函数功能:

清除指定类型的缓存。

  • 函数原型:
ret_t assets_manager_clear_cache (assets_manager_t* rm, asset_type_t type);
  • 参数说明:
参数 类型 说明
返回值 ret_t 返回RET_OK表示成功否则表示失败。
rm assets_manager_t* asset manager对象。
type asset_type_t 资源的类型。

assets_manager_create 函数


  • 函数功能:

创建资源管理器。

  • 函数原型:
assets_manager_t* assets_manager_create (uint32_t init_nr);
  • 参数说明:
参数 类型 说明
返回值 assets_manager_t* 返回asset manager对象。
init_nr uint32_t 预先分配资源的个数。

assets_manager_deinit 函数


  • 函数功能:

释放全部资源。

  • 函数原型:
ret_t assets_manager_deinit (assets_manager_t* rm);
  • 参数说明:
参数 类型 说明
返回值 ret_t 返回RET_OK表示成功否则表示失败。
rm assets_manager_t* asset manager对象。

assets_manager_destroy 函数


  • 函数功能:

释放全部资源并销毁asset manager对象。

  • 函数原型:
ret_t assets_manager_destroy (assets_manager_t* rm);
  • 参数说明:
参数 类型 说明
返回值 ret_t 返回RET_OK表示成功否则表示失败。
rm assets_manager_t* asset manager对象。

assets_manager_find_in_cache 函数


  • 函数功能:

在资源管理器的缓存中查找指定的资源(不引用)。

  • 函数原型:
asset_info_t* assets_manager_find_in_cache (assets_manager_t* rm, asset_type_t type, char* name);
  • 参数说明:
参数 类型 说明
返回值 asset_info_t* 返回资源。
rm assets_manager_t* asset manager对象。
type asset_type_t 资源的类型。
name char* 资源的名称。

assets_manager_init 函数


  • 函数功能:

初始化资源管理器。

  • 函数原型:
assets_manager_t* assets_manager_init (assets_manager_t* rm, uint32_t init_nr);
  • 参数说明:
参数 类型 说明
返回值 assets_manager_t* 返回asset manager对象。
rm assets_manager_t* asset manager对象。
init_nr uint32_t 预先分配资源的个数。

assets_manager_load 函数


  • 函数功能:

从文件系统中加载指定的资源并缓存到内存中。在定义了宏WITH\_FS\_RES时才生效。

  • 函数原型:
asset_info_t* assets_manager_load (assets_manager_t* rm, asset_type_t type, char* name);
  • 参数说明:
参数 类型 说明
返回值 asset_info_t* 返回资源。
rm assets_manager_t* asset manager对象。
type asset_type_t 资源的类型。
name char* 资源的名称。

assets_manager_ref 函数


  • 函数功能:

在资源管理器的缓存中查找指定的资源并引用它,如果缓存中不存在,尝试加载该资源。

  • 函数原型:
asset_info_t* assets_manager_ref (assets_manager_t* rm, asset_type_t type, char* name);
  • 参数说明:
参数 类型 说明
返回值 asset_info_t* 返回资源。
rm assets_manager_t* asset manager对象。
type asset_type_t 资源的类型。
name char* 资源的名称。

assets_manager_set 函数


  • 函数功能:

设置缺省资源管理器。

  • 函数原型:
ret_t assets_manager_set (assets_manager_t* rm);
  • 参数说明:
参数 类型 说明
返回值 ret_t 返回RET_OK表示成功否则表示失败。
rm assets_manager_t* asset manager对象。

assets_manager_set_res_root 函数


  • 函数功能:

设置资源所在的目录(其下目录结构请参考demos)。

  • 函数原型:
ret_t assets_manager_set_res_root (assets_manager_t* rm, const char* res_root);
  • 参数说明:
参数 类型 说明
返回值 ret_t 返回RET_OK表示成功否则表示失败。
rm assets_manager_t* asset manager对象。
res_root const char* 资源所在的目录。

assets_manager_unref 函数


  • 函数功能:

释放指定的资源。

  • 函数原型:
ret_t assets_manager_unref (assets_manager_t* rm, asset_info_t* info);
  • 参数说明:
参数 类型 说明
返回值 ret_t 返回RET_OK表示成功否则表示失败。
rm assets_manager_t* asset manager对象。
info asset_info_t* 资源。