import { Transformer } from './interface'; export interface ColourData { hue: number; saturation: number; value: number; } /** 涂抹类型 */ export declare enum SmearMode { all = 0, single = 1, clear = 2 } /** 调光器模式 */ export declare enum DimmerMode { white = 0, colour = 1, colourCard = 2, combination = 3 } /** 涂抹dp数据 */ export interface SmearDataType { /** 版本号 */ version?: number; /** 模式 (0: 白光, 1: 彩光, 2: 色卡, 3: 组合) */ dimmerMode: DimmerMode; /** 涂抹效果 (0: 无, 1: 渐变) */ effect?: number; /** 灯带UI段数 */ ledNumber?: number; /** 涂抹动作 (0: 油漆桶, 1: 涂抹, 2: 橡皮擦) */ smearMode?: SmearMode; /** 彩光色相 */ hue?: number; /** 彩光饱和度 */ saturation?: number; /** 彩光亮度 */ value?: number; /** 白光亮度 */ brightness?: number; /** 白光色温 */ temperature?: number; /** 当前涂抹色是否是彩光 */ isColour?: boolean; /** 点选类型(0: 连续,1: 单点) */ singleType?: number; /** 当次操作的灯带数 */ quantity?: number; /** 组合类型 */ combineType?: number; /** 颜色组合 */ combination?: ColourData[]; /** 编号 */ indexs?: Set; } /** * 涂抹 DP 协议转换器,用于灯带涂抹控制数据与 DP 十六进制协议的双向转换 * * @public * @since @ray-js/panel-sdk 1.0.0 * @remarks * 适用于灯带类产品的涂抹控制 DP(如 `paint_colour_data`),支持白光、彩光、色卡、组合四种调光模式, * 以及油漆桶、涂抹、橡皮擦三种涂抹效果。将涂抹配置参数与十六进制 DP 字符串互转。 * * @example * ```ts * import { SmearTransformer } from '@ray-js/panel-sdk'; * * const transformer = new SmearTransformer(); * // 解析涂抹 DP 字符串 * const data = transformer.parser('0001000a00000003e803e8'); * * // 格式化为 DP 字符串 * const dpStr = transformer.formatter({ * dimmerMode: DimmerMode.colour, * smearMode: SmearMode.all, * hue: 120, * saturation: 1000, * value: 1000, * }); * ``` */ export default class SmearTransformer implements Transformer { /** * @internal */ uuid: string; /** * @internal */ defaultValue: SmearDataType; /** * 创建涂抹转换器实例 * * @public * @since @ray-js/panel-sdk 1.0.0 * @param uuid - DP 标识符,默认为 `paint_colour_data` * @param defaultValue - 默认涂抹数据,当解析失败时返回此值 */ constructor(uuid?: string, defaultValue?: { version: number; dimmerMode: DimmerMode; effect: number; smearMode: SmearMode; hue: number; saturation: number; value: number; brightness: number; temperature: number; }); /** * 校验字符串是否为合法的十六进制字符串 * * @internal * @param str - 待校验字符串 * @returns 是否为合法十六进制字符串 */ isHexadecimal(str: any): boolean; /** * 将 DP 十六进制字符串解析为涂抹数据对象 * * @public * @since @ray-js/panel-sdk 1.0.0 * @param val - 十六进制 DP 字符串 * @returns 涂抹数据对象,包含版本号、调光模式、涂抹模式、颜色参数等;解析失败时返回默认值 * * @example * ```ts * const data = transformer.parser('0001000a00000003e803e8'); * // => { version: 0, dimmerMode: 1, effect: 0, ledNumber: 10, smearMode: 0, hue: 0, saturation: 1000, value: 1000 } * ``` */ parser(val?: string): SmearDataType; /** * 将涂抹数据对象格式化为 DP 十六进制字符串 * * @public * @since @ray-js/panel-sdk 1.0.0 * @param data - 涂抹数据对象,包含调光模式、涂抹模式、颜色参数等 * @returns 十六进制 DP 字符串 * * @example * ```ts * const dpStr = transformer.formatter({ * version: 0, * dimmerMode: DimmerMode.colour, * effect: 0, * ledNumber: 20, * smearMode: SmearMode.all, * hue: 120, * saturation: 1000, * value: 1000, * }); * ``` */ formatter(data: SmearDataType): string; }