import * as _vueuse_core0 from "@vueuse/core"; import * as vue from "vue"; import { TemplateRef } from "vue"; //#region src/use-spectrum.d.ts /** * 柱状频谱选项 */ type SpectrumBarOptions = { /** * 柱形宽度 * @default 8 */ width?: number; /** * 柱形最小高度 * @default 8 */ minHeight?: number; /** * 柱形间距 * @default 2 */ spacing?: number; /** * 柱形圆角半径 * @default 4 */ radius?: number; /** * 颜色,可以是单个颜色字符串或渐变色数组 */ color?: [string, string] | string; /** * 是否显示阴影 */ shadow?: boolean; }; /** * 线性频谱选项 */ type SpectrumLineOptions = { /** * 线条宽度 * @default 1 */ width?: number; /** * 采样点间距 * @default 20 */ spacing?: number; /** * 颜色,可以是单个颜色字符串或渐变色数组 */ color?: [string, string] | string; /** * 平滑度,取值范围 0-1 * @default 0.5 */ smoothness?: number; /** * 是否填充线条下方区域 * @default true */ fill?: boolean; /** * 是否显示阴影 */ shadow?: boolean; }; /** * 环形柱状频谱选项 */ type SpectrumCircleBarOptions = { /** * 柱形宽度 * @default 8 */ width?: number; /** * 柱形最小高度 * @default 8 */ minHeight?: number; /** * 柱形间距 * @default 2 */ spacing?: number; /** * 基础圆环半径,默认为画布最小边的 30% */ radius?: number; /** * 柱形圆角半径 * @default 4 */ barRadius?: number; /** * 颜色,可以是单个颜色字符串或渐变色数组 */ color?: [string, string] | string; /** * 起始角度 * @default 0 */ startAngle?: number; /** * 结束角度 * @default Math.PI * 2 */ endAngle?: number; /** * 是否显示阴影 */ shadow?: boolean; }; /** * 环形线性频谱选项 */ type SpectrumCircleLineOptions = { /** * 线条宽度 * @default 1 */ width?: number; /** * 采样点间距 * @default 10 */ spacing?: number; /** * 基础圆环半径,默认为画布最小边的 30% */ radius?: number; /** * 颜色,可以是单个颜色字符串或渐变色数组 */ color?: [string, string] | string; /** * 平滑度,取值范围 0-1 * @default 0.5 */ smoothness?: number; /** * 是否填充线条下方区域 * @default true */ fill?: boolean; /** * 起始角度 * @default 0 */ startAngle?: number; /** * 结束角度 * @default Math.PI * 2 */ endAngle?: number; /** * 是否显示阴影 */ shadow?: boolean; }; /** * 频谱配置选项 */ type SpectrumOptions = { /** * 频谱类型 * @default 'bar' */ type?: 'bar' | 'line' | 'circle-bar' | 'circle-line'; /** * 默认颜色,可以是单个颜色字符串或渐变色数组 * @default '#00FFAA' */ color?: [string, string] | string; /** * 是否显示阴影 * @default true */ shadow?: boolean; /** * 柱状频谱选项 */ barOptions?: SpectrumBarOptions; /** * 线性频谱选项 */ lineOptions?: SpectrumLineOptions; /** * 环形柱状频谱选项 */ circleBarOptions?: SpectrumCircleBarOptions; /** * 环形线性频谱选项 */ circleLineOptions?: SpectrumCircleLineOptions; /** * 动画速度,取值范围 0-1 * @default 0.5 */ animationSpeed?: number; /** * 是否手动控制绘制 * @default false */ manual?: boolean; }; /** * 音频频谱可视化钩子函数 * * 基于 Canvas 的音频频率数据可视化,支持多种频谱类型(柱状、线性、环形柱状、环形线性) * * @param canvasRef Canvas 元素的模板引用 * @param frequencyDataGetter 获取频率数据的函数 * @param options 频谱配置选项 * @returns 返回画布引用、暂停/恢复函数和活动状态 * * @example * ```ts * const canvasRef = ref() * const { pause, resume, isActive } = useSpectrum(canvasRef, () => frequencyData, { * type: 'bar', * color: ['#00FFAA', '#0088FF'], * animationSpeed: 0.3 * }) * ``` * * @example * ```ts * // 环形线性频谱 * const { resume } = useSpectrum(canvasRef, () => frequencyData, { * type: 'circle-line', * color: '#FF6B6B', * circleLineOptions: { * radius: 80, * smoothness: 0.7, * fill: true * } * }) * ``` */ declare function useSpectrum(canvasRef: TemplateRef, frequencyDataGetter: () => Uint8Array, options?: SpectrumOptions): { canvasRef: Readonly>; pause: _vueuse_core0.Fn; resume: _vueuse_core0.Fn; isActive: Readonly>; }; /** * useSpectrum 函数的返回类型 */ type UseSpectrumReturns = ReturnType; //#endregion export { SpectrumBarOptions, SpectrumCircleBarOptions, SpectrumCircleLineOptions, SpectrumLineOptions, SpectrumOptions, UseSpectrumReturns, useSpectrum };