<div class="gmail_quote">On Wed, Sep 2, 2009 at 10:14 PM, Dmitry Kazakov <span dir="ltr"><<a href="mailto:dimula73@gmail.com" target="_blank">dimula73@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
<div class="gmail_quote"><div><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
- Having a separated mask explicitely shows that you can change the<br>
transparency and you're sure your tools will perform the same way.<br>
Another advantage is that you can drag&drop/copy the mask to another<br>
layer easily. When the mask is deleted, the filter layer would be<br>
applied on the whole image.<br></blockquote></div><div><br>Yes, explicit mask is better, BUT see above and below<br> </div><div><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
- But we can also see things the others way around: Paint layers and<br>
Shape layers have built-in transparency too. So maybe it's is more<br>
logical to put a built-in transparency mask in other layer types.<br></blockquote></div><div><br>I can't remember any "built-in transparency" on paint layers. Do you mean 1-100%?<br></div></div></blockquote>
<div><br>The alpha channel is different than a mask. It wouldn't make sense if brush would have to draw on layer an mask at same time to get a half transparent color.<br><br></div><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
<div class="gmail_quote"><div></div><div><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
The problem with filter layers is that selections are used as data AND<br>
as a filter for other tools. For example:<br></blockquote></div><div><br>Yes, double use of selections is not that good.<br></div></div></blockquote><div><br>There isn't much difference between a mask and a selection technically. There are some UI problems though.<br>
</div><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;"><div class="gmail_quote"><div> </div><div><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
There is 4 ways to display a mask: <br></blockquote><div> </div></div><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
- as a colored overlay.<br></blockquote><div><br>Sven said we had that one day, but now it simply doesn't work.<br></div></div></blockquote><div><br>Well it works somehow for selection, you can set m_mode(Ants) to m_mode(Mask) in KisSelectionDecoration.<br>
The big disadvatage outside of the other projections and needs a QImage with the same size as the image, which is of course no solution for really big images.<br> </div><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
<div class="gmail_quote"><div></div><div><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
Again, here is the behavior of a well-known graphic editor ;P :<br></blockquote></div><div><br>Well, that is the problem! "A well-known graphic editor" doesn't have any masks other than Transparency masks! (don't speak about selections)<br>
<br>In Krita we have special masks like filter-masks that can't have a child. This means they can't have any transp. mask as a child. That's why they workaround it with a selection. Adj. layers needn't these selections really, but they use to be uniform with masks.<br>
<br> </div></div></blockquote><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;"><div class="gmail_quote"><div></div><div>
<blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
- Masks are shown on the same line than their parent layer, so it<br>
doesn't take more space in the layer docker.<br></blockquote></div><div><br>That's a good solution too, but krita's paradigm says that a layer can have infinite number of masks. Even if all of them are Transp. masks. I don't know how to resolve this.<br>
</div></div></blockquote><div><br>There a big differences between Krita and the "well-known graphic editor". I have to admit that had to look through a few tutorials and wasn't aware how they solved it.<br>
<br>In Krita you can have masks and layers in the layer stack. While in Gimp/Photoshop you have the mask directly on the layer.<br>This design means for Krita is you can apply an infinite number of transparency or filter layers to a layer.<br>
<br>As far as I can see does Photoshop solve this completely different. They only have adjustment layers, but these can be applied to layer so that they work just like filter masks.<br>Something that I especially like is that you don't need a seperate mask menu to move masks.<br>
<br>I have to admit that doing it that way looks cleaner, but I don't see any way to go there from the current system in Krita. I would be tempted to give such a system a try, if it wouldn't mean such a big rewrite and break.<br>
</div><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;"><div class="gmail_quote"><div></div><div><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
Now to resume my thinking :<br>
- All masks must behave the same way, even if built-in a special layer type.<br>
- The current filter layer built-in mask is almost unusable :/.<br></blockquote></div><div>I'm working on this.</div></div></blockquote><div><br>Just curious. How are you going to solve that?<br> </div><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
<div class="gmail_quote"><div> </div><div><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
- Selections should not be allowed to paint/erase pixel directly.<br>
- Mask data and display of that data should be independant.<br></blockquote><div></div><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
- The user should be able to switch easily between display mode<br>
(selection/transparency/...).<br></blockquote></div><div>Agree. Sven knows where to fix it in overlay subsys. (right, Sven? ;) ) <br></div></div></blockquote><div>I didn't look into that recently. <br> </div></div><br>