记录套件端提供了可以在特定条件下使用的函数。返回值为 TriglavPlugInInt 型常数,为 kTriglavPlugInAPIResultSuccess 表明返回成功,为 kTriglavPlugInAPIResultFailed 表明失败。
在介绍各个 api 之前,先看看插件服务器与记录套件结构体分别是如何定义的:
// 插件服务器
typedef struct _TriglavPlugInServer {
TriglavPlugInRecordSuite recordSuite;
TriglavPlugInServiceSuite serviceSuite;
TriglavPlugInHostObject hostObject;
} TriglavPlugInServer;
// 记录套件
typedef struct _TriglavPlugInRecordSuite {
TriglavPlugInModuleInitializeRecord* moduleInitializeRecord;
TriglavPlugInFilterInitializeRecord* filterInitializeRecord;
TriglavPlugInFilterRunRecord* filterRunRecord;
...
} TriglavPlugInRecordSuite;
这样就可以通过如下语句将插件服务器与具体记录套件关联起来了:
TriglavPlugInServer* pluginServer;
TriglavPlugInModuleInitializeRecord* pModuleInitializeRecord = (*pluginServer).recordSuite.moduleInitializeRecord;
一、模块初始化记录(ModuleInitializeRecord)
模块初始化记录结构体定义如下:
typedef struct _TriglavPlugInModuleInitializeRecord {
TriglavPlugInModuleInitializeGetHostVersionProc getHostVersionProc;
TriglavPlugInModuleInitializeSetModuleIDProc setModuleIDProc;
TriglavPlugInModuleInitializeSetModuleKindProc setModuleKindProc;
} TriglavPlugInModuleInitializeRecord;
1. 获取指定宿主对象的宿主版本,若失败返回 0
/**
* hostVersion: 宿主版本
* hostObject: 宿主对象
**/
TRIGLAV_PLUGIN_API *getHostVersionProc(
TriglavPlugInInt* hostVersion,
TriglavPlugInHostObject hostObject);
2. 在指定的宿主对象设置模块身份
/**
* hostObject: 宿主对象
* moduleID: 模块id
**/
TRIGLAV_PLUGIN_API *setModuleIDProc(
TriglavPlugInHostObject hostObject,
TriglavPlugInStringObject moduleID);
3. 在指定的宿主对象上设置模块类型,若失败,则参数 hostObject 中未设置模块类型。创建过滤器插件时,需将参数 moduleKind 设置为 kTriglavPlugInModuleKindFilter。
/**
* hostObject: 宿主对象
* moduleKind: 模块类型
**/
TRIGLAV_PLUGIN_API *setModuleKindProc(
TriglavPlugInHostObject hostObject,
const TriglavPlugInInt moduleKind);
二、过滤器初始化记录(FilterInitializeRecord)
1. 获取过滤器初始化记录
/**
* record: 记录套件
**/
TRIGLAV_PLUGIN_API *TriglavPlugInGetFilterInitializeRecord(
TriglavPlugInRecordSuite record);
2. 为指定的宿主对象设置过滤器类别名称和访问密钥
/**
* record: 记录套件
* hostObject: 宿主对象
* filterCategoryName: 过滤器类别名称
* accessKey: 访问密钥
**/
TRIGLAV_PLUGIN_API *TriglavPlugInFilterInitializeSetFilterCategoryName(
TriglavPlugInRecordSuite record,
TriglavPlugInHostObject hostObject,
TriglavPlugInStringObject filterCategoryName,
const TriglavPlugInChar accessKey)
3. 为指定的宿主对象设置过滤器名称和访问密钥
/**
* record: 记录套件
* hostObject: 宿主对象
* filterName: 过滤器名称
* accessKey: 访问密钥
**/
TRIGLAV_PLUGIN_API *TriglavPlugInFilterInitializeSetFilterName(
TriglavPlugInRecordSuite record,
TriglavPlugInHostObject hostObject,
TriglavPlugInStringObject filterName,
const TriglavPlugInChar accessKey)
4. 设置是否允许对指定的宿主对象进行预览显示
/**
* record: 记录套件
* hostObject: 宿主对象
* canPreview: 是否允许预览显示
**/
TRIGLAV_PLUGIN_API *TriglavPlugInFilterInitializeSetCanPreview(
TriglavPlugInRecordSuite record,
TriglavPlugInHostObject hostObject,
const TriglavPlugInBool canPreview)
5. 设置是否过滤指定的宿主对象,即使图像上没任何绘制内容
/**
* record: 记录套件
* hostObject: 宿主对象
* useBlankImage: 对于没有绘制任何的可填充图像,是否运行数据
**/
TRIGLAV_PLUGIN_API *TriglavPlugInFilterInitializeSetUseBlankImage(
TriglavPlugInRecordSuite record,
TriglavPlugInHostObject hostObject,
const TriglavPlugInBool useBlankImage)
6. 在指定的对象上设置目标层类型,可指定多个目标层
/**
* record: 记录套件
* hostObject: 宿主对象
* filterName: 过滤器名称
* accessKey: 访问密钥
**/
TRIGLAV_PLUGIN_API *TriglavPlugInFilterInitializeSetTargetKinds(
TriglavPlugInRecordSuite record,
TriglavPlugInHostObject hostObject,
const TriglavPlugInInt* targetKinds,
const TriglavPlugInInt targetKindCount)
目标层定义使用的常量:
#define kTriglavPlugInFilterTargetKindRasterLayerGrayAlpha (0x0101)
#define kTriglavPlugInFilterTargetKindRasterLayerRGBAlpha (0x0102)
#define kTriglavPlugInFilterTargetKindRasterLayerCMYKAlpha (0x0103)
#define kTriglavPlugInFilterTargetKindRasterLayerAlpha (0x0104)
#define kTriglavPlugInFilterTargetKindRasterLayerBinarizationAlpha (0x0105)
#define kTriglavPlugInFilterTargetKindRasterLayerBinarizationGrayAlpha (0x0106)
7. 在指定的宿主对象上设置一个属性对象
/**
* record: 记录套件
* hostObject: 宿主对象
* propertyObject: 属性对象
**/
TRIGLAV_PLUGIN_API *TriglavPlugInFilterInitializeSetProperty(
TriglavPlugInRecordSuite record,
TriglavPlugInHostObject hostObject,
TriglavPlugInPropertyObject propertyObject)
8. 在指定的宿主对象上设置属性回调函数的指针和属性回调中要使用的数据的指针
/**
* record: 记录套件
* hostObject: 宿主对象
* propertyCallBackProc: 属性回调函数
* data: 数据
**/
TRIGLAV_PLUGIN_API *TriglavPlugInFilterInitializeSetPropertyCallBack(
TriglavPlugInRecordSuite record,
TriglavPlugInHostObject hostObject,
TriglavPlugInPropertyCallBackProc propertyCallBackProc,
TriglavPlugInPtr data)
以上就是 ModuleInitializeRecord 和 FilterInitializeRecord 的全部 api 了,下篇将介绍 FilterRunRecord 的 api。