显示新建图形边界点并验证中空画笔
- 让多边形、矩形和圆创建完成后即使仍处于创建工具,也显示已选 mask 的边界顶点。 - 保持创建工具下的边界点为只读提示,不改变继续创建新 mask 的交互。 - 补充 Canvas 回归测试,覆盖矩形、圆、多边形创建后的边界点显示。 - 补充中空画笔回归测试,验证闭合画笔区域保留 hasHoles/polygonRingCounts、evenodd 渲染和内外圈顶点显示。 - 更新 README、AGENTS、前端审计、需求冻结、设计冻结、测试计划和交互状态机文档。
This commit is contained in:
@@ -183,8 +183,8 @@
|
||||
3. 多边形工具逐次记录节点,三点后点击首节点或按 Enter 时生成闭合 polygon。
|
||||
4. Canvas 左上角根据当前工具和操作阶段显示上下文短提示;多边形提示会随已放置点数切换,明确 Enter 完成、Esc 取消和点击首节点闭合。`Esc` 和左侧工具栏“取消选中”按钮只取消当前 mask 选区、临时多边形点、矩形/圆拖拽状态、画笔/橡皮擦临时笔触和顶点选择,不删除已有 mask,也不清空右侧语义分类树的当前类别。提示会在工具或操作状态变化时出现,并在数秒后自动隐藏,避免长期遮挡底图。
|
||||
5. mask path 只在 `move`、`edit_polygon`、`area_merge` 和 `area_remove` 工具下拦截点击;绘制、画笔、橡皮擦和 AI prompt 工具点击已有 mask 时继续冒泡给 Stage。
|
||||
6. 画笔/橡皮擦尺寸保存在 Zustand 中;拖动期间只保留采样后的圆形笔触预览,鼠标松开后再用 `polygon-clipping` 计算一次几何结果,避免拖动中反复重算复杂 polygon。画笔只把本次采样笔触 union 成一个新的独立 mask,不与当前选中 mask 自动合并;橡皮擦则对当前选中 mask 执行 difference 扣除。
|
||||
7. 多边形、矩形、圆和画笔创建的新 mask 写入 `pathData`、像素 `segmentation`、`bbox`、`area` 和当前模板分类元数据,并自动写入 `selectedMaskIds` 成为当前选中 mask。若右侧没有选中具体分类,新建 mask 默认使用 `maskid: 0` 的“待分类”。
|
||||
6. 画笔/橡皮擦尺寸保存在 Zustand 中;拖动期间只保留采样后的圆形笔触预览,鼠标松开后再用 `polygon-clipping` 计算一次几何结果,避免拖动中反复重算复杂 polygon。画笔只把本次采样笔触 union 成一个新的独立 mask,不与当前选中 mask 自动合并;如果画笔笔触闭合形成中空区域,`segmentation` 保留外圈和内洞 ring,`metadata.hasHoles/polygonRingCounts` 记录 ring 分组,并使用 even-odd 渲染;橡皮擦则对当前选中 mask 执行 difference 扣除。
|
||||
7. 多边形、矩形、圆和画笔创建的新 mask 写入 `pathData`、像素 `segmentation`、`bbox`、`area` 和当前模板分类元数据,并自动写入 `selectedMaskIds` 成为当前选中 mask。若右侧没有选中具体分类,新建 mask 默认使用 `maskid: 0` 的“待分类”。创建工具仍处于激活状态时,刚创建并选中的 mask 会显示只读边界顶点;切换到 `move` 或“调整多边形”后这些顶点可拖动编辑。
|
||||
8. `addMask()`、`setMasks()`、`updateMask()`、`clearMasks()` 会维护 `maskHistory/maskFuture`。
|
||||
9. 工作区撤销/重做只保留顶栏按钮和快捷键入口,AI 页保留自己的撤销/重做按钮;工作区由 `VideoWorkspace` 在 window capture 阶段统一处理 `Ctrl/Cmd+Z`、`Ctrl/Cmd+Shift+Z` 和 `Ctrl/Cmd+Y`,快捷键判断由 `src/lib/keyboardShortcuts.ts` 同时兼容 `event.key` 与物理键码 `event.code=KeyZ/KeyY`;输入框、下拉框和可编辑文本聚焦时跳过快捷键,避免影响帧范围输入。
|
||||
|
||||
|
||||
Reference in New Issue
Block a user