<div class="gmail_quote">On Wed, Sep 2, 2009 at 10:14 PM, Dmitry Kazakov <span dir="ltr">&lt;<a href="mailto:dimula73@gmail.com" target="_blank">dimula73@gmail.com</a>&gt;</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&#39;re sure your tools will perform the same way.<br>
Another advantage is that you can drag&amp;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&#39;s is more<br>
logical to put a built-in transparency mask in other layer types.<br></blockquote></div><div><br>I can&#39;t remember any &quot;built-in transparency&quot; on paint layers. Do you mean 1-100%?<br></div></div></blockquote>




<div><br>The alpha channel is different than a mask. It wouldn&#39;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&#39;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&#39;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! &quot;A well-known graphic editor&quot; doesn&#39;t have any masks other than Transparency masks! (don&#39;t speak about selections)<br>





<br>In Krita we have special masks like filter-masks that can&#39;t have a child. This means they can&#39;t have any transp. mask as a child. That&#39;s why they workaround it with a selection. Adj. layers needn&#39;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&#39;t take more space in the layer docker.<br></blockquote></div><div><br>That&#39;s a good solution too, but krita&#39;s paradigm says that a layer can have infinite number of masks. Even if all of them are Transp. masks. I don&#39;t know how to resolve this.<br>





 </div></div></blockquote><div><br>There a big differences between Krita and the &quot;well-known graphic editor&quot;. I have to admit that had to look through a few tutorials and wasn&#39;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&#39;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&#39;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&#39;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&#39;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&#39;t look into that recently. <br> </div></div><br>