mirror of
https://github.com/storytold/photocraft.git
synced 2026-10-27 03:17:05 -06:00
* Shapes: a hairline vector stroke no longer darkens the shape's edge pixels A stroked shape with layer effects (or clipped layers) is drawn as our fill plus a vector stroke fitted to Photoshop's own pixels: where those pixels reach past our fill, the stroke takes the alpha the fill doesn't explain, `(pixels - fill) / (1 - fill)`. It kept our stroke's colour for that alpha. When Photoshop's fill covers more of an edge pixel than ours (shapes snapped to whole pixels with Align Edges, our path a fraction off the grid), the fitted alpha is mostly Photoshop's fill, so a 0.25 px grey border on a white card was painted as a solid grey line: the edge came out at the stroke's full colour (122) instead of Photoshop's 220. The fitted stroke now takes the colour that, drawn Normal over our fill, gives back Photoshop's pixel (un-compositing the premultiplied colour), and keeps our colour only where the fitted alpha is negligible. Where Photoshop's pixels agree with our fill this is our stroke's colour, as before. Test: hairline_vector_stroke_keeps_photoshops_edge_pixel_colour (edge pixel 0.478 before, 0.86 after). The compose, gpu, io and engine tests and the psd/io/engine corpus tests pass. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * Shapes: neutral wording in the hairline-stroke fix; test it at 8, 16 and 32 bits Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> --------- Co-authored-by: EthanSuquet <292885762+EthanSuquet@users.noreply.github.com> Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com> Co-authored-by: Brandon Thomas <echelon@gmail.com> Co-authored-by: Tanish Manku <tmanku.dev@gmail.com>