Skip to content
Ever-Never edited this page Jul 9, 2018 · 1 revision

说明

Aroma res API,说明如何使用相关的API读取数组里的资源(由color 、string、image生成的数组)。

分三个步骤:

(1)libaroma_res_init把数组里的资源加入管理产生一个LIBAROMA_RESOURCEP

(2)libaroma_res_get_string 或者libaroma_res_get_color或者libaroma_res_get_image,生成一段数据

(3)释放内存libaroma_res_free

1、把资源加入管理

LIBAROMA_RESOURCEP libaroma_res_init(const char *string, const char *color, const char *png_array)
参数说明
参数 说明
string string数组的首地址,不需要的传NULL
color color数组的首地址,不需要的传NULL
png_array imange数组的首地址,不需要的传NULL
return LIBAROMA_RESOURCEP类型的指针

2、get color

word libaroma_res_get_color(LIBAROMA_RESOURCEP res, char *key, word def_color)
参数说明
参数 说明
res libaroma_res_init生成的LIBAROMA_RESOURCEP
key 管理color的文件每个color对应一个key(字符串)
def_color 如果找不到对应的key,则用自己定义的颜色def_color
return 返回一个2字节的color

3、get string

char *libaroma_res_get_string(LIBAROMA_RESOURCEP res, char *key, char *def)
参数说明

char *libaroma_res_get_string(LIBAROMA_RESOURCEP res, char *key, char *def)

参数 说明
res 同上
key 每个sting会有一个对应的key
def 找不到对应的key,用自己定义的字符串def
return 返回一个string

4、get image

LIBAROMA_CANVASP libaroma_res_get_image(LIBAROMA_RESOURCEP res, int image_id)
参数说明
参数 说明
res 同上
image_id 每张图片有一个id,与地址偏移对应上
return 返回一个CANVASP地址

5、释放内存libaroma_res_free

void libaroma_res_free(LIBAROMA_RESOURCEP res)
参数说明
参数 说明
res libaroma_res_init生成的一个地址

6、例子

(1)string

LIBAROMA_RESOURCEP resourceptes;
void main(void)
{

    resourceptes=libaroma_res_init(strings, colors, png_res);
    char * stringa=libaroma_res_get_string(resourceptes,"text_ok","hello");
    libaroma_res_free(resourceptes) ;
}

(2)color

LIBAROMA_RESOURCEP resourceptes;
void main(void)
{

    resourceptes=libaroma_res_init(strings, colors, png_res);
    word color=libaroma_res_get_color(resourceptes,"c_green",RGB(808080));
    libaroma_res_free(resourceptes) ;
}

(3)image

LIBAROMA_RESOURCEP resourceptes;
void main(void)
{

    resourceptes=libaroma_res_init(strings, colors, png_res);
    LIBAROMA_CANVASP canvas =libaroma_res_get_image(resourceptes,RES_INDEX_setting) ;
    libaroma_res_free(resourceptes) ;
}

(4)

LIBAROMA_RESOURCEP resourceptes;
void main(void)
{

    resourceptes=libaroma_res_init(strings, colors, png_res);
    word color=libaroma_res_get_color(resourceptes,"c_green",RGB(808080));
    char * stringa=libaroma_res_get_string(resourceptes,"text_ok","hello");
    libaroma_ctl_label_valign(win, 6,stringa , libaroma_px(30),  libaroma_px(64), libaroma_px(32), libaroma_px(24), color, 0, 3, LIBAROMA_TEXT_CENTER, 100, 10);
    LIBAROMA_CONTROLP image = libaroma_ctl_image(win, 3, NULL, 0, libaroma_px(128), libaroma_dp(30), libaroma_px(30));
    LIBAROMA_CANVASP canvas =libaroma_res_get_image(resourceptes,RES_INDEX_setting) ;
    libaroma_res_free(resourceptes) ;
}

需要注意的是libaroma_res_get_string 或者libaroma_res_get_color或者libaroma_res_get_image必须用在libaroma_res_init之后,libaroma_res_free之前

7、上面所说的的数组(libaroma_res_init函数的参数输入地址)生成方式

string数组的生成

首先,建立一个文件string.lang进行管理,该文件的内容编码是utf-8

内容如下:(左边的key,右边是key对应的内容)

text_ok=确定
text_next=下一步
text_back=返回
text_yes=同意
text_no=放弃
text_about=关于
text_calibrating=屏幕校准
text_quit=退出安装
text_quit_msg=你确定要退出安装吗?
langtest.title=语言测试
themes.title=选择主题
themes.desc=要在此安装测试使用,请选择安装的主题:
welcome.title=欢迎

其次,使用widows使用工具bin2c.exe,方法如下:

(1)Widows下打开一个命令终端cmd、然后把bin2c.exe拖到命令行下

(2)需要输入3个参数:(注意.exe文件和3个参数之间需要空格隔开)

第一个参数:文件的绝对路径和文件名(可以把对应的文件之间拖到命令行内);

第二个参数:转化后的c文件名string_lab.c;

第三个参数:转化后的数组名字"string_array";

转化后的文件在C:\Users\Administrator,把生成的string_lab.c文件加入工程中,该文件中的数组string_array就是我们所需的

例子:

color数组生成同上