InvokeAI/invokeai/frontend
psychedelicious fc000214a5 feat(ui): check for transparency and clear masks if no pixel data
Mask vector data includes additive (brush, rect) shapes and subtractive (eraser) shapes. A different composite operation is used to draw a shape, depending on whether it is additive or subtractive.

This means that a mask may have vector objects, but once rendered, is _visually_ empty (fully transparent). The only way determine if a mask is visually empty is to render it and check every pixel.

When we generate and save layer metadata, these fully erased masks are still used. Generating with an empty mask is a no-op in the backend, so we want to avoid this and not pollute graphs/metadata.

Previously, we did that pixel-based when calculating the bbox, which we only did when using the move tool, and only for the selected layer.

This change introduces a simpler function to check if a mask is transparent, and if so, deletes all its objects to reset it. This allows us skip these no-op layers entirely.

This check is debounced to 300 ms, trailing edge only.
2024-05-09 07:52:52 -04:00
..
cli feat(config): add CLI arg to specify config file 2024-03-20 15:05:25 +11:00
install feat(installer): remove updater 2024-03-26 14:48:29 +11:00
web feat(ui): check for transparency and clear masks if no pixel data 2024-05-09 07:52:52 -04:00
__init__.py Run python black 2023-07-28 09:46:44 -04:00