mirror of
https://github.com/storytold/photocraft.git
synced 2026-10-24 09:57:08 -06:00
The engine already had paint.colorReplacement, but the desktop UI had no tool for it: no Tool entry, no toolbar slot, no options bar and no stroke routing, so only agents and the CLI could use it. Tool::ColorReplacement joins the Brush (B) flyout after the Mixer Brush, so B / Shift+B cycle to it and ui.set / ui.inspect name it. Its options bar has Mode, Sampling (Continuous / Once / Background Swatch), Limits, Tolerance and Anti-alias, all mapped to the command's params, with the foreground as the replacement colour. Strokes are drawn live through LiveDab, which can now preview the stroke's finishing dab, so the preview at the last move matches the commit. The command refuses a mask, channel or Quick Mask target instead of silently recolouring the layer. New icon derived from Lucide's brush; label translated in all 16 catalogs. Co-authored-by: Fabio Lussi <198260595+itrycodinganditsbad@users.noreply.github.com> Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com> Co-authored-by: Brandon Thomas <echelon@gmail.com>
20 lines
544 B
XML
20 lines
544 B
XML
<svg
|
|
xmlns="http://www.w3.org/2000/svg"
|
|
width="24"
|
|
height="24"
|
|
viewBox="0 0 24 24"
|
|
fill="none"
|
|
stroke="currentColor"
|
|
stroke-width="2"
|
|
stroke-linecap="round"
|
|
stroke-linejoin="round"
|
|
>
|
|
<path d="m11 10 3 3" />
|
|
<path d="M6.5 21A3.5 3.5 0 1 0 3 17.5a2.62 2.62 0 0 1-.708 1.792A1 1 0 0 0 3 21z" />
|
|
<path d="M9.969 17.031 21.378 5.624a1 1 0 0 0-3.002-3.002L6.967 14.031" />
|
|
<path d="M2.5 9A6 6 0 0 1 8 3" />
|
|
<path d="m6 1.5 2 1.5-2 1.5" />
|
|
<path d="M21.5 15a6 6 0 0 1-5.5 6" />
|
|
<path d="m18 19.5-2 1.5 2 1.5" />
|
|
</svg>
|