clip studio paint插件开发之服务套件(三)

        本篇介绍属性服务第一部分。

四、属性服务

        该服务主要提供处理过滤器中被使用的参数的功能。结构体定义如下:

typedef	struct	_TriglavPlugInPropertyService {
	TriglavPlugInPropertyCreateProc					   createProc;
	TriglavPlugInPropertyRetainProc					   retainProc;
	TriglavPlugInPropertyReleaseProc				   releaseProc;
	TriglavPlugInPropertyAddItemProc				   addItemProc;
	TriglavPlugInPropertySetBooleanValueProc		   setBooleanValueProc;
	TriglavPlugInPropertyGetBooleanValueProc    	   getBooleanValueProc;
	TriglavPlugInPropertySetBooleanDefaultValueProc    setBooleanDefaultValueProc;
	TriglavPlugInPropertyGetBooleanDefaultValueProc    getBooleanDefaultValueProc;
	TriglavPlugInPropertySetIntegerValueProc		   setIntegerValueProc;
	TriglavPlugInPropertyGetIntegerValueProc           getIntegerValueProc;
	TriglavPlugInPropertySetIntegerDefaultValueProc    setIntegerDefaultValueProc;
	TriglavPlugInPropertyGetIntegerDefaultValueProc    getIntegerDefaultValueProc;
	TriglavPlugInPropertySetIntegerMinValueProc 	   setIntegerMinValueProc;
	TriglavPlugInPropertyGetIntegerMinValueProc		   getIntegerMinValueProc;
	TriglavPlugInPropertySetIntegerMaxValueProc		   setIntegerMaxValueProc;
	TriglavPlugInPropertyGetIntegerMaxValueProc		   getIntegerMaxValueProc;
	TriglavPlugInPropertySetDecimalValueProc		   setDecimalValueProc;
	TriglavPlugInPropertyGetDecimalValueProc		   getDecimalValueProc;
	TriglavPlugInPropertySetDecimalDefaultValueProc	   setDecimalDefaultValueProc;
	TriglavPlugInPropertyGetDecimalDefaultValueProc	   getDecimalDefaultValueProc;
	TriglavPlugInPropertySetDecimalMinValueProc		   setDecimalMinValueProc;
	TriglavPlugInPropertyGetDecimalMinValueProc		   getDecimalMinValueProc;
	TriglavPlugInPropertySetDecimalMaxValueProc		   setDecimalMaxValueProc;
	TriglavPlugInPropertyGetDecimalMaxValueProc		   getDecimalMaxValueProc;
} TriglavPlugInPropertyService;

        1. 创建一个属性对象,不需要时需手动调用函数 releaceProc() 销毁。

/**
 * propertyObject: 属性对象
**/
TRIGLAV_PLUGIN_API *createProc(
    TriglavPlugInPropertyObject* propertyObject);

        2. 销毁属性对象

/**
 * propertyObject: 属性对象
**/
TRIGLAV_PLUGIN_API *releaceProc(
    TriglavPlugInPropertyObject* propertyObject);

        3. 将项目添加导致到指定的属性对象

/**
 * propertyObject: 属性对象
 * itemKey: 项目键
 * valueType: 值类型
 * valueKind: 值种类
 * inputKind: 输入种类
 * caption: 标题
 * accessKey: 访问密钥
**/
TRIGLAV_PLUGIN_API *addItemProc(
    TriglavPlugInPropertyObject* propertyObject, 
    const TriglavPlugInInt itemKey, 
    const TriglavPlugInInt valueType, 
    const TriglavPlugInInt valueKind, 
    const TriglavPlugInInt inputKind, 
    const TriglavPlugInStringObject caption, 
    const TriglavPlugInChar accessKey);

        其中 valueTypevalueKindinputKind 分别从以下常量中获取:

// value type
#define    kTriglavPlugInPropertyValueTypeVoid                 (0x00)
#define    kTriglavPlugInPropertyValueTypeBoolean              (0x01)
#define    kTriglavPlugInPropertyValueTypeEnumeration          (0x02)
#define    kTriglavPlugInPropertyValueTypeInteger              (0x11)
#define    kTriglavPlugInPropertyValueTypeDecimal              (0x12)
#define    kTriglavPlugInPropertyValueTypePoint                (0x21)
#define    kTriglavPlugInPropertyValueTypeString               (0x31)
// value kind
#define    kTriglavPlugInPropertyValueKindDefault              (0x11)
#define    kTriglavPlugInPropertyValueKindPixel                (0x21)
// input kind
#define    kTriglavPlugInPropertyInputKindHide                 (0x10)
#define    kTriglavPlugInPropertyInputKindDefault              (0x11)
#define    kTriglavPlugInPropertyInputKindPushButton           (0x21)
#define    kTriglavPlugInPropertyInputKindCanvas               (0x31)

        4. 对指定属性对象的指定 itemKey 设定真值

