Files
CheapRetouch/specs/14-brush-tool.md
jared 1049057d7d Add Ralph Wiggum agent setup and project specifications
- Add project constitution with vision, principles, and autonomy settings
- Add 15 feature specifications covering full app scope
- Configure agent entry points (AGENTS.md, CLAUDE.md)
- Add build prompt and speckit command for spec creation
- Include comprehensive .gitignore for iOS development

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-23 23:19:41 -05:00

1.3 KiB

Brush Tool

Description

Manual brush selection for fallback when automatic detection fails.

Acceptance Criteria

  • Brush tool available in toolbar
  • Brush size adjustable: 1-100px via slider
  • Brush size also adjustable via stepper (accessibility)
  • Touch draws on mask layer in real-time
  • Smooth stroke rendering (interpolate between touch points)
  • Brush preview circle follows finger
  • Erase mode toggle to remove from mask
  • Clear mask button to start over
  • Edge refinement optional: snap brush strokes to nearby edges
  • Mask preview shown in real-time as user paints
  • When done painting, user taps "Done" to proceed to inpaint
  • Pinch-to-zoom still works while brush active
  • Brush works with Apple Pencil (pressure sensitivity optional)
  • Performance: 60fps stroke rendering

Technical Notes

  • Use Core Graphics or Metal for stroke rendering
  • Interpolate touch points with quadratic curves for smoothness
  • Edge refinement uses gradient magnitude from EdgeRefinement.swift
  • Consider separate gesture recognizer for drawing vs zoom/pan

Edge Cases

  • Very fast strokes: ensure no gaps between points
  • Stroke at image edge: clamp to image bounds
  • Accidental touch: undo single stroke or clear all
  • Zoom while drawing: complete current stroke, then zoom