Files
AnyImage/openspec/changes/archive/2026-09-17-process-image-selection-once/tasks.md
nan 076a8c90f1 Add specifications for two-times upscale and unified depth plane features
- Introduced the two-times upscale specification detailing requirements for unified output, fixed model presets, arbitrary dimensions, and consistent job behavior.
- Added scenarios for existing models, repeated upscale, and handling of alpha preservation.
- Created the unified depth plane specification outlining geometry modes, stable interface, and asset evaluation.
- Defined scenarios for mode switching, relief and camera preservation, and validation of delivered assets.
2026-09-17 17:19:05 +08:00

2.4 KiB
Raw Blame History

1. Selection Path 共享主链

  • 1.1 整理 ImageSelectionGesture 的完成边界,使其向实际操作提交方法传递一次内存中的 SelectionPath,并用 Viewport 手势测试验证各类手势与双击全选的路径值不变
  • 1.2 删除 Image Tool 和 Cutout 圈选 Operator 的 selection_path_json Property,让 Image Tool 直接消费内存 Path,并用测试验证同一 Operator 内不发生 JSON 编解码
  • 1.3 调整 Cutout 手势与 open_shape_pie,仅在创建 Shape 按钮时调用一次 to_json(),把同一个值设置给各 CutoutSelectionToShape,用交互测试验证没有令牌或额外状态
  • 1.4 删除 Cutout Pie Menu 前的 Selection 像素验证,用 Lasso、双击与放弃菜单测试验证 Shape 选定前不读取 RGBA、不栅格化 Mask、不扫描 Alpha

2. 执行阶段单次构建 Selection

  • 2.1 将 Image Tool 实际编辑拆为显式接收 Selection Path 的业务方法,使其成为唯一 Path-to-Mask 边界,并用本地编辑与 Refine Selection 调用次数测试验证每次操作只读取和栅格化一次
  • 2.2 让 CutoutSelectionToShape.execute 直接消费 Pie Menu 传入的 Selection Path 值并成为 Cutout 唯一的 Path-to-Mask 边界,用本地与 AI Shape 测试验证每次操作只读取和栅格化一次
  • 2.3 将空 Selection 的可见性检查合并到实际执行阶段的唯一栅格化结果,用测试验证点击 Shape 后正确取消且不会启动 Job 或创建对象
  • 2.4 修改图片编辑、Selection 输入导出与 Cutout 创建 helper,要求显式接收已读取的 RGBA 和 Selection Mask,并用像素及几何测试验证不存在内部重读或重建且结果保持等价

3. 清理与验证

  • 3.1 删除 validate_cutout_selection、圈选 Operator 的 JSON Property 和 helper 的隐式重读入口,使用定向 rg 验证 to_json() / from_json() 只剩 Cutout Pie Menu 到 Shape Operator 的跨边界用途
  • 3.2 增加高分辨率尺寸的调用边界回归测试,验证菜单前读取与栅格化为零、实际 Image Tool 或 Cutout 操作为一次,且不使用机器相关的耗时阈值
  • 3.3 更新 docs/internals 中 Image Tool、Cutout 与共享 Selection 流程,人工核对流程图明确“构建 SelectionPath”与“执行阶段构建 SelectionMask”的边界
  • 3.4 运行 Image Selection、Image Tool、Cutout 交互与几何相关测试,再运行 uv run pytest,确认全部测试通过