<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"><html><head><meta name="qrichtext" content="1" /><style type="text/css">p, li { white-space: pre-wrap; }</style></head><body style=" font-family:'DejaVu Sans'; font-size:9pt; font-weight:400; font-style:normal;">On Tuesday 08 September 2009, Dmitry Kazakov wrote:<br>
&gt; There are some more uses of alpha() reported by:<br>
&gt; fgrep 'alpha()' -R ./ |grep -v doc |grep -v svn<br>
&gt;<br>
&gt; maybe, they are not connected with it...<br>
No they are not, what I see when greping is call to QColor::alpha()<br>
<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; -qt-user-state:0;"><br></p>&gt; There is one more issue with gray8+alpha colorspace for selections.<br>
&gt; KisSelection uses<br>
&gt;<br>
&gt; quint8 defPixel = *(m_d-&gt;pixelSelection-&gt;dataManager()-&gt;defaultPixel());<br>
&gt;<br>
&gt; It assumes selection pixel to be single-byte. I think this construction is<br>
&gt; bad itself. And, alll the same, KisSelection should be changed a bit. (we<br>
&gt; have a bug connected with it somehow).<br>
<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; -qt-user-state:0;"><br></p>Yes selection pixel should be single-byte.<br>
<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; -qt-user-state:0;"><br></p>&gt; Let's define our task:<br>
&gt;<br>
&gt; We need two (say, "new") colorspaces. First will work for KisSelection to<br>
&gt; store transparency data (let's call it TransparencyColorspace (TCS)).<br>
&gt; Second - for paintOps those are going to paint on the first colorspace<br>
&gt; (let's call it TransparencyPaintOpColorspace (PCS)).<br>
&gt;<br>
&gt; What features do we need from them:<br>
&gt;<br>
&gt; First cs (TCS):<br>
&gt; - one channel (transparency), 8-bit<br>
&gt; - during any paintOp painting, it should always be assumed that TCS has<br>
&gt; alpha() set to 0. BUT alpha() of the paintOp should be taken into account.<br>
Why should it assume that alpha is set to 0 ? Otherwise, we have it, it's "GRAYU8".<br>
<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; -qt-user-state:0;"><br></p>If we have alpha == 255, we could be able to draw directly on that colorspace.<br>
<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; -qt-user-state:0;"><br></p>&gt; Second cs (PCS):<br>
&gt; - two channels (transparency + alpha mask) (8+8)-bit<br>
&gt; - ANY usual colorspace (like rgb, lab, etc) should be converted to this<br>
&gt; colorspace like to grayscale colorspace:<br>
&gt; rgb   -&gt;   transparency channel<br>
&gt; a      -&gt;   alpha channel<br>
&gt;<br>
&gt; It means that PCS colorspace can be represented by a usual grayscale8+alpha<br>
&gt; colorspace, <br>
yes.<br>
<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; -qt-user-state:0;"><br></p>&gt; but TCS should have some special rules...<br>
Which ones ?<br>
<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; -qt-user-state:0;"><br></p>&gt; Btw, is it possible to construct a one-byte colorspace, that has two<br>
&gt; channels, both are two bytes size, with alpha() ALWAYS returning 0-value?<br>
It's possible to have a colorspace whose alpha is always null. But why a second channel, then ?<br>
<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; -qt-user-state:0;"><br></p>-- <br>
Cyrille Berger</p></body></html>