import { Transformer } from './interface'; type TMusicData = { mode: number; hue: number; saturation: number; value: number; brightness: number; temperature: number; }; /** * APP 音乐标准 DP 协议转换器,用于音乐律动数据与 DP 十六进制协议的双向转换 * * @public * @since @ray-js/panel-sdk 1.0.0 * @remarks * 适用于灯类产品的 APP 音乐律动 DP(如 `music_data`),将音乐模式、HSV 色值、 * 白光亮度与色温等参数与十六进制 DP 字符串互转。 * 协议格式:mode(1位) + hue(4位) + saturation(4位) + value(4位) + brightness(4位) + temperature(4位) * * @example * ```ts * import { MusicTransformer } from '@ray-js/panel-sdk'; * * const transformer = new MusicTransformer(); * // 解析 DP 字符串 * const data = transformer.parser('0016803e803e803e803e8'); * // => { mode: 0, hue: 360, saturation: 1000, value: 1000, brightness: 1000, temperature: 1000 } * * // 格式化为 DP 字符串 * const dpStr = transformer.formatter({ mode: 0, hue: 120, saturation: 800, value: 900, brightness: 500, temperature: 300 }); * ``` */ export default class MusicTransformer implements Transformer { /** * @internal */ uuid: string; /** * @internal */ defaultValue: TMusicData; /** * 创建 APP 音乐转换器实例 * * @public * @since @ray-js/panel-sdk 1.0.0 * @param uuid - DP 标识符,默认为 `'music_data'` * @param defaultValue - 默认音乐数据,当解析失败时返回此值 */ constructor(uuid?: string, defaultValue?: null); /** * 校验字符串是否为合法的十六进制字符串 * * @internal * @param str - 待校验字符串 * @returns 是否为合法十六进制字符串 */ isHexadecimal(str: any): boolean; /** * 将 DP 十六进制字符串解析为音乐数据对象 * * @public * @since @ray-js/panel-sdk 1.0.0 * @param val - 十六进制 DP 字符串 * @returns 包含 mode、hue、saturation、value、brightness、temperature 的音乐数据对象;解析失败时返回默认值 * * @example * ```ts * const data = transformer.parser('0016803e803e803e803e8'); * // => { mode: 0, hue: 360, saturation: 1000, value: 1000, brightness: 1000, temperature: 1000 } * ``` */ parser(val?: string): { mode: any; hue: any; saturation: any; value: any; brightness: any; temperature: any; }; /** * 将十进制数值转为指定长度的十六进制字符串 * * @internal * @param value - 十进制数值 * @param length - 目标十六进制字符串长度 * @returns 补零后的十六进制字符串 */ to16(value: any, length: any): string; /** * 将音乐数据对象格式化为 DP 十六进制字符串 * * @public * @since @ray-js/panel-sdk 1.0.0 * @param data - 包含 mode、hue、saturation、value、brightness、temperature 的音乐数据对象 * @returns 十六进制 DP 字符串,格式为 mode(1位) + hue(4位) + saturation(4位) + value(4位) + brightness(4位) + temperature(4位) * * @example * ```ts * const dpStr = transformer.formatter({ * mode: 0, hue: 120, saturation: 800, * value: 900, brightness: 500, temperature: 300 * }); * ``` */ formatter(data: TMusicData): string; } export {};