/**
 * propertyObject: 属性对象
 * itemKey: 项目键
 * value: 真值
**/
TRIGLAV_PLUGIN_API *setBooleanValueProc(
    TriglavPlugInPropertyObject* propertyObject, 
    const TriglavPlugInInt itemKey, 
    const TriglavPlugInBool value);

        5. 获取指定属性对象的指定 itemKey 的真值

/**
 * propertyObject: 属性对象
 * itemKey: 项目键
 * value: 真值
**/
TRIGLAV_PLUGIN_API *getBooleanValueProc(
    TriglavPlugInPropertyObject* propertyObject, 
    const TriglavPlugInInt itemKey, 
    TriglavPlugInBool* value);

        6. 对指定属性对象的指定 itemKey 设定默认真值

/**
 * propertyObject: 属性对象
 * itemKey: 项目键
 * defaultValue: 默认真值
**/
TRIGLAV_PLUGIN_API *setBooleanDefaultValueProc(
    TriglavPlugInPropertyObject* propertyObject, 
    const TriglavPlugInInt itemKey, 
    const TriglavPlugInBool defaultValue);

        7. 获取指定属性对象的指定 itemKey 的默认真值

/**
 * propertyObject: 属性对象
 * itemKey: 项目键
 * defaultValue: 默认真值
**/
TRIGLAV_PLUGIN_API *getBooleanDefaultValueProc(
    TriglavPlugInPropertyObject* propertyObject, 
    const TriglavPlugInInt itemKey, 
    TriglavPlugInBool* defaultValue);

        8. 对指定属性对象的指定 itemKey 设置整数值

/**
 * propertyObject: 属性对象
 * itemKey: 项目键
 * value: 整数值
**/
TRIGLAV_PLUGIN_API *setIntegerValueProc(
    TriglavPlugInPropertyObject* propertyObject, 
    const TriglavPlugInInt itemKey, 
    const TriglavPlugInInt value);

        9. 获取指定属性对象的指定 itemKey 的整数值

/**
 * propertyObject: 属性对象
 * itemKey: 项目键
 * value: 整数值
**/
TRIGLAV_PLUGIN_API *getIntegerValueProc(
    TriglavPlugInPropertyObject* propertyObject, 
    const TriglavPlugInInt itemKey, 
    TriglavPlugInInt* value);

        10. 对指定属性对象的指定 itemKey 设置默认整数值

/**
 * propertyObject: 属性对象
 * itemKey: 项目键
 * defaultValue: 默认整数值
**/
TRIGLAV_PLUGIN_API *setIntegerDefaultValueProc(
    TriglavPlugInPropertyObject* propertyObject, 
    const TriglavPlugInInt itemKey, 
    const TriglavPlugInInt defaultValue);

        11. 获取指定属性对象的指定 itemKey 的默认整数值

/**
 * propertyObject: 属性对象
 * itemKey: 项目键
 * defaultValue: 默认整数值
**/
TRIGLAV_PLUGIN_API *getIntegerDefaultValueProc(
    TriglavPlugInPropertyObject* propertyObject, 
    const TriglavPlugInInt itemKey, 
    TriglavPlugInInt* defaultValue);

        12. 对指定属性对象的指定 itemKey 设置最小整数值

/**
 * propertyObject: 属性对象
 * itemKey: 项目键
 * minValue: 最小整数值
**/
TRIGLAV_PLUGIN_API *setIntegerMinValueProc(
    TriglavPlugInPropertyObject* propertyObject, 
    const TriglavPlugInInt itemKey, 
    const TriglavPlugInInt minValue);

        13. 获取指定属性对象的指定 itemKey 的最小整数值

/**
 * propertyObject: 属性对象
 * itemKey: 项目键
 * minValue: 最小整数值
**/
TRIGLAV_PLUGIN_API *getIntegerMinValueProc(
    TriglavPlugInPropertyObject* propertyObject, 
    const TriglavPlugInInt itemKey, 
    TriglavPlugInInt* minValue);

        14. 对指定属性对象的指定 itemKey 设置最大整数值

