Files
photocraft/docs/brush-parity.md
T
Brandon ThomasandClaude Opus 5.5 939c8f2c70 Progress docs: target-app parity, gaps, alpha gate, readiness by audience (#2696)
Progress docs per craftrules standards/progress-docs.md: target-app parity (merges parity-estimate.md), gaps, roadmap with alpha gate, readiness by audience (full / mainstream / essentials) with Opus 5.5 hours, and UI, brush, format, hardware and localization parity docs. docs/parity.md is now docs/parity-checklist.md.

The Windows test failure (file_dialog::tests::save_dialogs_remember_where_each_document_was_last_saved) is pre-existing on main: the test hard-codes POSIX paths.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-10 15:09:04 -04:00

6.3 KiB
Raw Blame History

Brush and painting parity

Last reviewed: 2026-10-10 · Last updated: 2026-10-10 · Change: major (first version: brush engine, dynamics, pressure, smoothing, cursors, retouch tools and feel audited from source and open issues) · Target: Adobe Photoshop 2026

Painting is where Photoshop users notice differences first, so it gets its own checklist: the brush engine (crates/paint/src/brush.rs), the Brush Settings UI (crates/ui-egui/src/brush_sections.rs), the live stroke renderer, pen input (hardware-parity.md), and the brush-based tools. Status words as in ui-parity.md.

Summary (estimated): breadth ~90% (every Brush Settings section and option exists), ready for real work ~55%. The engine models what Photoshop models; the gaps are feel (latency, pressure response, edge quality, smoothing), a few missing options, and live previews for retouch tools. Remaining: 100–180 h (gap G4 in gaps.md). Human: feel must be checked on real tablets against Photoshop side by side.

Brush Settings sections

Section Status Evidence
Brush Tip Shape: size, angle, roundness, hardness, spacing, flip X/Y done brush.rs
Shape Dynamics (size/angle/roundness jitter, pen pressure/tilt/rotation/wheel controls, minimums, flip jitter, brush projection) done #174
Scattering (both axes, count, count jitter) done
Texture (pattern, scale, brightness, contrast, mode, depth, each tip) done
Dual Brush done
Color Dynamics (FG/BG, hue/sat/brightness jitter, purity, per tip) done
Transfer (opacity/flow/wetness/mix jitter and controls) done
Brush Pose (tilt, rotation, pressure overrides) done
Noise, Wet Edges, Build-up, Protect Texture done
Smoothing: amount, Pulled String, Stroke Catch-up, Catch-up on End, Adjust for Zoom done brush.rs:428-438
Section locks done #174
Brush tip from an image file missing TOOL-213-12
Erodible, Airbrush and Bristle tips (Photoshop's special tips) partial not audited in detail; "3D-based brushes don't work" (#1660)
Anti-aliasing off for brushes missing #1666 (Pencil is the aliased path)

Pressure and pen

Behaviour Status Evidence
Pressure drives size/opacity/flow per sample (no shared pressure within a frame) done #2112
Global pressure curve in Preferences done #2195
Per-control pressure curves missing TOOL-213-11
Quick taps keep their pressure partial #1967 fixed one case; tap paints a full blob (#1798), tap sensitivity (#1933)
Smooth pressure on Windows partial "jumpy" (#2046)
Tilt and rotation drive angle/roundness partial macOS, X11, web; not Windows; rotation not applied (#1301)
Eraser end of the pen switches to Eraser partial macOS; flipped Wacom on Windows not (#2285)

Stroke quality and feel

Behaviour Status Evidence
No seams, hard edges stay hard, zero-scatter defaults, ABR tips never black done TOOL-213-13
Smooth line weight along a pressure ramp partial stair-steps (#1776)
Interpolation and smoothing match Photoshop partial #2138, #2057
Soft-edge falloff matches Photoshop's curve partial #2149, #1619
Brush preview and cursor crisp, not pixelated partial #1433
Cursor outline equals the painted footprint at every zoom partial #1761, #2364
Latency: dab to screen within a frame partial budgets P13/P16/P33 over (scorecard); big-brush lag #2619, #1994; cursor lag #2566, #1343
No hitch at mouse-up on a long stroke not measurable P32 needs a frame harness
Live stroke for Brush and Eraser done
Live stroke for every brush-based retouch tool missing TOOL-213-7
No OS arrow cursor over the canvas with a pen partial TOOL-213-14

Gestures and cursors

Behaviour Status Evidence
⌃⌥-drag (macOS) / Alt+right-drag (Windows) resizes and changes hardness with a readout done TOOL-213-10
[ ] size, ⇧[ ⇧] hardness, number keys opacity, ⇧+numbers flow done 2026-10-07
⌥-click samples a colour with painting tools; Eyedropper comparison ring done TOOL-213-9
⇧-click draws a straight line from the last point done
Right-click opens the Brush Preset picker done context-menu-parity.md; XP-Pen right-click not (#1980), macOS issue #2360
Precise / normal / full-size tip cursors, crosshair in the tip partial Caps Lock precise cursor not audited; round Pencil cursor requested (#2662, #1057)
Brush choice kept per tool (Brush, Eraser, Blur each their own) partial #2542

Symmetry

Mode Status
Vertical, Horizontal, Dual axis, Diagonal done
From a path (Make Symmetry Path) done
Wavy, Circle, Spiral, Parallel Lines, Radial, Mandala missing (#2659)

Brush-based tools

Tool Status Notes
Brush, Pencil (aliased, Auto Erase), Eraser (Brush/Pencil/Block) done Pencil 1 px quality #2139
Mixer Brush (Wet, Load, Mix, Flow, Sample All Layers) partial "incomplete" (#2247)
Clone Stamp (opacity, flow, aligned, sample, overlay) partial Clone Source W/H link and Alt target cursor (TOOL-213-8)
Pattern Stamp (aligned, impressionist) done
History Brush done Art History Brush missing
Spot Healing, Healing partial grain not matched on flat colour (#2104), "horrible in general" (#1092), stops responding after switching (#1751)
Blur, Sharpen, Smudge (premultiplied, Sample All Layers, spacing) done BUG-207-2/3, #2171
Dodge, Burn, Sponge done
Background Eraser, Magic Eraser done
Color Replacement missing as a tool engine command exists
Quick Selection (brush-driven) done

Presets

Behaviour Status Evidence
.abr import (v1/v2/v6) and export, persistent presets, folders done psd/src/abr.rs
Brushes panel: drag a folder into a folder missing #2014
Tool presets (.tpl) partial Tool Presets panel exists; .tpl import not found
Import 500 brushes without blocking the UI not run P24

Revision history

Date Change Summary
2026-10-10 major First version, from a source audit and the open issues