InDesign插件开发中的ODFRC

来源:互联网 发布:樱井知香迅雷种子磁力 编辑:程序博客网 时间:2024/05/19 17:55

OpenDoc Framework Resource Compiler即ODFRC,再百度上很难找到其相关的资料,但是他确实InDesign插件开发中非常重要的内容,其中fr文件就是遵照的ODFRC的标准。

插件在fr文件中定义插件需要使用的特定资源,一个fr文件可以包含所有的资源,也可以包含其他fr文件。

fr文件包含:

1.#include语句,包含为资源提供IDs的文件,和额外的资源定义和声明文件。

2.资源定义,可以声明新的资源类型

3.资源声明                

在fr文件中声明插件的版本类似这样:

resource PluginVersion (kSDKDefPluginVersionResourceID)

{

kTargetVersion, //1

kFrmLblPluginID, //2

kSDKDefPluginMajorVersionNumber, kSDKDefPluginMinorVersionNumber, //3

kSDKDefHostMajorVersionNumber, kSDKDefHostMinorVersionNumber, //4

kFrmLblLastMajorVersionNumber, kFrmLblLastMinorVersionNumber, //5

{ kInDesignProduct, kInCopyProduct, kInDesignServerProduct }, //6

{ kWildFS }, //7

kModelPlugin, //8

kFrmLblVersion //9

};

1.插件编译的目标类型

2.插件唯一ID

3.插件主版本和次版本号

4.插件支持的程序的主版本和次版本号

5.兼容版本

6.插件的目标程序类型

7.特性集支持情况

8.插件支持插件类型的情况

9.四个组成部分的版本字符串,如7.0.0.0

插件的依赖,如一个用户界面的插件需要依赖一个现存的模型插件。

resrouce PluginDependency(1)

{

kWildFS,

{

kWatermarkPluginID, kWatermarkPluginName,

kMajorVersionNumber, kMinorVersionNumber,

}

};

额外的插件信息

插件可以为文档提供额外的数据。这就避免了不是预料之中的文档打开。当插件缺失时,会显示一些错误信息。

resource ExtraPluginInfo(1)

{

"Facemap", //公司名字

“http://www.facemap.com.cn”, //URL

"你可以从这里下载到这个插件。。。", //插件缺失时的提示信息

};

语法列表

插件可以往文档数据库中写入和重新获取实现的数据。这样的插件必须要能写入和读取它的数据。一些时候,数据进行了变更,但是为了支持较早以前的版本,语法转换是一个在资源等级上处理数据转换的方便的方式。典型的如下:

resource SchemaList(1)

{{

Schema

{

kMyDataImpl,

{kRocketMajorFormat, kMyDataChangeChg},

{

{Int32{1,kMyDataDefaultIndex}},

{Int32{2,kMyDataDefaultSize}},

}

}

};

类描述表

resource ClassDescriptionTable(1)

{{{

AddIn

{

kWorkspaceBoss,

kInvalidClass,

{

IID_IMYDATA, kMyDataImpl,

}

},


Class

{

kMyDataBoss,

kSomeBaseClassDataBoss, //Base Class

{

IID_IMYDATA, kMyDataImpl,

}

},

}}};

工场列表

插件必须注册每个实现。工厂列表资源典型的就是包括在其他头文件中定义的实现注册。

resource FactoryList(1)

{

kImplementationIDSpace,

{

#include "FrmLblUIFactoryList.h"

}

};

效果上等同于:

resource FactoryList(1)

{

kImplementationIDSpace,

{

REGISTER_PMINTERFACE(FrmLblUIActionComponent, kFrmLblUIActionComponentImpl)

REGISTER_PMINTERFACE(FrmLblUIDialogController, kFrmLblUIDialogControllerImpl)

}

};

本地化索引

插件可以全面本地化,包括本地化字符串和用户界面布局。下面描述了插件可以提供本地化字符串给日本特性集,本地化运行在日本环境下,但是在其他地方使用英文。

resource LocalIndex(kSDKDefStringsResourceID)

{

kStringTableRsrcType,

{

kWildFS, k_enUS, kSDKDefStringsResourceID + index_enUS

kInDesignJapaneseFS, k_jaJP, kSDKDefStringsResourceID + index_jaJP

kWildFS, k_wild, kSDKDefStringsResourceID + index_enUS

}

};

字符表格

用来提供本地化的字符翻译:

resource StringTable(kSDKDefStringsResourceID + index_enUS)

{

k_enUS, //Local Id

kEuropeanWinToMacEncodingConverter, //字符编码转换

{

//菜单字符串

"MyDataOnMenuItem", "My Data On",

...

}

};

用户错误表

一些InDesign API在错误时返回一个错误码。错误码可以映射为更友好的字符串如:

resource UserErrorTable(kSDKDefErrorStringsResourceID)

{

{

kMySetDataFailureErrorCode, "Failed to Set Data",

}

};

还有一些资源,如菜单定义,动作定义,定义对话框和面板的控件。

InDesign支持多线程访问资源。当插件编译后,OFDFRC生成了多个文件夹来包含资源文件。如果资源文件丢失,插件将不能加载。

0 0