/**
 * propertyObject: 属性对象
 * itemKey: 项目键
 * maxValue: 最大整数值
**/
TRIGLAV_PLUGIN_API *setIntegerMaxValueProc(
    TriglavPlugInPropertyObject* propertyObject, 
    const TriglavPlugInInt itemKey, 
    const TriglavPlugInInt maxValue);

        15. 获取指定属性对象的指定 itemKey 的最大整数值

/**
 * propertyObject: 属性对象
 * itemKey: 项目键
 * maxValue: 最大整数值
**/
TRIGLAV_PLUGIN_API *getIntegerMaxValueProc(
    TriglavPlugInPropertyObject* propertyObject, 
    const TriglavPlugInInt itemKey, 
    TriglavPlugInInt* maxValue);

        16. 对指定属性对象的指定 itemKey 设置小数值

/**
 * propertyObject: 属性对象
 * itemKey: 项目键
 * value: 小数值
**/
TRIGLAV_PLUGIN_API *setDecimalValueProc(
    TriglavPlugInPropertyObject* propertyObject, 
    const TriglavPlugInInt itemKey, 
    const TriglavPlugInDouble value);

        17. 获取指定属性对象的指定 itemKey 的小数值

/**
 * propertyObject: 属性对象
 * itemKey: 项目键
 * value: 小数值
**/
TRIGLAV_PLUGIN_API *getDecimalValueProc(
    TriglavPlugInPropertyObject* propertyObject, 
    const TriglavPlugInInt itemKey, 
    TriglavPlugInDouble* value);

        18. 对指定属性对象的指定 itemKey 设置默认小数值

/**
 * propertyObject: 属性对象
 * itemKey: 项目键
 * defaultValue: 默认小数值
**/
TRIGLAV_PLUGIN_API *setDecimalDefaultValueProc(
    TriglavPlugInPropertyObject* propertyObject, 
    const TriglavPlugInInt itemKey, 
    const TriglavPlugInDouble defaultValue);

        19. 获取指定属性对象的指定 itemKey 的默认小数值

/**
 * propertyObject: 属性对象
 * itemKey: 项目键
 * defaultValue: 默认小数值
**/
TRIGLAV_PLUGIN_API *getDecimalDefaultValueProc(
    TriglavPlugInPropertyObject* propertyObject, 
    const TriglavPlugInInt itemKey, 
    TriglavPlugInDouble* defaultValue);

        20. 对指定属性对象的指定 itemKey 设置最小小数值

/**
 * propertyObject: 属性对象
 * itemKey: 项目键
 * minValue: 最小小数值
**/
TRIGLAV_PLUGIN_API *setDecimalMinValueProc(
    TriglavPlugInPropertyObject* propertyObject, 
    const TriglavPlugInInt itemKey, 
    const TriglavPlugInDouble minValue);

        21. 获取指定属性对象的指定 itemKey 的最小小数值

/**
 * propertyObject: 属性对象
 * itemKey: 项目键
 * minValue: 最小小数值
**/
TRIGLAV_PLUGIN_API *getDecimalMinValueProc(
    TriglavPlugInPropertyObject* propertyObject, 
    const TriglavPlugInInt itemKey, 
    TriglavPlugInDouble* minValue);

        20. 对指定属性对象的指定 itemKey 设置最大小数值

/**
 * propertyObject: 属性对象
 * itemKey: 项目键
 * maxValue: 最大小数值
**/
TRIGLAV_PLUGIN_API *setDecimalMaxValueProc(
    TriglavPlugInPropertyObject* propertyObject, 
    const TriglavPlugInInt itemKey, 
    const TriglavPlugInDouble maxValue);

        21. 获取指定属性对象的指定 itemKey 的最大小数值

/**
 * propertyObject: 属性对象
 * itemKey: 项目键
 * maxValue: 最大小数值
**/
TRIGLAV_PLUGIN_API *getDecimalMaxValueProc(
    TriglavPlugInPropertyObject* propertyObject, 
    const TriglavPlugInInt itemKey, 
    TriglavPlugInDouble* maxValue);

        以上就是过滤器中使用参数的部分 api,下一篇将介绍剩余部分。

你可能感兴趣的:(csp,clipStudioPaint,csp,filter,c++)