{"version":3,"file":"bars.cjs","sources":["../../../../../src/elements/oscilloscope/renderers/bars.js"],"sourcesContent":["import paper from '@chnak/paper';\n\n/**\n * 柱状样式默认配置\n */\nexport const defaultConfig = {\n  barWidth: 2, // 柱状图宽度\n  barGap: 1, // 柱状图间距\n};\n\n/**\n * 柱状波形渲染器\n * @param {Object} element - 元素实例\n * @param {Array} data - 波形数据\n * @param {number} x - X坐标\n * @param {number} y - Y坐标\n * @param {number} width - 宽度\n * @param {number} height - 高度\n * @param {number} time - 当前时间\n * @param {Object} config - 配置对象（合并了默认配置和用户配置）\n */\nexport default function renderBars(element, data, x, y, width, height, time, config = {}) {\n  // 合并默认配置\n  const cfg = { ...defaultConfig, ...config };\n  \n  const centerY = y + height / 2;\n  const barCount = Math.floor(width / (cfg.barWidth + cfg.barGap));\n  const step = Math.max(1, Math.floor(data.length / barCount));\n  const amplitude = (height / 2) * element.sensitivity;\n\n  for (let i = 0; i < barCount; i++) {\n    const dataIndex = i * step;\n    if (dataIndex >= data.length) break;\n\n    // 计算该段的平均值\n    let sum = 0;\n    let count = 0;\n    for (let j = dataIndex; j < Math.min(dataIndex + step, data.length); j++) {\n      sum += Math.abs(data[j]);\n      count++;\n    }\n    const avg = count > 0 ? sum / count : 0;\n\n    const barX = x + i * (cfg.barWidth + cfg.barGap);\n    const barHeight = avg * amplitude * 2;\n\n    // 绘制柱状图\n    const bar = new paper.Path.Rectangle({\n      rectangle: new paper.Rectangle(\n        barX,\n        centerY - barHeight / 2,\n        cfg.barWidth,\n        barHeight\n      ),\n      fillColor: element.waveColor,\n    });\n\n    // 如果启用镜像，绘制下半部分\n    if (element.mirror) {\n      const barBottom = new paper.Path.Rectangle({\n        rectangle: new paper.Rectangle(\n          barX,\n          centerY,\n          cfg.barWidth,\n          barHeight / 2\n        ),\n        fillColor: element.waveColor,\n      });\n    }\n  }\n}\n\nrenderBars.style = 'bars';\n\n"],"names":[],"mappings":";;;;;;AAEA;AACA;AACA;AACY,MAAC,aAAa,GAAG;AAC7B,EAAE,QAAQ,EAAE,CAAC;AACb,EAAE,MAAM,EAAE,CAAC;AACX;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACe,SAAS,UAAU,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,EAAE,EAAE;AAC1F;AACA,EAAE,MAAM,GAAG,GAAG,EAAE,GAAG,aAAa,EAAE,GAAG,MAAM,EAAE;AAC7C;AACA,EAAE,MAAM,OAAO,GAAG,CAAC,GAAG,MAAM,GAAG,CAAC;AAChC,EAAE,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI,GAAG,CAAC,QAAQ,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC;AAClE,EAAE,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC,CAAC;AAC9D,EAAE,MAAM,SAAS,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,OAAO,CAAC,WAAW;;AAEtD,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,EAAE,CAAC,EAAE,EAAE;AACrC,IAAI,MAAM,SAAS,GAAG,CAAC,GAAG,IAAI;AAC9B,IAAI,IAAI,SAAS,IAAI,IAAI,CAAC,MAAM,EAAE;;AAElC;AACA,IAAI,IAAI,GAAG,GAAG,CAAC;AACf,IAAI,IAAI,KAAK,GAAG,CAAC;AACjB,IAAI,KAAK,IAAI,CAAC,GAAG,SAAS,EAAE,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,GAAG,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,EAAE;AAC9E,MAAM,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAC9B,MAAM,KAAK,EAAE;AACb,IAAI;AACJ,IAAI,MAAM,GAAG,GAAG,KAAK,GAAG,CAAC,GAAG,GAAG,GAAG,KAAK,GAAG,CAAC;;AAE3C,IAAI,MAAM,IAAI,GAAG,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,QAAQ,GAAG,GAAG,CAAC,MAAM,CAAC;AACpD,IAAI,MAAM,SAAS,GAAG,GAAG,GAAG,SAAS,GAAG,CAAC;;AAEzC;AACA,IAAgB,IAAI,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC;AACzC,MAAM,SAAS,EAAE,IAAI,KAAK,CAAC,SAAS;AACpC,QAAQ,IAAI;AACZ,QAAQ,OAAO,GAAG,SAAS,GAAG,CAAC;AAC/B,QAAQ,GAAG,CAAC,QAAQ;AACpB,QAAQ;AACR,OAAO;AACP,MAAM,SAAS,EAAE,OAAO,CAAC,SAAS;AAClC,KAAK;;AAEL;AACA,IAAI,IAAI,OAAO,CAAC,MAAM,EAAE;AACxB,MAAwB,IAAI,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC;AACjD,QAAQ,SAAS,EAAE,IAAI,KAAK,CAAC,SAAS;AACtC,UAAU,IAAI;AACd,UAAU,OAAO;AACjB,UAAU,GAAG,CAAC,QAAQ;AACtB,UAAU,SAAS,GAAG;AACtB,SAAS;AACT,QAAQ,SAAS,EAAE,OAAO,CAAC,SAAS;AACpC,OAAO;AACP,IAAI;AACJ,EAAE;AACF;;AAEA,UAAU,CAAC,KAAK,GAAG,MAAM;;;;;"}