[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-kimageshop
Subject:    Re: Tool overlay and cursor shapes
From:       "LukasT.dev () gmail ! com" <lukast ! dev () gmail ! com>
Date:       2009-09-17 22:19:53
Message-ID: 200909180019.53611.LukasT.dev () gmail ! com
[Download RAW message or body]

[Attachment #2 (multipart/alternative)]


On Wednesday 16 September 2009 19:07:07 enki wrote:
> > This patch is already in trunk for week or so. Any response?
> > I prefer XOR and B&W solution. Maybe also black outline and current color
> > inside, but this will require to change paintop's settings object so that
> > every change of the color is known to settings object.
> 
> 1.XOR is the one I like the most, it looks good and is precise in any case.
> 2.Color outline looks much better than I though, but there are still
> cases where it cause problems.When outline is the only cursor type:
> - you can lose your cursor on big surfaces of the same color (it's not
> good to be an adept of Fauvism these days :p).
> - it's harder to extend that big surface (for example, adding an
> irregular 3 pixels border around it).
> 3.B&W is the one I like the less. It doesn't look like it is an overlay,
> probably because the outside line is not transparent enough.
> 

We discussed the XOR solution wins as temporary solution for 2.1.
XOR has hidden problem but it is solved when XORing rgb channel with 0x80 . 
This is the solution that GIMP uses. 

Anyway I had mission to add setupQPainter method to the KisTool but I changed 
it.

setupQPainter is not enough if we want to change the outline in the future.
I wrote method paintToolOutline which takes painter, path and mode as 
argument.

So this method can paint twice -- I added also mode B&W and this mode
needs to paint also. Just setup the painter is not enough I think.

Known issues with patch:
Composition mode is RasterOp_SourceXorDestination which disables anti-
aliasing. So the path is not anti-aliased.

I added also BW_MODE. It has different problem. It uses 3px wide line so the 
update rect for canvas has different size then just 1px wide line and is not 
updated correctly for now.

I did the previous b&w patch wrong, I painted two 3px wide lines in the same 
place. Now I do it correctly and it looks nicer. 

Check it out. Just change line paintToolOutline(&gc,path); to 
paintToolOutline(&gc,path,BW_MODE);

So can I start to patch the svn?

[1] http://lukast.mediablog.sk/patches/0001-Tool-outline-with-
RasterOp_XOR.patch

[Attachment #5 (text/html)]

<!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:'Sans Serif'; font-size:10pt; \
font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; \
margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; \
-qt-user-state:0;">On Wednesday 16 September 2009 19:07:07 enki wrote:</p> <p style=" \
margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; \
-qt-block-indent:0; text-indent:0px; -qt-user-state:0;">&gt; &gt; This patch is \
already in trunk for week or so. Any response?</p> <p style=" margin-top:0px; \
margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; \
text-indent:0px; -qt-user-state:0;">&gt; &gt; I prefer XOR and B&amp;W solution. \
Maybe also black outline and current color</p> <p style=" margin-top:0px; \
margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; \
text-indent:0px; -qt-user-state:0;">&gt; &gt; inside, but this will require to change \
paintop's settings object so that</p> <p style=" margin-top:0px; margin-bottom:0px; \
margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; \
-qt-user-state:0;">&gt; &gt; every change of the color is known to settings \
object.</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; \
margin-right:0px; -qt-block-indent:0; text-indent:0px; -qt-user-state:0;">&gt; </p> \
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; \
-qt-block-indent:0; text-indent:0px; -qt-user-state:0;">&gt; 1.XOR is the one I like \
the most, it looks good and is precise in any case.</p> <p style=" margin-top:0px; \
margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; \
text-indent:0px; -qt-user-state:0;">&gt; 2.Color outline looks much better than I \
though, but there are still</p> <p style=" margin-top:0px; margin-bottom:0px; \
margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; \
-qt-user-state:0;">&gt; cases where it cause problems.When outline is the only cursor \
type:</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; \
margin-right:0px; -qt-block-indent:0; text-indent:0px; -qt-user-state:0;">&gt; - you \
can lose your cursor on big surfaces of the same color (it's not</p> <p style=" \
margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; \
-qt-block-indent:0; text-indent:0px; -qt-user-state:0;">&gt; good to be an adept of \
Fauvism these days :p).</p> <p style=" margin-top:0px; margin-bottom:0px; \
margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; \
-qt-user-state:0;">&gt; - it's harder to extend that big surface (for example, adding \
an</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; \
margin-right:0px; -qt-block-indent:0; text-indent:0px; -qt-user-state:0;">&gt; \
irregular 3 pixels border around it).</p> <p style=" margin-top:0px; \
margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; \
text-indent:0px; -qt-user-state:0;">&gt; 3.B&amp;W is the one I like the less. It \
doesn't look like it is an overlay,</p> <p style=" margin-top:0px; margin-bottom:0px; \
margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; \
-qt-user-state:0;">&gt; probably because the outside line is not transparent \
enough.</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; \
margin-right:0px; -qt-block-indent:0; text-indent:0px; -qt-user-state:0;">&gt; </p> \
<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;"></p> <p style=" margin-top:0px; margin-bottom:0px; \
margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; \
-qt-user-state:0;">We discussed the XOR solution wins as temporary solution for \
2.1.</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; \
margin-right:0px; -qt-block-indent:0; text-indent:0px; -qt-user-state:0;">XOR has \
hidden problem but it is solved when XORing rgb channel with 0x80 . This is the \
solution that GIMP uses. </p> <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;"></p> <p style=" margin-top:0px; \
margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; \
text-indent:0px; -qt-user-state:0;">Anyway I had mission to add setupQPainter method \
to the KisTool but I changed it.</p> <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;"></p> <p style=" \
margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; \
-qt-block-indent:0; text-indent:0px; -qt-user-state:0;">setupQPainter is not enough \
if we want to change the outline in the future.</p> <p style=" margin-top:0px; \
margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; \
text-indent:0px; -qt-user-state:0;">I wrote method paintToolOutline which takes \
painter, path and mode as argument.</p> <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;"></p> <p style=" \
margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; \
-qt-block-indent:0; text-indent:0px; -qt-user-state:0;">So this method can paint \
twice -- I added also mode B&amp;W and this mode</p> <p style=" margin-top:0px; \
margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; \
text-indent:0px; -qt-user-state:0;">needs to paint also. Just setup the painter is \
not enough I think.</p> <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;"></p> <p style=" margin-top:0px; \
margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; \
text-indent:0px; -qt-user-state:0;">Known issues with patch:</p> <p style=" \
margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; \
-qt-block-indent:0; text-indent:0px; -qt-user-state:0;">Composition mode is <span \
style=" font-family:'Courier New,courier';">RasterOp_SourceXorDestination</span> \
which disables anti-aliasing. So the path is not anti-aliased.</p> <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;"></p> <p \
style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; \
-qt-block-indent:0; text-indent:0px; -qt-user-state:0;">I added also BW_MODE. It has \
different problem. It uses 3px wide line so the update rect for canvas has different \
size then just 1px wide line and is not updated correctly for now.</p> <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;"></p> <p \
style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; \
-qt-block-indent:0; text-indent:0px; -qt-user-state:0;">I did the previous b&amp;w \
patch wrong, I painted two 3px wide lines in the same place. Now I do it correctly \
and it looks nicer. </p> <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;"></p> <p style=" margin-top:0px; \
margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; \
text-indent:0px; -qt-user-state:0;">Check it out. Just change line \
paintToolOutline(&amp;gc,path); to paintToolOutline(&amp;gc,path,BW_MODE);</p> <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;"></p> <p \
style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; \
-qt-block-indent:0; text-indent:0px; -qt-user-state:0;">So can I start to patch the \
svn?</p> <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;"></p> <p style=" margin-top:0px; margin-bottom:0px; \
margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; \
-qt-user-state:0;">[1] \
http://lukast.mediablog.sk/patches/0001-Tool-outline-with-RasterOp_XOR.patch</p></body></html>




_______________________________________________
kimageshop mailing list
kimageshop@kde.org
https://mail.kde.org/mailman/listinfo/kimageshop


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic