clip studio paint插件开发之记录套件(一)

        记录套件端提供了可以在特定条件下使用的函数。返回值为 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)

        

        以上就是 ModuleInitializeRecordFilterInitializeRecord 的全部 api 了,下篇将介绍 FilterRunRecord 的 api。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值