Skip to content

GraphViz v1.2.2

Choose a tag to compare

@SiriLee SiriLee released this 20 Jun 08:25
· 23 commits to main since this release

GraphViz v1.2.2 发行说明

发布日期: 2026-06-20
版本: v1.2.2
仓库: https://github.com/SiriLee/GraphViz
下载: https://github.com/SiriLee/GraphViz/releases/tag/v1.2.2


v1.2.2 变更日志

拖拽跟随修复(核心修复)

v1.2.1 默认图从 11 顶点改为 4 顶点紧簇后,拖拽漂移问题变得明显。根因:拖拽时鼠标跟踪与画面渲染使用不同视图变换(缩放因子随包围盒变化而偏离)。

  • 排除变换方案:拖拽时包围盒排除被拖顶点,使缩放因子恒定
  • 全局对齐:按下瞬间所有顶点数据位置统一重映射,消除视图跳变
  • 松手自动适配:释放后触发正常变换重绘,视图自动缩放包含被拖顶点新位置
  • 边界卡死、出界冻结问题同步解决

解析器严格化

  • 结构化 x-W-y 解析:6 阶段操作符解析,< > 各至多一次且位置受限
  • 权重校验强化:非法浮点数权重 → 报错(不再静默回退为 1.0)
  • 尾部内容检测my-node---B 正确报错(顶点名含 - 须加引号)
  • 新增有效格式A->BA<-B(最简有向边)
  • 引号规则扩展:无引号顶点名遇 - < > 即停,强制引号包裹

文档更新

  • 输入格式文档同步更新(README.md、MANUAL.html)
  • 错误拒绝表扩充(新增 5 个错误示例)
  • 解析器设计章节重写(6 阶段结构化描述)

测试方案

功能 操作 预期
拖拽跟随 拖拽默认图 A-D 任意顶点 严格跟随鼠标,松手视图适配
按下无跳变 点击边缘附近的顶点 按下瞬间画面不变
边界拖拽 拖至窗口外 不卡死,松手后自动恢复
新语法 输入 A->B, A<-B 正常解析为有向边
非法权重 输入 A-"abc"->B 行号报错
尾部检查 输入 my-node---B 报错提示引号
便携版 解压即用 功能完整,MANUAL.html 可打开

修改文件

CMakeLists.txt              # 版本 1.2.2
include/GraphParser.h       # 文档注释更新为严格边语法
src/GraphParser.cpp         # 6 阶段 x-W-y 解析 + 尾部校验 + needsQuoting 扩展
src/gui/GraphWidget.cpp     # 排除变换重载 + 全局对齐 + paintEvent 冻结变换
README.md                   # 输入格式/解析器/错误拒绝表更新
docs/MANUAL.html            # 输入格式/错误拒绝表更新
.gitignore                  # 新增 dist/
CLAUDE.md                   # 发布流程精简至 CLAUDE.local.md

系统要求

  • Windows 10/11 (64-bit)
  • 无需安装 Qt — Portable 版解压即用

技术栈

C++17 · Qt 6 (Widgets + Network) · CMake · MinGW-w64 · GitHub Releases API