AIF
1、一种基因
Apoptosis Inducing Factor
台湾把这种基因译成“致死因素”基因。加拿大研究人员发现了这种基因,他们认为,如果科学家有本事调控这种基因,也许就能够阻止早老性痴呆症的脑细胞死亡。
2、一种音频格式。
AIF/AIFF文件格式,音频互交换文件,Silicon Graphicand Macintosh应用程序的声音格式。
AIF/AIFF是音频交换文件格式(Audio Interchange File Format)的英文缩写,是Apple公司开发的一种声音文件格式,被Macintosh平台及其应用程序所支持,Netscape Navigator浏览器中的LiveAudio也支持AIFF格式,SGI及其它专业音频软件包也同样支持AIFF格式。AIFF支持ACE2、ACE8、MAC3和MAC6压缩,支持16位44.1kHz立体声。
3、程序信息文件
概述
应用程序信息文件,其扩展名为.aif文件,用来存储与应用程序相关的数据,这里的信息包括应用程序的:
各种尺寸的icon
所支持语言的标题
拓展性,如嵌入, 隐藏等
MIME-type支持属性
aif文件可以用如下几种方法来生成:
通过GUI工具AIF Builder
通过手写一个Aiftool资源文件。
如果你要手写一个Aiftool资源文件:
如果你使用的是C++,你应该指明在abld处理Aiftool的处理,我们可以将AIF关键字安插在你的.mmp文件中,如下:
AIF DDBouncingBall.aif ..Aif DDBouncingBallAif.rss
c12 DDBouncingBallIcon.bmp DDBouncingBallIcon_mask.bmp DDBouncingBallIcon_42x22.bmp DDBouncingBallIcon_42x22_mask.bmp
执行命令行Aiftool工具以生成aif文件
我们使用C++reader和writer类来管理存储在aif文件中的数据(其中wirter类是很少使用的)。程序可以在没有aif文件的状况下运行,在这种情况,一个缺省的图标被使用——一般是一个问号(依小糊涂看不然,缺省的在s60至少不是问号,而是个拼图状的东东:);不支持MIMI类型;不支持embedding;不支持新文件的产生;缺省的标题就是它可执行文件的名字,不过没有扩展名。
如何构建一个AIF
概述下面的列子演示了怎么去生成一个应用程序信息文件,你必须:
生成一个资源定义文件(rss文件)这个文件中包含了一个结构,里面定义了应用程序的UID,标题,图标的数目,capabilities,以及MIME类型支持级别。
生成一个image和mask bitmap以便在shell中标识该程序。
生成资源定义文件
最容易的方法就是拷贝一个现成的资源文件来修改修改,主要是标题,UID,以及图标的数目。大家可以看下面的列子:
#include <aiftool.rh>
RESOURCE AIF_DATA
{
// uid
app_uid=0x10004299;
// captions
caption_list=
{
CAPTION { code=ELangEnglish; caption="Hello"; },
CAPTION { code=ELangFrench; caption="Bonjour"; }
};
// icons
num_icons=2;
// capabilities
embeddability= KAppEmbeddable;
hidden=KAppNotHidden;
newfile= KAppSupportsNewFile;
// MIME types
datatype_list=
{
DATATYPE { priority=EDataTypePriorityNormal; type="text/html"; },
DATATYPE { priority=EDataTypePriorityLow; type="text/plain"; }
}
the include file 这里aiftool.rh资源头文件应该放置在每个资源定义文件的顶部,这个文件定义了aif文件的结构,包括所有支持的语言以及默认的aif文件
capabilites。
include <aiftool.rh>
这个aiftool资源头文件存放在标准的c++包含目录:Epoc32Include
UID 这里的UID(0x10004299)是用来标识程序的唯一性数字,同样的UID也定义在工程文件中(mmp)。开发者可以从symbian developer network website获得未使用的UIDs
Captions 标题是和图标一起显示在shell中的,下面标识标题为英文和法文都准备了:
caption_list=
{
CAPTION { code=ELangEnglish; caption="Hello"; },
CAPTION { code=ELangFrench; caption="Bonjour"; }
};Icons 资源定义文件还指明了本程序所使用的图标数目,每个图标都是由一个icon bitmap和一个mask所组成的,在这个列子里,有2个图标,因此图标文件将包含4个bitmaps(关于mask,前面已经讲的很清楚了:) num_icons=2;
Capabilities Capabilities用来表示应用程序是embeddable,not hidden, 以及是否允许从system shell中产生新的文档。
MIME Types datatype_list语句块表明该应用程序是和HTML以及plain text files相联的。
如何编译AIF文件
概述当你已经产生了一个适当的资源文件和位图后,你必须将这些都编译在一个单独的二进制aif文件中,你可以用如下两个方法:
使用abld来编译.
使用命令行工具aiftool和bmconv .
使用abld进行编译
使用abld工具编译时,我们需要在mmp工程文件中使用aif语句块,它应该列出目标文件和源文件的路径名,以及bitmaps文件,如
aif hello.aif helloaif.rss icon1.bmp iconmask1.bmp icon2.bmp iconmask2.bmp
指明要在应用程序目录中编译成hello.aif,它是从源文件helloaif.rss中,以及icon1.bmp已经icon2.bmp和他们的相关的mask。注意这里mask bitmap必须紧跟在相关的icon后面。
在工程进行abld操作时才进行aif文件的编译,abld会调用低层的aiftool和bmconv来编译aif文件。这些工具也可以直接使用。
使用aiftool及bmconv编译
位图必须要转化为一个单独的multi-bitmap(.mbm)文件,这使用的是bitmap转换工具bmconv,你需要提供一个bitmap列表给bmconv,注意mask也是必须的。
生成aif文件
Aiftool将编译资源定义文件,这要和mbm文件一起,在aif文件中,如:
aiftool hello hello.mbm
这里使用hello.rss和hello.mbm,然后产生hello.aif。