diff --git a/docs/波形预览功能技术文档.md b/docs/波形预览功能技术文档.md new file mode 100644 index 0000000..3102c62 --- /dev/null +++ b/docs/波形预览功能技术文档.md @@ -0,0 +1,444 @@ +# 波形预览功能技术文档 + +## 功能概述 + +在对话界面中显示 VCD 波形文件的预览卡片,用户可以查看前几个信号的真实波形,并通过"展开查看"按钮打开完整的波形查看器。 + +## 功能流程 + +``` +用户输入"生成VCD"命令 + ↓ +系统执行 iverilog 编译和仿真 + ↓ +生成 VCD 文件 + ↓ +在对话界面显示波形预览卡片 + ├─ 显示真实的波形图(前3个信号) + ├─ 显示信号名称和波形 + └─ "展开查看"按钮 + ↓ +点击"展开查看"按钮 + ↓ +打开完整的 VCDViewerPanel 波形查看器 +``` + +## 文件结构 + +### 1. `src/views/waveformPreviewContent.ts` +**功能:** 波形预览组件的独立模块 + +**导出函数:** +- `getWaveformPreviewContent()` - 返回波形预览组件的 CSS 样式 +- `getWaveformPreviewScript()` - 返回波形预览组件的 JavaScript 代码 + +**主要功能:** +- 创建波形预览卡片的 HTML 结构 +- 从 VCD 文件中提取真实信号数据 +- 使用 SVG 绘制波形图 + - 单比特信号:绘制数字波形(高/低电平) + - 多比特信号:绘制总线波形(梯形) +- 处理"展开查看"按钮点击事件 + +**关键函数:** +```javascript +createWaveformPreview(vcdFilePath, fileName) + - 创建波形预览卡片的 DOM 结构 + - 包含头部(标题 + 展开按钮)和内容区域 + +loadMiniWaveform(containerId, vcdFilePath, loadingDiv) + - 请求后端获取 VCD 文件信息 + +renderWaveformInfo(containerId, vcdInfo) + - 接收 VCD 信息并渲染波形 + +drawRealWaveform(signals) + - 根据真实信号数据绘制 SVG 波形图 + - 支持单比特和多比特信号 + - 使用不同颜色区分信号 + +openFullWaveform(vcdFilePath) + - 发送消息打开完整波形查看器 + +addWaveformPreviewToMessage(messageDiv, vcdFilePath, fileName) + - 将波形预览组件添加到消息中 +``` + +--- + +### 2. `src/views/webviewContent.ts` +**功能:** 主 WebView 页面,集成波形预览组件 + +**修改内容:** +- 导入波形预览组件的样式和脚本 +- 在 `