Bug 318027

Summary: Apply inherit alpha layer to itself
Product: [Applications] krita Reporter: Bollebib <kwadraatnope>
Component: UsabilityAssignee: Krita Bugs <krita-bugs-null>
Status: CONFIRMED ---    
Severity: wishlist CC: ghevan, halla, tamtamy.tymona
Priority: NOR    
Version First Reported In: git master (please specify the git hash!)   
Target Milestone: ---   
Platform: Other   
OS: Other   
Latest Commit: Version Fixed/Implemented In:
Sentry Crash Report:

Description Bollebib 2013-04-08 11:46:46 UTC
Inheret alpha masks  strokes outside of a range based on opacity of the layers below in a group.

when you want to actually remove what gets masked you have to merge down the group  (losing at least 2 individual layers) while you might want to keep those .
Another way to circumvent this is to select opacity from thez mask layer,invert it and delete like this.
This is however not flawless as it doesn't work well with feathered surfaces

I suggest a an "apply what is masked" function so that the mask gets applied to the layer itself,without losing layers or having to do sometimes tricky selections.

Reproducible: Always
Comment 1 vanyossi 2013-04-25 21:33:07 UTC
I also believe this function is very much needed to work better with inherited alpha.
I suggest "Apply inherited alpha" as the menu name.
Comment 2 Halla Rempt 2013-04-26 07:07:39 UTC
Okay, I will confirm it. I haven't got a good idea on how to implement it though :-)
Comment 3 Halla Rempt 2016-01-24 11:59:01 UTC
WISHGROUP: Small Usability Fixes
Comment 4 Tiar 2024-01-28 23:32:53 UTC
It would be an equivalent of making a temporary transparency mask out of all the layers below the one we want to apply the alpha inheritance, then merging with that mask.

We need to do it one layer at a time internally due to situations like this:

- Group layer
-- Layer A, alpha inheritance turned on
-- Layer B,
-- Layer C, alpha inheritance turned on
-- Layer D.
(layer A's alpha inheritance masked area is different from layer C's, because layer A's alpha = Layer D + (C) + B's alpha).

There are two questions:
- do we expose an option to do it one layer at a time (just "apply A.I. to this layer") or to all layers inside the group (then an option for a group layer "apply A.I. to all layers inside/all child layers")?
- What do you do with group layers, file layers, clone layers etc.? Maybe we need to add an option "Convert alpha inheritance here to transparency mask" instead for those kinds of layers (then of course the paint layer could have both...)?