mirror of
https://github.com/storytold/photocraft.git
synced 2026-11-10 12:22:22 +00:00
* fix: brush hints keep a feathered mask's ring and the effects' reach (#9329) A command's damage hint (the bare dab) was intersected with the edit's own damage, which `tile_damage` had grown by the mask's feather and the layer's and enclosing groups' effects. The intersection cut that growth off, so painting on a feathered layer mask left a stale soft ring around each dab, and a dab's drop shadow was outside the reported damage. `hint_damage` now grows the hint by the same rule first (`grow_hint`, sharing `grow_in_layer` and `effects_reach` with `tile_damage` and the group walk). The hint is still checked against the changed tiles as is. The group-shadow test now cuts a hole at a tile's right edge, so its shadow crosses into the next tile (it passed without the group's growth before), and the clip-base test gains a dab at a tile edge. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * fix: brush hints skip the effects of layers that aren't drawn (#9329) `grow_hint` grew a dab by the effects of every layer in the document, hidden ones included, so a large drop shadow on a hidden layer widened every `paint.stroke` dab elsewhere to all the tiles `step_damage` reported, and each dab recomposited and uploaded that much. It now skips layers the compositor skips, by the same rule as `effect_layers`: a hidden layer, a clipped layer over a hidden base, and everything inside a hidden group. A change there shows nowhere, and every drawn layer still grows the hint as before. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * test: the group-shadow brush test goes through the hint (#9329) `a_dab_inside_a_group_with_a_drop_shadow_damages_the_shadow` painted with a plain `Session::edit`, so its damage came from `step_damage` and never exercised `grow_hint`. It now paints with `paint.stroke`, and the child carries a shadow of its own inside the shadowed group: the group's shadow of the child's shadow lands past either shadow's reach alone, in the next tile, so dropping the enclosing groups' reach from `grow_hint` fails it. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Co-authored-by: FredApps <153173854+FredApps@users.noreply.github.com> Co-authored-by: FredApps <FredApps@users.noreply.github.com>